基于FGA的低頻數(shù)字相位測量儀_第1頁
基于FGA的低頻數(shù)字相位測量儀_第2頁
基于FGA的低頻數(shù)字相位測量儀_第3頁
基于FGA的低頻數(shù)字相位測量儀_第4頁
基于FGA的低頻數(shù)字相位測量儀_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第15章低頻數(shù)字相位測量儀的

設(shè)計與分析15.1系統(tǒng)設(shè)計要求15.2系統(tǒng)設(shè)計方案15.3主要VHDL源程序和匯編語言程序15.4系統(tǒng)仿真/硬件驗證15.5設(shè)計技巧分析15.6系統(tǒng)擴展思路15.1系統(tǒng)設(shè)計要求設(shè)計并制作一個低頻數(shù)字相位測量儀,其設(shè)計要求如下:(1)頻率范圍:20Hz~20kHz。(2)相位測量儀的輸入阻抗≥100kΩ。(3)允許兩路輸入正弦信號峰-峰值可分別在1~5V范圍內(nèi)變化。(4)相位測量絕對誤差≤2。(5)具有頻率測量及數(shù)字顯示功能。(6)相位差數(shù)字顯示:相位讀數(shù)為0~359.9,分辨力為0.1。15.2系統(tǒng)設(shè)計方案15.2.1總體設(shè)計方案根據(jù)系統(tǒng)的設(shè)計要求,本系統(tǒng)可分為三大基本組成部分:數(shù)據(jù)采集電路、數(shù)據(jù)運算控制電路和數(shù)據(jù)顯示電路??紤]到FPGA/CPLD具有集成度高,I/O資源豐富,穩(wěn)定可靠,可現(xiàn)場在線編程等優(yōu)點,而單片機具有很好的人機接口和運算控制功能,本系統(tǒng)擬用FPGA/CPLD和單片機相結(jié)合,構(gòu)成整個系統(tǒng)的測控主體。圖15.1系統(tǒng)原理框圖15.2.2信號整形電路的設(shè)計最簡單的信號整形電路就是一個單門限電壓比較器(如圖15.2所示),當(dāng)輸入信號每通過一次零時觸發(fā)器的輸出就要產(chǎn)生一次突然的變化。當(dāng)輸入正弦波時,每過一次零,比較器的輸出端將產(chǎn)生一次電壓跳變,它的正負(fù)向幅度均受到供電電源的限制,因此輸出電壓波形是具有正負(fù)極性的方波,這樣就完成了電壓波形的整形工作。圖15.2采用單門限觸發(fā)器的整形電路為了避免過零點多次觸發(fā)的現(xiàn)象,我們使用施密特觸發(fā)器組成的整形電路。施密特觸發(fā)器在單門限電壓比較器的基礎(chǔ)上引入了正反饋網(wǎng)絡(luò)。由于正反饋的作用,它的門限電壓隨著輸出電壓Uo的變化而改變,因此提高了抗干擾能力。本系統(tǒng)中我們使用兩個施密特觸發(fā)器對兩路信號進(jìn)行整形,電路圖如圖15.3所示。圖15.3采用施密特觸發(fā)器的整形電路15.2.3FPGA數(shù)據(jù)采集電路的設(shè)計FPGA數(shù)據(jù)采集電路的功能就是實現(xiàn)將待測正弦信號的周期、相位差轉(zhuǎn)變?yōu)?9位的數(shù)字量。FPGA數(shù)據(jù)采集的硬件電路我們可采用FPGA下載板來實現(xiàn),該下載板包含F(xiàn)PGA芯片、下載電路和配置存儲器,其電路結(jié)構(gòu)可參見對應(yīng)的FPGA下載板說明書。本電路主要是進(jìn)行FPGA的硬件描述語言(HDL)程序設(shè)計。根據(jù)系統(tǒng)的總體設(shè)計方案,F(xiàn)PGA數(shù)據(jù)采集電路的輸入信號有:CLK——系統(tǒng)工作用時鐘信號輸入端;CLKAA,CLKBB——兩路被測信號輸入端;EN——單片機發(fā)出的傳送數(shù)據(jù)使能信號,在EN的上升沿,F(xiàn)PGA向單片機傳送數(shù)據(jù);RSEL——單片機發(fā)出的傳送數(shù)據(jù)類型信號,當(dāng)RSEL=0時,F(xiàn)PGA向單片機傳送被測信號頻率數(shù)據(jù),當(dāng)RSEL=1時,F(xiàn)PGA向單片機傳送被測信號相位差數(shù)據(jù)。FPGA數(shù)據(jù)采集電路的輸出信號有:DATA[18..0]——FPGA到單片機的數(shù)據(jù)輸出口,由輸出控制信號EN和RSEL控制。本數(shù)字式相位測量儀的要求是測試并顯示輸入信號頻率范圍在20Hz~20kHz,測試并顯示信號a、b的相位差,相位差的變化范圍為0~359.9,相位差的顯示分辨力為0.1°,要求測量相位的絕對誤差≤2。由此可知:圖15.4FPGA數(shù)據(jù)采集電路系統(tǒng)組成框圖15.2.4單片機數(shù)據(jù)運算控制電路的設(shè)計單片機數(shù)據(jù)運算控制電路的功能就是負(fù)責(zé)讀取FPGA/CPLD采集到的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)計算待測正弦信號的頻率及兩路同頻正弦信號之間的相位差,同時通過功能鍵切換,顯示出待測信號的頻率和相位差。單片機數(shù)據(jù)運算控制電路的硬件可由單片機、晶振電路、按鍵及顯示接口電路等組成。我們在設(shè)計中考慮到,單片機具有較強的運算能力和控制能力的特點,因此使用單片機的P0口,P2口及P1.0、P1.1、P1.2、P1.3接收FPGA送來的對應(yīng)于正弦信號的周期、相位差的19位數(shù)據(jù)信號,P1口的P1.7、P1.6接入兩個輕觸按鍵,完成功能選擇與設(shè)置。該電路的工作原理是,單片機通過向FPGA發(fā)送數(shù)據(jù)傳送指令,使FPGA按照單片機的要求發(fā)送數(shù)據(jù),同時通過使用單片機的串口,將待顯示的數(shù)據(jù)信息送給數(shù)據(jù)顯示電路顯示。其原理圖如圖15.5所示。圖15.5單片機系統(tǒng)原理圖單片機數(shù)據(jù)運算控制電路的軟件設(shè)計思路是,單片機不斷地從FPGA讀取信號的周期和a、b信號相位差所對應(yīng)的時間差,讀取數(shù)據(jù)后進(jìn)行有關(guān)計算,并通過轉(zhuǎn)換后,送出給顯示模塊,實現(xiàn)頻率和相位差的顯示。單片機主程序流程圖如圖15.6所示。單片機在獲取FPGA的數(shù)據(jù)時,開始的是一般的讀取指令MOV指令,分別從單片機的P0口、P2口、P1口的低3位讀入數(shù)據(jù),組合為一個19位的二進(jìn)制數(shù)據(jù),通過控制口線P1.3、P1.5控制FPGA釋放數(shù)據(jù)。經(jīng)過多次測試,采用這種方式獲得了比較好的效果。單片機讀取FPGA數(shù)據(jù)的程序流程圖如圖15.7所示。圖15.6主程序流程圖圖15.7讀FPGA數(shù)據(jù)程序流程圖單片機從FPGA讀取信息后,對信息進(jìn)行計算,算出信號a的頻率,其流程圖如圖15.8所示。由于a、b信號是兩路頻率相同、相位不同的正弦波信號,因此經(jīng)過整形電路后形成頻率相同,時間上不重合的兩路信號,這樣,F(xiàn)PGA可以計數(shù)出兩路信號的時間差從而可以計算出a、b信號的相位差,其程序流程圖如圖15.9所示。圖15.8計算a的頻率程序流程圖圖15.9計算a、b相位差的程序流程圖最后單片機需要將信號送到輸出端顯示出來,即單片機通過顯示子程序?qū)⑿畔⑺偷斤@示電路顯示出來,程序流程圖如圖15.10所示。圖15.10顯示程序流程圖15.2.5數(shù)據(jù)顯示電路的設(shè)計整個系統(tǒng)硬件電路中,單片機MCU與FPGA進(jìn)行數(shù)據(jù)交換占用了P0口、P1口和P3口,因此數(shù)據(jù)顯示電路的設(shè)計采用靜態(tài)顯示的方式,顯示電路由8個共陽極七段數(shù)碼管和8片1位串入8位并出的74LS164芯片組成。這種顯示方式不僅可以得到較為簡單的硬件電路,而且可以得到穩(wěn)定的數(shù)據(jù)輸出;這種連接方式不僅占用單片機端口少,而且充分利用了單片機的資源,容易掌握其編碼規(guī)律,簡化了軟件編程,在實驗過程中,也體現(xiàn)出較高的可靠性。數(shù)據(jù)顯示電路如圖15.11所示。圖15.11數(shù)據(jù)顯示電路74LS164是一種8位高速串入/并出的移位寄存器,隨著時鐘信號的高低變化,串行數(shù)據(jù)通過一個2輸入與門同步的送入,使用獨立于時鐘的主控復(fù)位端讓寄存器的輸出端變?yōu)榈碗娖?,并且采用肖特基鉗位電路以達(dá)到高速運行的目的。并且還具有以下的特點:①典型的35MHz移位頻率;②異步主控復(fù)位;③門控串行輸入;④同步數(shù)據(jù)傳輸;⑤采用鉗位二極管限制高速的終端;⑥靜電放電值大于3500V。在本系統(tǒng)中,74LS164的連接方式為:74LS164的輸出Q0~Q7分別接LED數(shù)碼管的dp、g、f、e、d、c、b、a,并且Q7連接下一個74LS164的A、B端,時鐘CLK連接單片機的TXD端,第一片芯片的AB端連接單片機的RXD端,74LS164芯片的主控復(fù)位端接高電平VCC。在這種狀態(tài)下,數(shù)碼管的編碼如表15.1所示。表15.1數(shù)碼管的編碼表15.3主要VHDL源程序和匯編語言程序15.3.1FPGA的VHDL源程序清單--SZXWY﹒VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSZXWYISPORT(CLK:INSTD_LOGIC;CLKAA:INSTD_LOGIC;CLKBB:INSTD_LOGIC;EN,RSEL:INSTD_LOGIC;CLKAC,CLKBC:OUTSTD_LOGIC; --仿真觀測輸出點,調(diào)試好后應(yīng)去掉,以下同CLKFC:OUTSTD_LOGIC; --仿真觀測輸出用DATAAC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測輸出用DATABC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測輸出用CLAC,CLBC:OUTSTD_LOGIC; --仿真觀測輸出用DAC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測輸出用CLRAC:OUTSTD_LOGIC;--仿真觀測輸出用ENAC:OUTSTD_LOGIC; --仿真觀測輸出用LOADAC:OUTSTD_LOGIC;--仿真觀測輸出用DATA:OUTSTD_LOGIC_VECTOR(18DOWNTO0));ENDENTITYSZXWY;ARCHITECTUREARTOFSZXWYISSIGNALCLKF:STD_LOGIC;SIGNALDATAA:STD_LOGIC_VECTOR(18DOWNTO0);SIGNALDATAB:STD_LOGIC_VECTOR(18DOWNTO0);SIGNALCLB:STD_LOGIC;SIGNALDA:STD_LOGIC_VECTOR(18DOWNTO0);SIGNALCLRA:STD_LOGIC;SIGNALENA:STD_LOGIC;SIGNALLOADA:STD_LOGIC;BEGIN--信號分頻模塊FPQ:BLOCKISBEGINPROCESS(CLK)ISVARIABLETEMP:INTEGERRANGE0TO4;VARIABLECL:STD_LOGIC;BEGINIFRISING_EDGE(CLK)THENIFTEMP=3THENTEMP:=0;CL:='1';ELSETEMP:=TEMP+1;CL:='0';ENDIF;ENDIF;CLKF<=CL;CLKFC<=CLKF; --仿真觀測輸出用ENDPROCESS;ENDBLOCKFPQ;--控制信號產(chǎn)生模塊KZXH:BLOCKISSIGNALCLKA,CLKB:STD_LOGIC;SIGNALCLA:STD_LOGIC;BEGINCLKA<=NOTCLKAA;CLKB<=NOTCLKBB;CLKAC<=CLKA; --仿真觀測輸出用CLKBC<=CLKB; --仿真觀測輸出用PROCESS(CLKA)ISBEGINIFRISING_EDGE(CLKA)THENCLA<=NOTCLA;ENDIF;ENA<=CLA;LOADA<=NOTCLA;CLAC<=CLA; --仿真觀測輸出用ENAC<=ENA; --仿真觀測輸出用LOADAC<=LOADA; --仿真觀測輸出用ENDPROCESS;PROCESS(CLKB)ISBEGINIFRISING_EDGE(CLKB)THENCLB<=NOTCLB;ENDIF;CLBC<=CLB; --仿真觀測輸出用ENDPROCESS;PROCESS(CLKA,CLA)ISBEGINIFCLKA='0'ANDCLA='0'THENCLRA<='1';ELSECLRA<='0';ENDIF;CLRAC<=CLRA; --仿真觀測輸出用ENDPROCESS;ENDBLOCKKZXH;--時間檢測模塊SJJC:BLOCKISBEGINPROCESS(ENA,CLRA,CLKF)ISBEGINIFCLRA='1'THENDA<="0000000000000000000";ELSIFRISING_EDGE(CLKF)THENIFENA='1'THENDA<=DA+'1';ENDIF;ENDIF;DAC<=DA; --仿真觀測輸出用ENDPROCESS;ENDBLOCKSJJC;--數(shù)據(jù)鎖存模塊SJSC:BLOCKISBEGINPROCESS(CLB)IS --時間差數(shù)據(jù)進(jìn)程BEGINIFCLB'EVENTANDCLB='0'THENDATAB<=DA;ENDIF;DATABC<=DATAB; --仿真觀測輸出用ENDPROCESS;PROCESS(LOADA)IS --提取周期數(shù)據(jù)進(jìn)程BEGINIFRISING_EDGE(LOADA)THENDATAA<=DA;ENDIF;DATAAC<=DATAA; --仿真觀測輸出用ENDPROCESS;ENDBLOCKSJSC;--輸出選擇模塊SCXZ:BLOCKISBEGINPROCESS(EN,RSEL)ISBEGINIFEN='1'THENCASERSELISWHEN'0'=>DATA<=DATAA;WHEN'1'=>DATA<=DATAB;WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDPROCESS;ENDBLOCKSCXZ;ENDARCHITECTUREART;15.3.2單片機的匯編語言源程序清單;SZXWY.ASMDATAH EQU 40H ;周期的時間DATAL EQU 41HDATA2L EQU 42H ;時間差DATA2H EQU 43HDATA3 EQU 44HDATA33 EQU 45HAD0 EQU 30H ;除法占用 ;乘法占用AD1 EQU 31HAD2 EQU 32HAD3 EQU 33HAD4 EQU 34HAD5 EQU 35HAD6 EQU 36H

