【正文】
。 END IF。 END IF。 QABC(11 DOWNTO 8)=TEMPA。 QABC(7 DOWNTO 4)=TEMPB。 QABC(3 DOWNTO 0)=TEMPC。 END PROCESS。 END ARCHITECTURE ART。 D/A轉(zhuǎn)換控制模塊DAZHKZ D/A轉(zhuǎn)換控制模塊主要實(shí)現(xiàn)將數(shù)據(jù)運(yùn)算與處理模塊所運(yùn)算的差值由12位BCD碼轉(zhuǎn)換為八位二進(jìn)制碼。D/A轉(zhuǎn)換控制模塊DAZHKZ的VHDL源程序: D/A轉(zhuǎn)換控制模塊符號(hào)編輯文件LIBRARY IEEE。 USE 。 USE 。 USE 。 ENTITY DAZHKZ IS PORT(DATA_IN: IN STD_LOGIC_VECTOR(11 DOWNTO 0)。 CLK: IN STD_LOGIC。 KK: IN STD_LOGIC。 RST: IN STD_LOGIC。 DATA_OUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END ENTITY DAZHKZ。 ARCHITECTURE ART OF DAZHKZ IS SIGNAL TEMPG: INTEGER RANGE 0 TO 9。 BCDG SIGNAL TEMPS: INTEGER RANGE 0 TO 9。 BCDS SIGNAL TEMPB: INTEGER RANGE 0 TO 9。 BCDB SIGNAL TEMP: INTEGER RANGE 0 TO 255。 SIGNAL DATA: STD_LOGIC_VECTOR(7 DOWNTO 0)。 BEGINTEMPG=CONV_INTEGER(DATA_IN(3 DOWNTO 0))。 TEMPS=CONV_INTEGER(DATA_IN(7 DOWNTO 4))。 TEMPB=CONV_INTEGER(DATA_IN(11 DOWNTO 8))。 TEMP=TEMPB*100+TEMPS*10+TEMPG。 PROCESS(KK,TEMP,CLK) IS BEGIN IF RST=39。139。 THEN DATA=(OTHERS=39。039。)。 ELSIF RISING_EDGE(CLK) THENDATA=CONV_STD_LOGIC_VECTOR(TEMP,8)。 IF KK=39。139。 THEN DATA_OUT=DATA。 ELSE NULL。 END IF。 END IF。 END PROCESS。 END ARCHITECTURE ART。 鍵盤(pán)輸入與數(shù)據(jù)顯示控制模塊本部分主要是顯示結(jié)果當(dāng)KEYC為上升沿時(shí)數(shù)碼管逐次顯示輸入十二位BCD碼、用十二位BCD碼顯示的差值和采集數(shù)據(jù)的個(gè)數(shù),當(dāng)改變KEY時(shí)采集數(shù)據(jù)的個(gè)數(shù)逐次增一,總體觀察:將KEYC與KEY都加一個(gè)小脈沖觀察結(jié)果,三個(gè)數(shù)據(jù)反復(fù)變換,并且采集數(shù)據(jù)個(gè)數(shù)逐次增一。鍵盤(pán)輸入與數(shù)據(jù)顯示控制模塊JPXSKZ的VHDL源程序: 鍵盤(pán)輸入與數(shù)據(jù)顯示控制模塊符號(hào)編輯文件LIBRARY IEEE。 USE 。 USE 。 ENTITY JPXSKZ IS PORT(BCDOUT: IN STD_LOGIC_VECTOR(11 DOWNTO 0)。 KEYC: IN STD_LOGIC。 KEY: IN STD_LOGIC。 QA: IN STD_LOGIC_VECTOR(11 DOWNTO 0)。 DATAOUT: OUT STD_LOGIC_VECTOR(11 DOWNTO 0))。 END ENTITY JPXSKZ。 ARCHITECTURE ART OF JPXSKZ IS SIGNAL STATE: STD_LOGIC_VECTOR(1 DOWNTO 0)。 SIGNAL A: STD_LOGIC_VECTOR(11 DOWNTO 0)。 BEGIN CHOSEKEY: PROCESS(KEYC) IS VARIABLE TEMP: STD_LOGIC_VECTOR(1 DOWNTO 0)。 BEGINIF RISING_EDGE(KEYC) THEN IF TEMP=10 THEN TEMP: =00。 ELSE TEMP: =TEMP+39。139。 END IF。 END IF。 STATE=TEMP。 END PROCESS CHOSEKEY 。 CHOSEDISPLAY: PROCESS(STATE) IS BEGIN CASE STATE ISWHEN 00=DATAOUT=A。 WHEN 01=DATAOUT=BCDOUT。 WHEN 10=DATAOUT=QA。 WHEN OTHERS=NULL。 END CASE。 END PROCESS CHOSEDISPLAY。 KEYBOARD: PROCESS(KEY,STATE) IS VARIABLE TEMPA,TEMPB,TEMPC: STD_LOGIC_VECTOR(3 DOWNTO 0)。 BEGIN WAIT UNTIL KEY=39。139。 IF STATE=00 THENIF TEMPA=1001 THEN TEMPA: =0000。 TEMPB: =TEMPB+39。139。 IF TEMPB=1001 THEN TEMPB: =0000。 TEMPC: =TEMPC+39。139。 IF TEMPC=1001 THEN TEMPC: =0000。 END IF。 END IF。 ELSE TEMPA: =TEMPA+39。139。 END IF。 ELSE NULL。 END IF。 A(11 DOWNTO 8)=TEMPC。 A(7 DOWNTO 4)=TEMPB。 A(3 DOWNTO 0)=TEMPA。 END PROCESS KEYBOARD。 END ARCHITECTURE ART。 數(shù)碼顯示模塊DISP的設(shè)計(jì)。它是七段譯碼器, Q為輸出邏輯變量,用七位二進(jìn)制數(shù)來(lái)實(shí)現(xiàn)七段譯碼器的功能,最終顯示出顯示模塊要求的三類(lèi)數(shù)。 數(shù)碼顯示模塊符號(hào)編輯文件LIBRARY IEEE。 USE 。ENTITY DISP IS PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0))。 END DISP。ARCHITECTURE DISP_ARC OF DISP IS BEGIN PROCESS(D) BEGIN CASE D IS WHEN0000=Q=1000000。 WHEN0001=Q=1111001。 WHEN0010=Q=0100100。 WHEN0011=Q=0110000。 WHEN0100=Q=0011001。 WHEN0101=Q=0010010。 WHEN0110=Q=0000010。 WHEN0111=Q=1111000。 WHEN1000=Q=0000000。 WHEN1001=Q=0010000。 WHEN OTHERS=Q=1111111。END CASE。END PROCESS。END DISP_ARC。 DAC0832芯片介紹此模塊設(shè)計(jì)所使用的芯片是DAC0832。此器件的工作原理簡(jiǎn)單介紹如下:DAC0832由8位輸入鎖存器,8位DAC寄存器8位D/A轉(zhuǎn)換電路組成。DAC0832有三種工作方式:?jiǎn)尉彌_方式、雙緩沖方式、直通方式 。它的各引腳功能如下:DI0~DI7:八位數(shù)字信號(hào)輸入端。:片選端,低電平有效ILE:數(shù)據(jù)鎖存允許控制端,高電平有效:第一級(jí)輸入寄存器寫(xiě)選通控制,低電平有效。當(dāng)CS=0、ILE=WR1=0時(shí),數(shù)據(jù)信號(hào)被鎖存到第一級(jí)8位輸入寄存器中。:數(shù)據(jù)傳送控制,低電平有效。:DAC寄存器寫(xiě)選通控制端,低電平有效。當(dāng)XFER=0,WR2=0時(shí),輸入寄存器狀態(tài)轉(zhuǎn)入8位DAC寄存器中。Iout1:D/A轉(zhuǎn)換器電流輸出1端,輸入數(shù)字量全1時(shí),Iout1輸出最大,輸入數(shù)字量全為0時(shí),Iout1輸出最小。Iout2:D/A轉(zhuǎn)換器電流輸出1端,Iout1+ Iout2=常數(shù)。Rfb:外部反饋信號(hào)輸入端Vcc:電源輸入端,可在+5~+15范圍內(nèi)。DGND:數(shù)字信號(hào)地。AGND:模擬信號(hào)地,最好與基準(zhǔn)電壓共地。 DACO832接線圖圖中D0~D7為數(shù)字量信號(hào)輸入通道,運(yùn)放本身主要實(shí)現(xiàn)將信號(hào)放大2倍的功能。 131415164567DAC08322019891112D0D1D2D3D4D5D6D7+5VVCC1 2 3 10 17 1823RP15K15VV02CK1350K+15V10K DAC0832接線圖 ADZHKZ的仿真結(jié)果圖(未加去毛刺進(jìn)程前),先送出START信號(hào),開(kāi)始進(jìn)行模數(shù)轉(zhuǎn)換。再送出ALE信號(hào)將地址信號(hào)鎖存,然后查詢EOC信號(hào),若EOC變?yōu)楦唠娖?,則說(shuō)明轉(zhuǎn)換已結(jié)束。此時(shí)送出OE信號(hào),讀取數(shù)據(jù),完成一個(gè)轉(zhuǎn)換周期。(注:ALE:地址鎖存允許信號(hào);START:轉(zhuǎn)換啟動(dòng)信號(hào);OE:輸出允許信號(hào),高電平允許轉(zhuǎn)換結(jié)果輸出;CLK:時(shí)鐘信號(hào);EOC:轉(zhuǎn)換結(jié)束信號(hào),為0代表正在轉(zhuǎn)換,1代表轉(zhuǎn)換結(jié)束),最終輸出12位BCD碼。 SJYSCL的仿真結(jié)果圖,ADZHKZ所得十二位BCD碼與十二位預(yù)置數(shù)進(jìn)行差值運(yùn)算QABC即為最終差值。 DAZHKZ的仿真結(jié)果圖,當(dāng)開(kāi)關(guān)KK有效時(shí)實(shí)行對(duì)差值進(jìn)行八位二進(jìn)制轉(zhuǎn)換。 JPXSKZ的仿真結(jié)果圖。 DISP的仿真結(jié)果圖 總的仿真結(jié)果圖,開(kāi)關(guān)高電平有效,改變KEY,采集數(shù)據(jù)個(gè)數(shù)累加,改變KEYC,上升沿時(shí),輸入電壓、電壓差值、采集數(shù)據(jù)個(gè)數(shù)三個(gè)數(shù)循環(huán)變換。5. 結(jié)論通過(guò)這次畢業(yè)設(shè)計(jì),使我進(jìn)一步加深了對(duì)VHDL語(yǔ)言的設(shè)計(jì)應(yīng)用,以及掌握VHDL的編程以及數(shù)據(jù)采集的原理,軟硬件結(jié)合給設(shè)計(jì)所帶來(lái)的巨大便利及其高效率、高質(zhì)量。在長(zhǎng)時(shí)間的熟悉EDA下,我漸漸入門(mén)了,編寫(xiě)、調(diào)試、仿真程序這一系列過(guò)程令我感到無(wú)比充實(shí)。通過(guò)這樣一個(gè)數(shù)據(jù)采集系統(tǒng)程序的設(shè)計(jì),我不僅又溫習(xí)了一遍大學(xué)里學(xué)的高級(jí)語(yǔ)言(VHDL、C語(yǔ)言等)的相關(guān)算法和設(shè)計(jì)思路,讓開(kāi)始很生疏的我學(xué)到了很多,也更加熟悉這一方面,也使我在大學(xué)畢業(yè)之際,對(duì)我大學(xué)四年的學(xué)業(yè)有了一個(gè)比較全面的總結(jié)。在指導(dǎo)老師極其認(rèn)真、耐心地指導(dǎo)下,我順利的完成了整個(gè)畢業(yè)設(shè)計(jì)。本次設(shè)計(jì)開(kāi)發(fā)通過(guò)VHDL語(yǔ)言編程設(shè)計(jì)來(lái)實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng),在Altera 公司開(kāi)發(fā)的第三代EDA集成開(kāi)發(fā)環(huán)境— MAXPLUS II中進(jìn)行修改、編譯、仿真,采用軟硬件結(jié)合的方法對(duì)設(shè)計(jì)結(jié)果進(jìn)行驗(yàn)證。在設(shè)計(jì)中,采用多進(jìn)程描述的方法來(lái)進(jìn)行程序設(shè)計(jì),通過(guò)使用進(jìn)程可以把整體的功能局部化、分塊設(shè)計(jì)。多個(gè)進(jìn)程通過(guò)進(jìn)程間通信機(jī)制互相配合、達(dá)到設(shè)計(jì)要求。當(dāng)進(jìn)程比較多的時(shí)候,它們之間的配合問(wèn)題就比較復(fù)雜,因此在設(shè)計(jì)之前應(yīng)該合理規(guī)劃安排。此次畢業(yè)論文設(shè)計(jì)使我的學(xué)術(shù)水平有了質(zhì)的飛躍,為以后工作生活奠定了堅(jiān)實(shí)的基礎(chǔ),樹(shù)立了強(qiáng)大的信心。致謝本次畢業(yè)論文是在我的指導(dǎo)老師的不斷督促和悉心指導(dǎo)下完成的。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,一絲不茍的工作作風(fēng),深深地感染和激勵(lì)著我。參考文獻(xiàn)[1] EDA技術(shù)綜合應(yīng)用實(shí)例與分析 譚會(huì)生 著 西安電子科技大學(xué)出版社.[2] 錢(qián)敏,黃秋萍,[].電子工程師,06年,32卷第2期:6667. .[3] [M] 北京:機(jī)械工業(yè)出版社,2005.[4] [M].西安:西北工業(yè)大學(xué)出版社,2001.[5] 王振紅,[M].北京:北方工業(yè)大學(xué)出版社,2003.[6] [M].成都:電子科技大學(xué)出版社,2000.[7] 潘松, 黃繼業(yè). EDA技術(shù)實(shí)用教程[M]. 北京: 科學(xué)出版社, 2002.[8] 王林,商周,[J].電測(cè)與儀表,04年,第八期:17.第 38 頁(yè) 共 38