版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第15章低頻數(shù)字相位測(cè)量儀的
設(shè)計(jì)與分析15.1系統(tǒng)設(shè)計(jì)要求15.2系統(tǒng)設(shè)計(jì)方案15.3主要VHDL源程序和匯編語言程序15.4系統(tǒng)仿真/硬件驗(yàn)證15.5設(shè)計(jì)技巧分析15.6系統(tǒng)擴(kuò)展思路15.1系統(tǒng)設(shè)計(jì)要求設(shè)計(jì)并制作一個(gè)低頻數(shù)字相位測(cè)量儀,其設(shè)計(jì)要求如下:(1)頻率范圍:20Hz~20kHz。(2)相位測(cè)量儀的輸入阻抗≥100kΩ。(3)允許兩路輸入正弦信號(hào)峰-峰值可分別在1~5V范圍內(nèi)變化。(4)相位測(cè)量絕對(duì)誤差≤2。(5)具有頻率測(cè)量及數(shù)字顯示功能。(6)相位差數(shù)字顯示:相位讀數(shù)為0~359.9,分辨力為0.1。15.2系統(tǒng)設(shè)計(jì)方案15.2.1總體設(shè)計(jì)方案根據(jù)系統(tǒng)的設(shè)計(jì)要求,本系統(tǒng)可分為三大基本組成部分:數(shù)據(jù)采集電路、數(shù)據(jù)運(yùn)算控制電路和數(shù)據(jù)顯示電路??紤]到FPGA/CPLD具有集成度高,I/O資源豐富,穩(wěn)定可靠,可現(xiàn)場(chǎng)在線編程等優(yōu)點(diǎn),而單片機(jī)具有很好的人機(jī)接口和運(yùn)算控制功能,本系統(tǒng)擬用FPGA/CPLD和單片機(jī)相結(jié)合,構(gòu)成整個(gè)系統(tǒng)的測(cè)控主體。圖15.1系統(tǒng)原理框圖15.2.2信號(hào)整形電路的設(shè)計(jì)最簡單的信號(hào)整形電路就是一個(gè)單門限電壓比較器(如圖15.2所示),當(dāng)輸入信號(hào)每通過一次零時(shí)觸發(fā)器的輸出就要產(chǎn)生一次突然的變化。當(dāng)輸入正弦波時(shí),每過一次零,比較器的輸出端將產(chǎn)生一次電壓跳變,它的正負(fù)向幅度均受到供電電源的限制,因此輸出電壓波形是具有正負(fù)極性的方波,這樣就完成了電壓波形的整形工作。圖15.2采用單門限觸發(fā)器的整形電路為了避免過零點(diǎn)多次觸發(fā)的現(xiàn)象,我們使用施密特觸發(fā)器組成的整形電路。施密特觸發(fā)器在單門限電壓比較器的基礎(chǔ)上引入了正反饋網(wǎng)絡(luò)。由于正反饋的作用,它的門限電壓隨著輸出電壓Uo的變化而改變,因此提高了抗干擾能力。本系統(tǒng)中我們使用兩個(gè)施密特觸發(fā)器對(duì)兩路信號(hào)進(jìn)行整形,電路圖如圖15.3所示。圖15.3采用施密特觸發(fā)器的整形電路15.2.3FPGA數(shù)據(jù)采集電路的設(shè)計(jì)FPGA數(shù)據(jù)采集電路的功能就是實(shí)現(xiàn)將待測(cè)正弦信號(hào)的周期、相位差轉(zhuǎn)變?yōu)?9位的數(shù)字量。FPGA數(shù)據(jù)采集的硬件電路我們可采用FPGA下載板來實(shí)現(xiàn),該下載板包含F(xiàn)PGA芯片、下載電路和配置存儲(chǔ)器,其電路結(jié)構(gòu)可參見對(duì)應(yīng)的FPGA下載板說明書。本電路主要是進(jìn)行FPGA的硬件描述語言(HDL)程序設(shè)計(jì)。根據(jù)系統(tǒng)的總體設(shè)計(jì)方案,F(xiàn)PGA數(shù)據(jù)采集電路的輸入信號(hào)有:CLK——系統(tǒng)工作用時(shí)鐘信號(hào)輸入端;CLKAA,CLKBB——兩路被測(cè)信號(hào)輸入端;EN——單片機(jī)發(fā)出的傳送數(shù)據(jù)使能信號(hào),在EN的上升沿,F(xiàn)PGA向單片機(jī)傳送數(shù)據(jù);RSEL——單片機(jī)發(fā)出的傳送數(shù)據(jù)類型信號(hào),當(dāng)RSEL=0時(shí),F(xiàn)PGA向單片機(jī)傳送被測(cè)信號(hào)頻率數(shù)據(jù),當(dāng)RSEL=1時(shí),F(xiàn)PGA向單片機(jī)傳送被測(cè)信號(hào)相位差數(shù)據(jù)。FPGA數(shù)據(jù)采集電路的輸出信號(hào)有:DATA[18..0]——FPGA到單片機(jī)的數(shù)據(jù)輸出口,由輸出控制信號(hào)EN和RSEL控制。本數(shù)字式相位測(cè)量儀的要求是測(cè)試并顯示輸入信號(hào)頻率范圍在20Hz~20kHz,測(cè)試并顯示信號(hào)a、b的相位差,相位差的變化范圍為0~359.9,相位差的顯示分辨力為0.1°,要求測(cè)量相位的絕對(duì)誤差≤2。由此可知:圖15.4FPGA數(shù)據(jù)采集電路系統(tǒng)組成框圖15.2.4單片機(jī)數(shù)據(jù)運(yùn)算控制電路的設(shè)計(jì)單片機(jī)數(shù)據(jù)運(yùn)算控制電路的功能就是負(fù)責(zé)讀取FPGA/CPLD采集到的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)計(jì)算待測(cè)正弦信號(hào)的頻率及兩路同頻正弦信號(hào)之間的相位差,同時(shí)通過功能鍵切換,顯示出待測(cè)信號(hào)的頻率和相位差。單片機(jī)數(shù)據(jù)運(yùn)算控制電路的硬件可由單片機(jī)、晶振電路、按鍵及顯示接口電路等組成。我們?cè)谠O(shè)計(jì)中考慮到,單片機(jī)具有較強(qiáng)的運(yùn)算能力和控制能力的特點(diǎn),因此使用單片機(jī)的P0口,P2口及P1.0、P1.1、P1.2、P1.3接收FPGA送來的對(duì)應(yīng)于正弦信號(hào)的周期、相位差的19位數(shù)據(jù)信號(hào),P1口的P1.7、P1.6接入兩個(gè)輕觸按鍵,完成功能選擇與設(shè)置。該電路的工作原理是,單片機(jī)通過向FPGA發(fā)送數(shù)據(jù)傳送指令,使FPGA按照單片機(jī)的要求發(fā)送數(shù)據(jù),同時(shí)通過使用單片機(jī)的串口,將待顯示的數(shù)據(jù)信息送給數(shù)據(jù)顯示電路顯示。其原理圖如圖15.5所示。圖15.5單片機(jī)系統(tǒng)原理圖單片機(jī)數(shù)據(jù)運(yùn)算控制電路的軟件設(shè)計(jì)思路是,單片機(jī)不斷地從FPGA讀取信號(hào)的周期和a、b信號(hào)相位差所對(duì)應(yīng)的時(shí)間差,讀取數(shù)據(jù)后進(jìn)行有關(guān)計(jì)算,并通過轉(zhuǎn)換后,送出給顯示模塊,實(shí)現(xiàn)頻率和相位差的顯示。單片機(jī)主程序流程圖如圖15.6所示。單片機(jī)在獲取FPGA的數(shù)據(jù)時(shí),開始的是一般的讀取指令MOV指令,分別從單片機(jī)的P0口、P2口、P1口的低3位讀入數(shù)據(jù),組合為一個(gè)19位的二進(jìn)制數(shù)據(jù),通過控制口線P1.3、P1.5控制FPGA釋放數(shù)據(jù)。經(jīng)過多次測(cè)試,采用這種方式獲得了比較好的效果。單片機(jī)讀取FPGA數(shù)據(jù)的程序流程圖如圖15.7所示。圖15.6主程序流程圖圖15.7讀FPGA數(shù)據(jù)程序流程圖單片機(jī)從FPGA讀取信息后,對(duì)信息進(jìn)行計(jì)算,算出信號(hào)a的頻率,其流程圖如圖15.8所示。由于a、b信號(hào)是兩路頻率相同、相位不同的正弦波信號(hào),因此經(jīng)過整形電路后形成頻率相同,時(shí)間上不重合的兩路信號(hào),這樣,F(xiàn)PGA可以計(jì)數(shù)出兩路信號(hào)的時(shí)間差從而可以計(jì)算出a、b信號(hào)的相位差,其程序流程圖如圖15.9所示。圖15.8計(jì)算a的頻率程序流程圖圖15.9計(jì)算a、b相位差的程序流程圖最后單片機(jī)需要將信號(hào)送到輸出端顯示出來,即單片機(jī)通過顯示子程序?qū)⑿畔⑺偷斤@示電路顯示出來,程序流程圖如圖15.10所示。圖15.10顯示程序流程圖15.2.5數(shù)據(jù)顯示電路的設(shè)計(jì)整個(gè)系統(tǒng)硬件電路中,單片機(jī)MCU與FPGA進(jìn)行數(shù)據(jù)交換占用了P0口、P1口和P3口,因此數(shù)據(jù)顯示電路的設(shè)計(jì)采用靜態(tài)顯示的方式,顯示電路由8個(gè)共陽極七段數(shù)碼管和8片1位串入8位并出的74LS164芯片組成。這種顯示方式不僅可以得到較為簡單的硬件電路,而且可以得到穩(wěn)定的數(shù)據(jù)輸出;這種連接方式不僅占用單片機(jī)端口少,而且充分利用了單片機(jī)的資源,容易掌握其編碼規(guī)律,簡化了軟件編程,在實(shí)驗(yàn)過程中,也體現(xiàn)出較高的可靠性。數(shù)據(jù)顯示電路如圖15.11所示。圖15.11數(shù)據(jù)顯示電路74LS164是一種8位高速串入/并出的移位寄存器,隨著時(shí)鐘信號(hào)的高低變化,串行數(shù)據(jù)通過一個(gè)2輸入與門同步的送入,使用獨(dú)立于時(shí)鐘的主控復(fù)位端讓寄存器的輸出端變?yōu)榈碗娖?,并且采用肖特基鉗位電路以達(dá)到高速運(yùn)行的目的。并且還具有以下的特點(diǎn):①典型的35MHz移位頻率;②異步主控復(fù)位;③門控串行輸入;④同步數(shù)據(jù)傳輸;⑤采用鉗位二極管限制高速的終端;⑥靜電放電值大于3500V。在本系統(tǒng)中,74LS164的連接方式為:74LS164的輸出Q0~Q7分別接LED數(shù)碼管的dp、g、f、e、d、c、b、a,并且Q7連接下一個(gè)74LS164的A、B端,時(shí)鐘CLK連接單片機(jī)的TXD端,第一片芯片的AB端連接單片機(jī)的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; --仿真觀測(cè)輸出點(diǎn),調(diào)試好后應(yīng)去掉,以下同CLKFC:OUTSTD_LOGIC; --仿真觀測(cè)輸出用DATAAC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測(cè)輸出用DATABC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測(cè)輸出用CLAC,CLBC:OUTSTD_LOGIC; --仿真觀測(cè)輸出用DAC:OUTSTD_LOGIC_VECTOR(18DOWNTO0); --仿真觀測(cè)輸出用CLRAC:OUTSTD_LOGIC;--仿真觀測(cè)輸出用ENAC:OUTSTD_LOGIC; --仿真觀測(cè)輸出用LOADAC:OUTSTD_LOGIC;--仿真觀測(cè)輸出用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--信號(hào)分頻模塊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; --仿真觀測(cè)輸出用ENDPROCESS;ENDBLOCKFPQ;--控制信號(hào)產(chǎn)生模塊KZXH:BLOCKISSIGNALCLKA,CLKB:STD_LOGIC;SIGNALCLA:STD_LOGIC;BEGINCLKA<=NOTCLKAA;CLKB<=NOTCLKBB;CLKAC<=CLKA; --仿真觀測(cè)輸出用CLKBC<=CLKB; --仿真觀測(cè)輸出用PROCESS(CLKA)ISBEGINIFRISING_EDGE(CLKA)THENCLA<=NOTCLA;ENDIF;ENA<=CLA;LOADA<=NOTCLA;CLAC<=CLA; --仿真觀測(cè)輸出用ENAC<=ENA; --仿真觀測(cè)輸出用LOADAC<=LOADA; --仿真觀測(cè)輸出用ENDPROCESS;PROCESS(CLKB)ISBEGINIFRISING_EDGE(CLKB)THENCLB<=NOTCLB;ENDIF;CLBC<=CLB; --仿真觀測(cè)輸出用ENDPROCESS;PROCESS(CLKA,CLA)ISBEGINIFCLKA='0'ANDCLA='0'THENCLRA<='1';ELSECLRA<='0';ENDIF;CLRAC<=CLRA; --仿真觀測(cè)輸出用ENDPROCESS;ENDBLOCKKZXH;--時(shí)間檢測(cè)模塊SJJC:BLOCKISBEGINPROCESS(ENA,CLRA,CLKF)ISBEGINIFCLRA='1'THENDA<="0000000000000000000";ELSIFRISING_EDGE(CLKF)THENIFENA='1'THENDA<=DA+'1';ENDIF;ENDIF;DAC<=DA; --仿真觀測(cè)輸出用ENDPROCESS;ENDBLOCKSJJC;--數(shù)據(jù)鎖存模塊SJSC:BLOCKISBEGINPROCESS(CLB)IS --時(shí)間差數(shù)據(jù)進(jìn)程BEGINIFCLB'EVENTANDCLB='0'THENDATAB<=DA;ENDIF;DATABC<=DATAB; --仿真觀測(cè)輸出用ENDPROCESS;PROCESS(LOADA)IS --提取周期數(shù)據(jù)進(jìn)程BEGINIFRISING_EDGE(LOADA)THENDATAA<=DA;ENDIF;DATAAC<=DATAA; --仿真觀測(cè)輸出用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單片機(jī)的匯編語言源程序清單;SZXWY.ASMDATAH EQU 40H ;周期的時(shí)間DATAL EQU 41HDATA2L EQU 42H ;時(shí)間差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 ;計(jì)算頻率 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 ;裝入相位計(jì)算數(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 ;裝入被測(cè)周期時(shí)間 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值出錯(cuò)處理NOP;空操作 NOP;空操作 LJMP MIAN;重新復(fù)位起動(dòng) 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值出錯(cuò)處理NOP;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) 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值出錯(cuò)處理NOP ;空操作 NOP ;空操作LJMP MIAN ;重新復(fù)位起動(dòng) 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值出錯(cuò)處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) 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值出錯(cuò)處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) 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值出錯(cuò)處理 NOP ;空操作 NOP ;空操作LJMP MIAN ;重新復(fù)位起動(dòng)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值出錯(cuò)處理 NOP ;空操作NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) END
PROCDELAY2DELAY2: MOV R6,#64HDELAY21: MOV R7,#250 DJNZ R7,$DJNZ R6,DELAY21 RET NOP ;PC值出錯(cuò)處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) 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值出錯(cuò)處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng)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值出錯(cuò)處理 NOP ;空操作 NOP ;空操作 LJMP MIAN ;重新復(fù)位起動(dòng) END
END15.4系統(tǒng)仿真/硬件驗(yàn)證15.4.1系統(tǒng)調(diào)試的方法本系統(tǒng)既含有FPGA自編程硬件設(shè)計(jì)電路,又含有單片機(jī)控制電路,整個(gè)系統(tǒng)比較復(fù)雜,因此我們采用自底向上的調(diào)試方法,也就是先進(jìn)行各個(gè)單元電路的軟件仿真和硬件調(diào)試,在各個(gè)單元電路調(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è)計(jì)開發(fā)軟件:MAX+plusⅡ10.0、偉福6000(WAVE6000forwindows)。(2)單片機(jī)及FPGA/CPLD調(diào)試設(shè)備:PIV計(jì)算機(jī)、偉福E6000L單片機(jī)仿真器及POD—8X5XP仿真頭、GW48-CKEDA實(shí)驗(yàn)開發(fā)系統(tǒng)及EPF10K20TC144-4FPGA適配板、單片機(jī)最小系統(tǒng)、煒煌WH-500B程序編寫加密器、GDS-820S數(shù)字存儲(chǔ)示波器。
15.4.2系統(tǒng)的有關(guān)仿真圖15.12是FPGA數(shù)據(jù)采集電路VHDL程序設(shè)計(jì)仿真圖。請(qǐng)讀者自己對(duì)照程序進(jìn)行仿真分析。圖1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冬季施工暖棚搭設(shè)質(zhì)量控制措施
- 2024年湄洲灣職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫含答案解析
- 概括故事情節(jié)知識(shí)講解
- 任務(wù)1:成本會(huì)計(jì)基本理論復(fù)習(xí)課程
- 無限極健康食品系列教學(xué)案例
- 2024年浙江工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 警示柱施工方案
- 二零二五版人才公寓分房管理及服務(wù)協(xié)議3篇
- 2024年河北軟件職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年長治淮海醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- (完整版)最新版線束標(biāo)準(zhǔn)
- 土壤肥料學(xué)(全套1292張課件)
- 一年級(jí)計(jì)算題連加連減
- 中國建筑史經(jīng)典題型
- 人民美術(shù)出版社三年級(jí)下冊(cè)書法教案
- 二年級(jí)豎式計(jì)算題720道(打印排版)
- 公路工程質(zhì)量檢驗(yàn)評(píng)定標(biāo)準(zhǔn)(交安部分)
- 整式的乘法和因式分解純計(jì)算題100道
- Consent-Letter-for-Children-Travelling-Abroad
- 玻璃鱗片施工技術(shù)規(guī)范
- 操作規(guī)程管理制度的內(nèi)容及示例
評(píng)論
0/150
提交評(píng)論