ADA EQU 4FHADB EQU 5FHADC EQU 4DHADE EQU 5DHDSEL BITP1.3FEN BITP1.5KEY1 BITP1.7KEY2 BITP1.6ALA BITP3.5DISPBITBIT2FH.0 ORG00H LJMP100H ORG100HMIAN: MOV2FH,#01HMIAN1: NOP LCALLDUSHUJU ;讀FPGA數(shù)據(jù) LCALLZHUNBEIZHOUQI;裝入頻率除法數(shù)據(jù) CLR2FH.3 JNB2FH.3,DIVDD1 LJMPCHCHUDIVDD1: LCALLDIVD1 ;計算頻率 MOV 6FH,4FH MOV 6EH,4EH MOV 6DH,4DH MOV 6CH,4CH MOV 35H,4FH MOV 34H,4EH MOV 33H,4DH MOV 32H,4DH LCALL BCDST ;二進(jìn)制轉(zhuǎn)換為BCD碼MOV R0,#30H MOV R1,#3FH MOV R7,#04H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 MOV 36H,#0 LCALL BCD_2BCD MOV 70H,#18MOV 71H,30H MOV 72H,31H MOV 73H,32H MOV 74H,33H MOV 75H,34H MOV 76H,35HMIANWC: LCALLX3600 ;裝入相位計算數(shù)據(jù) LCALL MULNM MOV 4AH,5AH;將以X3600為初始地址單元的積送入除法緩沖區(qū)MOV 4BH,5BH MOV 4CH,5CH MOV 4DH,5DH MOV 4EH,5EH MOV 4FH,5FH MOV 5FH,DATAL ;裝入被測周期時間 MOV 5EH,DATAH MOV 5DH,DATA3 LCALL DIVD1 ;得到相位差值 MOV 35H,4FH MOV 34H,4EHMOV 33H,4DH MOV 32H,#0 LCALL BCDST ;二進(jìn)制轉(zhuǎn)換為BCD碼 MOV R0,#30H MOV R1,#3FH MOV R7,#04H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0MOV 36H,#0 LCALLBCD_2BCD MOV 78H,#16 MOV 79H,30H MOV 7AH,31H MOV 7BH,32H MOV 7CH,33H MOV 7DH,34H MOV 7EH,35HCHCHU: LCALL DISPKEYCOD:JB P1.7,MIAN11 LCALL DELAY1 JNB P1.7,$ CPL 2FH.0 LCALL DELAY2MIAN11:LCALL DELAY1 LCALL DELAY1 LCALL DELAY1 LJMP MIAN1

PROCDUSHUJUDUSHUJU:CLRDSEL CLR FEN MOV A,P0 MOV DATAL,A MOV A,P2 MOV DATAH,A MOV A,P1 ANL A,#00000111B MOV DATA3,A SETB DSEL SETB FEN NOPCLR FEN MOV A,P0 MOV DATA2L,A MOV A,P2 MOV DATA2H,A MOV A,P1 ANL A,#00000111B MOV DATA33,A SETB FEN RET NOP ;PC值出錯處理NOP;空操作 NOP;空操作 LJMP MIAN;重新復(fù)位起動 END

PROCZHUNBEIZHOUQIZHUNBEIZHOUQI:

;2NBYTE/NBYTE=NBYTE,HEREN=3IN31H;(4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)MOV 5FH,DATAL MOV 5EH,DATAH MOV 5DH,DATA3 MOV 4FH,#80H ;低位 MOV 4EH,#96H MOV 4DH,#98H MOV 4CH,#00H MOV 4BH,#0H MOV 4AH,#0H RET NOP ;PC值出錯處理NOP;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 END

PROCMULNMMULNM: NOP;NBYTESXMBYTES=N+MBYTESHEREN=3;M=3 MOV 30H,#03H;(4D,4E,4FH)×(5D,5E,5FH)=(5A~5FH) MOV 31H,#03HMULTT:MOV A,AD0 MOV R3,AD1 MOV R2,A ADD A,R3 INC A MOV AD2,A MOV A,#ADB CLR C SUBB A,R3 MOV AD6,A MOV R1,A SUBB A,R2MOV AD5,A INC R2MULNMZ: MOV @R1,#00H DEC R1 DJNZ R2,MULNMZMULNMB: MOV R2,AD0 MOV R1,AD6 MOV R0,#ADA CLR 00HMULNML: MOV A,ADBJZ MULNMD MOV B,@R0 MUL AB ADD A,@R1 MOV @R1,A JNB 00H,MULNM1 INC BMULNM1: MOV A,B DEC R1 ADDC A,@R1 MOV @R1,A MOV 00H,C DEC R0 DJNZ R2,MULNMLMULNMD: MOV R0,AD5 CLR A MOV R2,AD2MULNMS: XCH A,@R0 INC R0 DJNZ R2,MULNMS DJNZ R3,MULNMB RET NOP ;PC值出錯處理NOP ;空操作 NOP ;空操作LJMP MIAN ;重新復(fù)位起動 END

PROCX3600;NBYTESXMBYTES=N+MBYTESHEREN=3;M=3;(4D,4E,4FH)*(5D,5E,5FH)=(5A--5FH)X3600: MOV 4DH,DATA33 MOV 4EH,DATA2HMOV 4FH,DATA2L MOV 5DH,#00H MOV 5EH,#0EH MOV 5FH,#10H RET NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 END

PROCBCD_2BCDBCD_2BCD:NOPLOOP0:CLR A MOV A,@R1 MOV B,A ;SWAPA ANL A,#0FH MOV @R0,A INC R0 MOV A,B SWAP A ANL A,#0FHMOV @R0,A DEC R1 INC R0 DJNZ R7,LOOP0 RET NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 END

PROC DISP;顯示程序模塊DISP: PUSH ACC PUSH PSW PUSH DPH PUSH DPL MOV A,76H CJNE A,#0,NOPB MOV 76H,#17 MOV A,75H CJNE A,#0,NOPB MOV 75H,#17MOV A,74H CJNE A,#0,NOPB MOV 74H,#17 MOV A,73H CJNE A,#0,NOPB MOV 73H,#17 MOV A,72H CJNE A,#0,NOPB MOV 72H,#17 MOV A,71H CJNE A,#0,NOPB MOV 71H,#0MOV A,70H CJNE A,#0,NOPB MOV 70H,#17

NOPB: MOV A,7EH CJNE A,#0,NOPB1 MOV 7EH,#17

MOV A,7DH CJNE A,#0,NOPB1 MOV 7DH,#17MOV A,7CH CJNE A,#0,NOPB1 MOV 7CH,#17

MOV A,7BH CJNE A,#0,NOPB1 MOV 7BH,#17NOPB1:MOVR1,#70H ;起始顯示地址為 JNB 2FH.0,DISXW JMP DISPPDISXW: MOV R1,#78HDISPP: MOV R2,#7DISP1: MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR JB 2FH.0,OKOK MOV B,A MOV A,R1 CJNE A,#7AH,NONO MOV A,B ANL A,#11110111B JMP OKOKNONO:MOVA,BOKOK:MOVSBUF,ADL1: JNB TI,DL1 CLR TI INC R1 DJNZ R2,DISP1 POP DPL POP DPH POP PSW POP ACC RET NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作LJMP MIAN ;重新復(fù)位起動TAB: DB 88H,0EBH,04CH,049H,2BH ;自制的顯示模塊 DB 19H,18H,0CBH,08H,09H DB 0AH,38H,9CH,68H,1CH,1EH,00FH,0FFH,2AH ENDPROCDELAY1DELAY1:CLR ALA MOV R6,#64HDELAY11: MOV R7,#250 DJNZ R7,$ DJNZ R6,DELAY11 SETB ALA RET NOP ;PC值出錯處理 NOP ;空操作NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 END

PROCDELAY2DELAY2: MOV R6,#64HDELAY21: MOV R7,#250 DJNZ R7,$DJNZ R6,DELAY21 RET NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 ENDPROCDIVD1DIVD1: NOP;;2NBYTE/NBYTE=NBYTE,HEREN=3IN31H;(4A,4B,4C,4D,4E,4FH)/(5D,5E,5FH)=(4D,4E,4FH)

MOV 30H,#06H ;被除數(shù)的字節(jié)數(shù)為6AD0=06H MOV 31H,#03H;除數(shù)的字節(jié)數(shù)DIVPP: MOV A,AD1 MOV R2,A ;R2=03H RL A RL A RL A MOV R3,A ;R3=18H=24D

CLR 0F0H ;B.0=0清標(biāo)志位 CLR C ;C=0

MOV A,#ADA SUBB A,R2 MOV AD3,A ;AD3=4CH MOV R1,#ADBDIVMB2B: MOV A,@R1 JNZ DIVM2B DEC R1 DJNZ R2,DIVMB2B SETB 0F0H RETDIVM2B: MOV R2,AD1 MOV R1,#ADB MOV R0,AD3DIVM2L: MOV A,@R0 SUBB A,@R1 DEC R0 DEC R1 DJNZ R2,DIVM2L JNC DIVM20DIVM2D: LCALL SHIL1 JC DIVM2SDIVM2C: MOV R0,AD3 MOV R1,#ADB MOV R2,AD1DIVM2CL: MOV A,@R0 SUBB A,@R1 DEC R0 DEC R1 DJNZ R2,DIVM2CL JC DIVM2EDIVM2S: INC ADA MOV R2,AD1 MOV R0,AD3 MOV R1,#ADB LCALL SUBMBBDIVM2E: DJNZ R3,DIVM2D RETDIVM20: SETB 0F0H RET DB 02H,12H

SHIL1: MOV R2,AD0 MOV R0,#ADASHIL1B: CLR CSHILL: MOV A,@R0 RLC A MOV @R0,A DEC R0 DJNZ R2,SHILL RETSUBMB: MOV R2,AD0 ;NOSIGNNBYTESMINUSENBYTES MOV R0,#ADA ;(......4FH)-(......5FH)=(......4FH) MOV R1,#ADBSUBMBB: CLR CSUBMB1: MOV A,@R0 SUBB A,@R1 MOV @R0,ADEC R0 DEC R1 DJNZ R2,SUBMB1 RETNOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動ENDPROCBCDSTBCDST: MOV R7,#32 CLR C MOV 3FH,#00H MOV 3EH,#00HMOV3DH,#00HMOV3CH,#00HMOV3BH,#00HMOV3AH,#00HKKK: MOV A,35HRLC AMOV 35H,A

MOV A,34HRLC AMOV 34H,A

MOV A,33H RLC A MOV 33H,AMOV A,32H RLC A MOV 32H,A

MOV A,3FH ADDC A,3FH DA A MOV 3FH,A

MOV A,3EH ADDC A,3EH DA A MOV 3EH,AMOV A,3DH ADDC A,3DH DA A MOV 3DH,A

MOV A,3CH ADDC A,3CH DA A MOV 3CH,A

MOV A,3BH ADDC A,3BH DA A MOV 3BH,AMOV A,3AH ADDC A,3AH DA A MOV 3AH,A DJNZ R7,KKK RET NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動 END

END15.4系統(tǒng)仿真/硬件驗證15.4.1系統(tǒng)調(diào)試的方法本系統(tǒng)既含有FPGA自編程硬件設(shè)計電路,又含有單片機控制電路,整個系統(tǒng)比較復(fù)雜,因此我們采用自底向上的調(diào)試方法,也就是先進(jìn)行各個單元電路的軟件仿真和硬件調(diào)試,在各個單元電路調(diào)試好后再進(jìn)行系統(tǒng)聯(lián)調(diào),最后進(jìn)行硬件的編程固化及系統(tǒng)的組裝。15.4.2系統(tǒng)調(diào)試的軟/硬件(1)系統(tǒng)設(shè)計開發(fā)軟件:MAX+plusⅡ10.0、偉福6000(WAVE6000forwindows)。(2)單片機及FPGA/CPLD調(diào)試設(shè)備:PIV計算機、偉福E6000L單片機仿真器及POD—8X5XP仿真頭、GW48-CKEDA實驗開發(fā)系統(tǒng)及EPF10K20TC144-4FPGA適配板、單片機最小系統(tǒng)、煒煌WH-500B程序編寫加密器、GDS-820S數(shù)字存儲示波器。

15.4.2系統(tǒng)的有關(guān)仿真圖15.12是FPGA數(shù)據(jù)采集電路VHDL程序設(shè)計仿真圖。請讀者自己對照程序進(jìn)行仿真分析。圖1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論