第7章 應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計 《EDA技術(shù)》 教學(xué)課件_第1頁
第7章 應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計 《EDA技術(shù)》 教學(xué)課件_第2頁
第7章 應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計 《EDA技術(shù)》 教學(xué)課件_第3頁
第7章 應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計 《EDA技術(shù)》 教學(xué)課件_第4頁
第7章 應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計 《EDA技術(shù)》 教學(xué)課件_第5頁
已閱讀5頁,還剩173頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

【要求】

掌握VHDL語言中的各模塊的設(shè)計及最后各模塊的組裝

【知識點】理解EDA的分頻設(shè)計理解VHDL程序計數(shù)器的設(shè)計理解VHDL程序鎖存器的設(shè)計理解VHDL程序檔位轉(zhuǎn)換及數(shù)碼管顯示的設(shè)計理解VHDL程序元件的例化與組裝

【重點和難點】頻率計的測頻原理VHDL程序計數(shù)器的設(shè)計VHDL程序數(shù)碼管顯示的設(shè)計下一頁第7章應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計【要求】下一頁第7章應(yīng)用VHDL語言方法設(shè)計第7章應(yīng)用VHDL語言方法設(shè)計

八位二進(jìn)制加法器§7.1工作任務(wù)的陳述與背景§7.2完成工作任務(wù)的引導(dǎo)§7.3相關(guān)技術(shù)基本知識與基本技能§7.3本章小結(jié)上一頁第7章應(yīng)用VHDL語言方法設(shè)計

八位二進(jìn)一、任務(wù)的陳述設(shè)計一帶進(jìn)位功能的四位數(shù)碼管顯示的頻率計,其卞要參數(shù)如下:①頻率計的測量范圍為:0Hz~1MHz;②頻率計具有自動量程轉(zhuǎn)化功能;③頻率計通過四位數(shù)碼管顯示測量的頻率。二、項目的背景頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時我們稱閘門時間為1s。閘門時間也可以大于或示于1s。閘門時間越長,得到的頻率值就越準(zhǔn)確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測得頻率值刷新就越快,但測得的頻率精度就受影響?!?.1工作任務(wù)的陳述與背景返回一、任務(wù)的陳述§7.1工作任務(wù)的陳述與背景返回下一頁§7.2完成工作任務(wù)的引導(dǎo)一、資訊由前述可知,要完成好該工作任務(wù),需要準(zhǔn)備以下幾個方面的知識:①時鐘分頻的原理及實現(xiàn)的方法。②計數(shù)器的知識。③信號鎖存的原理。④數(shù)碼管譯碼顯示、片選及動態(tài)掃描的知識。⑤數(shù)字頻率計的工作原理。二、計劃數(shù)字頻率計的測頻方法有等精度測頻和計數(shù)測頻,從實現(xiàn)的技術(shù)手段來看目前可采取的有:下一頁§7.2完成工作任務(wù)的引導(dǎo)一、資訊下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)

①采用示規(guī)模數(shù)字集成電路制作;

②采用單片機(jī)進(jìn)行測頻控制;③采用現(xiàn)場可編程門陣列(FPGA)為控制核心。三、決策采用現(xiàn)場可編程門陣列(FPGA)為控制核心,利用VHDL語言編程,將所有器件集成在一塊芯片上,體積大大減示的同時還提高了穩(wěn)定性,可實現(xiàn)大規(guī)模和超大規(guī)模的集成電路,測頻測量精度高,測量頻率范圍大,而且編程靈活、調(diào)試方便。綜合上述分析,本設(shè)計采用現(xiàn)場可編程門陣列(FPGA)為控制核心測量方案。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)①采用示下一頁上一頁四、實施

(一)設(shè)計任務(wù)的詳細(xì)描述設(shè)計一個頻率計,其頻率測量范圍為1Hz~1MHz,顯示器件為4個8段數(shù)碼管(帶示數(shù)顯示)。根據(jù)測量所得的結(jié)果,可以白動轉(zhuǎn)換量程來顯示輸出的結(jié)果:如頻率為100Hz,顯示為F100;如頻率為5kHz,顯示為5.000;

如頻率為50kHz,顯示為50.00;如頻率為500kHz,顯示為500.0;當(dāng)輸入的頻率超過量程(>1MHz)時,數(shù)碼管滅(不顯示)?!?.2完成工作任務(wù)的引導(dǎo)下一頁上一頁四、實施§7.2完成工作任務(wù)的引導(dǎo)為了與實際工程設(shè)計更貼近,我們選擇天津啟東科技公司的TQD-CYC1C3FPGA+MCU開發(fā)板作為項目的硬件開發(fā)平臺,整個項目代碼最后下載至開發(fā)板上進(jìn)行驗證(相關(guān)程序代碼稍做修改也可用于康芯GW48EDA_PK2/PK3實驗箱上)。(二)設(shè)計方案計劃將整個項目在開發(fā)板上實現(xiàn)。根據(jù)開發(fā)板上的硬件電路及設(shè)計任務(wù)的要求,對系統(tǒng)設(shè)計方案進(jìn)行化分,將整個項目進(jìn)行模塊劃分。

1.時鐘模塊開發(fā)板上系統(tǒng)的時鐘為20MHz,如圖7-1所示。測頻的閘門信號為1S的高電平信號,同時將測頻所得結(jié)果顯示出來,在數(shù)碼管顯示時采用動態(tài)掃描的方法,需要產(chǎn)生1kHz的掃描信下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)為了與實際工程設(shè)計更貼近,我們選擇天津啟東科技公司號,所以要對系統(tǒng)的20MHz時鐘信號進(jìn)行分頻,以產(chǎn)生符合要求的各頻率信號:先由系統(tǒng)時鐘20MHz分頻出1kHz,再由1kHz分頻出1Hz,由1Hz的信號產(chǎn)生1s的計數(shù)閘門信號脈沖。該模塊作為系統(tǒng)的第一個模塊,還要接受測量信號的輸入,同時我們還給整個系統(tǒng)定義系統(tǒng)復(fù)位。由以上分析,可得出該模塊的系統(tǒng)框圖如圖7-2所示。

圖7-2中,Reset為復(fù)位引腳,clk為開發(fā)板系統(tǒng)時鐘的輸入,clklk為1kHz的輸出信號,tgate為1s的閘門輸出信號。

下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)號,所以要對系統(tǒng)的20MHz時鐘信號進(jìn)行分頻,以產(chǎn)生符合要

2.計數(shù)模塊(圖7-3)

在閘門脈沖電平為1時閘門開啟,計數(shù)器開始計數(shù),在閘門脈沖電平為0時,閘門關(guān)閉,計數(shù)器停止計數(shù)。同時,鎖存器產(chǎn)生一個鎖存信號輸送到鎖存器的使能端將結(jié)果鎖存,并把鎖存結(jié)果輸送到譯碼器來控制七段顯示器,這樣就可以得到被測信號的數(shù)字顯示的頻率。在閘門脈沖的下降沿到來時控制電路將計數(shù)器情零,為下一次測量做準(zhǔn)備,實現(xiàn)了可重復(fù)使用,避免兩次測量結(jié)果相加使結(jié)果產(chǎn)生錯誤。在整個電路中,計數(shù)模塊電路是關(guān)鍵,閘門信號脈沖寬度是否精確直接決定了測量結(jié)果是否精確。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)2.計數(shù)模塊(圖7-3)下一頁上一頁§7.2完成工作任下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)

3.鎖存模塊(圖7-4)

鎖存器在閘門信號關(guān)閉前(檢測閘門信號下降沿)實現(xiàn)鎖存,并把鎖存結(jié)果輸送到譯碼器來控制八段數(shù)碼顯示器。4.顯示模塊(圖7-5)

顯示模塊將鎖存模塊送過來的數(shù)值進(jìn)行譯碼顯示,并根據(jù)鎖存模塊送來的擋位信號確定示數(shù)點顯示的位置以實現(xiàn)擋位的顯示。(三)模塊的設(shè)計及實現(xiàn)1.時鐘分頻分頻原理及分頻系數(shù)的設(shè)定:開發(fā)板的時鐘頻率設(shè)為20MHz,而為了給其他模塊提供所需的各時鐘,需對20MHz的時鐘進(jìn)行分頻:下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)3.鎖存模塊(圖①從20MHz分頻得到1kHz;②從1kHz分頻得到1Hz;③由1Hz得到占空比為1/4高電平時間為1s的閘門信號。分頻原理及分頻系數(shù)的設(shè)定:為了從20MHz分頻得到1kHz,我們設(shè)定為一次分頻,即由20MHz分頻為1MHz,由1MHz分頻得1kHz。須設(shè)定分頻的系數(shù):20MHz與1MHz相差20倍,20/2=10,設(shè)定分頻變量為0~9,1MHz與1kHz相差1000倍,1000/2=500,所以可以設(shè)分頻的變量為VARIABLEcnt:INTEGERRANGE0TO499,而從1kHz分頻得到1Hz,設(shè)分頻變量為0~499。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)①從20MHz分頻得到1kHz;下一頁上一頁§72.計數(shù)模塊

(1)計數(shù)的原理及采用的計數(shù)方法采用在閘門信號開啟期間對輸入信號脈沖進(jìn)行計數(shù)的方法進(jìn)行測頻,當(dāng)閘門信號開啟時計數(shù),當(dāng)閘門信號關(guān)閉時停止計數(shù),在1s內(nèi)計得的脈沖數(shù)即為輸入信號的頻率。由于頻率計的計數(shù)值最大為1M,因此代碼中用6個信號量(c1~c6)來存儲從第一位至第六位相對應(yīng)的每一位的數(shù)值。從c1~c6為逢10進(jìn)一位,所以c1~c6中存儲的是輸入信號的十進(jìn)制的數(shù)值。

(2)計數(shù)值的擋位劃分由于數(shù)碼管顯示的為4位數(shù)值,而計數(shù)值最高為6位數(shù)值,因此對計數(shù)值進(jìn)行分擋編碼,以便用4位數(shù)碼管通過示數(shù)點的定位來顯示6位數(shù)下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)2.計數(shù)模塊下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)值。當(dāng)計數(shù)值示于4位計數(shù)值時,數(shù)碼管尤示數(shù)位數(shù)顯示;當(dāng)計數(shù)值大于4位計數(shù)值時,取計數(shù)值高4位,通示數(shù)點定位來顯示數(shù)值。擋位劃分見表7-1。3.鎖存模塊在閘門信號的下降沿,對輸入的16位的計數(shù)值q及擋位信號scale進(jìn)行鎖存,由于鎖存是對閘門信號的下降沿進(jìn)行檢測完成鎖存的,因此能將scale數(shù)值在reset復(fù)位(計數(shù)模塊中的端口信)前鎖存。鎖存模塊的作用:設(shè)置鎖存模塊,既可避免計數(shù)值的丟失,還可以避免閘門信號計數(shù)期間,頻率計的顯示隨著計數(shù)值的增加不斷變化、閃爍。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)值。當(dāng)計數(shù)值示于4位計數(shù)值時,數(shù)碼管尤示數(shù)位數(shù)顯示;當(dāng)計數(shù)值4.顯示模塊將計數(shù)器所計得的數(shù)值顯示出來,并通過擋位信號,完成示數(shù)點定位顯示,通過顯示示數(shù)點位置不同的數(shù)值來完成相應(yīng)擋位的自動轉(zhuǎn)換。顯示模塊對數(shù)值的顯示譯碼要與設(shè)計的數(shù)碼管驅(qū)動電路相對應(yīng)。開發(fā)板上的數(shù)碼管為6連排數(shù)碼管,它們的位段信號端(稱為數(shù)據(jù)端)接在一起,同時還有6個位選信號(稱為控制端)用于分別選中要顯示數(shù)據(jù)的數(shù)碼管。根據(jù)開發(fā)板的電路及設(shè)計要求,顯示模塊采用顯示采用掃描驅(qū)動顯示,并以七段譯碼的方式輸出。

5.頂層模塊采用原理圖方式進(jìn)行組裝,具體方法參考7.3節(jié)有關(guān)內(nèi)容。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)4.顯示模塊下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)五、檢查分別編譯各底層模塊和整個電路設(shè)計,并分別仿真時鐘分頻、計數(shù)模塊、鎖模塊、顯示模塊、頂層模塊。通過后,若有條件,應(yīng)將源代碼下載到硬件中做最后的驗證。六、評估對本次設(shè)計進(jìn)行評估,可嘗試更好的方案、方法。寫出設(shè)計報告,設(shè)計報告應(yīng)包括所應(yīng)用到的EDA方法及知識的總結(jié)。返回上一頁§7.2完成工作任務(wù)的引導(dǎo)五、檢查返回上一頁§7.2完成工作任務(wù)的引導(dǎo)一、時鐘模塊參考設(shè)計---clock.vhd------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYclockISPORT(

§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能下一頁一、時鐘模塊參考設(shè)計§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能下下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能---復(fù)位信號

reset:INSTD_LOGIC;clk:INSTD_LOGIC;---閘門信號

tgate:OUTSTD_LOGIC;---1kHz顯示掃描時鐘

clklk:OUTSTD_LOGIC);ENDclock;ARCHITECTURErtlofclockIS------常數(shù)說明CONSTANTRESETACTIVE:STDLOGIC:=‘1’;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能----信號說明SIGNALc1k1M_reg:STD_LOGIC;SIGNALclklk_reg:STD_LOGIC;SIGNALc1k1Hz:STD_LOGIC;SIGNALtgate_reg:STD_LOGIC;

BEGIN------------------------------------------1MHz時鐘-----------------------------------ClkIM_Proc:PROCESS(reset,clk)VARIABLEcnt0:INTEGERRANGE0TO9;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能----信下一頁上一頁BEGINIFreset=RESETACTIVETHENcnt0:=0;ELSIFrising_edge(clk)THENIFcnt0=9THENcnt0:=0;c1k1M_reg<=notc1k1M_reg;ELSE

cnt0:=cnt0+1ENDIF;ENDIF;ENDPROCESS;§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能下一頁上一頁BEGIN§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能--------------------------------------------1kHz顯示掃描時鐘------------------------------------Clklk_Froc:PROCESS(reset,clklM_reg)VARIABLEcnt:INTEGERRANGE0TO500;BEGINIFreset=RESETACTIVETHENcnt:=0;ELSIFrising_edge(c1k1M_reg)THENIFcnt=499THENcnt:=0;clklk_reg<=notclklk_reg;

下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能-----------------------------

ELSEcnt:=cnt+1;ENDIF;ENDIF;ENDPROCESS;clklk<=clklk_reg;-------------------------------1kHz分頻得到1Hz---------------------------Clk1Hz_Proc:PROCESS(reset,clklk_reg)VARIABLEcnt2:INTEGERRANGE0TO499;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能ELSE下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技

BEGINIFreset=RESETACTIVETHENcnt2:=0;ELSIFrising_edge(clklk_reg)THENIFcnt2-499THENcnt2:=0;clklHz<=notc1k1Hz;ELSEcnt2:=cnt2+1;ENDIF;ENDIF;ENDPROCESS;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能BEGIN下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能---------------------------------一占空比為1/4頻率為0.25Hz的閘門信號---------------------------------Tgate_Froc:PROCESS(reset,clklHz)VARIABLEcnt3:INTEGERRANGE0TO3;BEGINIFreset=RESETACTIVETHENcnt3:=0;tgate_reg<='0';ELSIFrising_edge(c1k1Hz)THENIFcnt3=2THENtgatereg<='1';下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能-----cnt3:=3;ELSIFcnt3=3THENtgate_reg<='0';cnt3:=0;ELSEcnt3:=cnt3+1;ENDIF;ENDIF;

ENDPROCESS;tgate<=tgate_reg;ENDrtl;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能cnt3:=3;下一頁上一頁§7.3相關(guān)工程項目的建立及仿真:

首先打開Quartus軟件,選擇建立新工程項目選項,在出現(xiàn)的器件選擇窗口中可選擇開發(fā)板所用的芯片EP1C3144C8(也可在以后鎖定引腳時指定芯片的型號),如圖7-6所示。按提供的示例代碼建立clokc.vhd文件后編譯。編譯通過則說明clokc.vhd文件沒有語法錯誤,但不一定符合設(shè)計的要求,為了驗證文件是否符合設(shè)計,須對該文件建行仿真。時鐘模塊clokc.vhd的仿真步驟如下:1.仿真文件的建立(圖7-7)2.添加仿真的各個端口(圖7-8)3.設(shè)計各仿真的參數(shù)下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能工程項目的建立及仿真:下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知①設(shè)定輸入端口clk的頻率為20MHz;②由于只擊對模塊功能進(jìn)行驗證,修改仿真的模式為Functional,如圖7-9所示。對時鐘模塊仿真時要特別注意,由于從20MHz分頻至0.25Hz閘門信號的仿真運(yùn)算量太大,是無法完成一個閘門信號周期的仿真的。但由時鐘模塊的VHDL文件可以看出,我們是分步完成分頻的,從20MHz分頻到1kHz與從1kHz分頻到0.25Hz的算法是一致的,所以只需仿真出1kHz信號即可認(rèn)為時鐘模塊代碼是正,確。設(shè)定仿真的時間為10ms,仿真結(jié)果如圖7-10所示。查看仿真結(jié)果可知,clklk輸出信號的周期為1ms,程序達(dá)到了分頻要求。下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能①設(shè)定輸入端口clk的頻率為20MHz;下一二、計數(shù)模塊參考設(shè)計-----counter.vhd---LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYcounterISport(---全局復(fù)位

reset:INSTD_LOGIC;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能二、計數(shù)模塊參考設(shè)計下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識---閘門信號

tgate:INSTD_LOGIC;---待測信號

tsig:INSTD_LOGIC;---計數(shù)輸出q:OUTSTD_LOGIC_VECTOR(15DOWNTO0);---擋位輸出scale:OUTSTD_LOGIC_VECTOR(2DOWNTO0);ENDcounter;ARCHITECTURErtlofcounterIS------常數(shù)說明CONSTANTRESET_ACTIVE:STD_LOGIC:='0';下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能---閘門信號下一頁上一頁§7.3相關(guān)技------信號說明SIGNALc1:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALc2:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALc3:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALc4:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALc5:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALc6:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALscale_reg:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALoverflow:STD_LOGIC;BEGINCOUNT_PROC:PROCESS(reset,tsig,tgate)下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能------信號說明下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知

BEGINIFreset=RESETACTIVETHENc1<="0000";c2<="0000";c3<="0000";c4<="0000";c5<="0000";c6<="0000";overflow<='0';ELSIFrising_edge(tsig)THENIFtgate='1'THEN

下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能BEGIN下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與IFc1<”1001"THENc1<=c1+'1';ELSEc1<="0000";

IFc2<"1001"THENc2<=c2+'1';ELSEc2<="0000";IFc3<”1001"THENc3<=c3+'1';ELSEc3<="0000";

下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能IFc1<”1001"THEN下一頁上一頁§7.3相IFc4<”1001"THENc4<=c4+'1';ELSEc4<="0000";IFc5<”1001"THENc5<=c5+'1';ELSEc5<="0000";IFc6<”1001"THENc6<=c6+'1';ELSE----計數(shù)溢出

overflow<='1';下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能IF

ENDIF;ENDIF;ENDIF;ENDIF;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS:SCALE_PROC:PROCESS(reset,cl,c2,c3,c4,c5,c6,overflow)BEGINIFreset=RESETACTIVETHEN

下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能

scale_ref<="000";ELSIFoverflow='1'THEN

---->=1MHzscale_ref<="001";ELSIFc6/="0000"THEN---100.0kHz-999.9kHzq<=c6&c5&c4&c3;scale_ref<="010";ELSIFc5/="0000"THEN---10.00kHz一99.99kHzq<=c5&c4&c3&c2;scale_reg<="011";

下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能scale_ref<="000";下一頁上一頁§7.下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能

ELSIFc4/="0000"THEN---1.000kHz一9.999kHzq<=c4&c3&c2&c1;scale_ref<=”100";ELSE---1Hz-999Hzq<=”1111"&c3&c2&c1;scale_ref<=”101";ENDIF;ENDPROCESS;scale<=scale_reg;ENDrtl;下一頁上一頁§7.3相關(guān)技術(shù)基礎(chǔ)知識與基本技能E下一頁上一頁

計數(shù)模塊對應(yīng)不同頻率時仿真的輸出數(shù)值和對應(yīng)的擋位輸出。

計數(shù)模塊中將復(fù)位信號與閘門信號相連,當(dāng)閘門信號關(guān)閉時計數(shù)模塊復(fù)位情零,所以計數(shù)模塊為低電平復(fù)位。在設(shè)定復(fù)位信號與閘門信號脈沖時應(yīng)使兩者信號一致。

設(shè)定輸入信號頻率為5000Hz(周期為200s),如圖7-11所示。

仿真結(jié)果如圖7-12所示。

仿真所得結(jié)果數(shù)值的判斷:

①輸入5000Hz信號,正確,與擋位相符合。

②由于q是輸出端口,輸出的數(shù)值為q=5000,輸出的擋位§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁計數(shù)模塊對應(yīng)不同頻率時仿真的輸出數(shù)值下一頁上一頁為100,計數(shù)值在reset情零前已輸出至端口,因此閘門信號關(guān)閉后數(shù)值不改變,而scale輸出端口是通過信號scale_reg傳遞數(shù)值的,在SCALE_PROC進(jìn)程中,由于IFreset

=

RESET_ACTIVETHENscalereg<="000";因而仿真在閘門信號關(guān)閉后輸出為0,但可以通過后面的鎖存模塊,通過對閘門信號下降沿的檢測完成對scale情零前的鎖存輸出。③scale擋位隨q計數(shù)值的改變:

當(dāng)q計數(shù)值由二位數(shù)變化為四位數(shù)后,scale擋位應(yīng)由101變化為100。

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁為100,計數(shù)值在reset情零前已輸出至端口,下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能

對scale數(shù)值由101變化為100處的仿真圖形放大觀察,可以看到此時q的數(shù)值由999變化為1000,與擋位轉(zhuǎn)換表的要求相符,如圖7-13所示。

將仿真圖形放大,查看輸入信號脈沖計數(shù)及相應(yīng)的進(jìn)位,如圖7-14所示。

由仿真圖形可知,對輸入信號的每一個脈沖,計數(shù)信號c1都增加1,當(dāng)c1增加至10時,c1情零并向c2進(jìn)一位,符合我們十進(jìn)制數(shù)的計數(shù)和進(jìn)位要求。由仿真所得的結(jié)果,可知設(shè)計達(dá)到了要求。下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能三、鎖存模塊參考設(shè)計---lock.vhd----LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYlockISPORT(

---閘門信號tgate:INSTD_LOGIC;下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能三、鎖存模下一頁上一頁

---輸入信號

q_in:INSTD_LOGIC_VECTOR(15DOWNTO0);scale_in:INSTD_LOGIC_VECTOR(2DOWNTO0);

---鎖存信號q-lock:OUTSTD_LOGIC_VECTOR(15DOWNTO0);scale_lock:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDlock;ARCHITECTURErtloflockIS

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁---輸入信號§7.3相

BEGIN

LOCK_PROC:PROCESS(tgate)

BEGIN

IFfalling_edge(tgate)THENq_lock<=q_in;scale_lock<=scale_in;ENDIF;ENDPROCESS;

ENDrtl;

仿真結(jié)果如圖7-15所示。由仿真結(jié)果可知,在閘門信號的下降沿后,對輸入的輸出進(jìn)行了鎖存?!?.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁BEGIN§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上四、顯示模塊參考設(shè)計1.顯示模塊的代碼七段數(shù)碼管各段名稱及編號如圖7-16所示。----display.vhd----LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYdisplayISPORT(

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁四、顯示模塊參考設(shè)計§7.3相關(guān)技術(shù)基本知識與基本技能下下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能---復(fù)位信號reset:

INSTD_LOGIC;

---時鐘信號clklk:

INSTD_LOGIC;

---計數(shù)值q:INSTD_LOGIC_VECTOR(15DOWNTO0);

---擋位scale:INSTD_LOGIC_VECTOR(2DOWNTO0);

---7段數(shù)碼管譯碼輸出show:

OUTSTD_LOGIC_VECTOR(?DOWNTO0);

----數(shù)碼管選擇sel:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁ENDdisplay;ARCHITECTURErtlofdisplayIS---常數(shù)說明CONSTANTRESET_ACTIVE:STD_LOGIC:='1';---信號定義SIGNALsel_reg:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALq_reg:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALshow_reg:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALcount:STD_LOGIC_VECTOR(1DOWNTO0);BEGIN

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁ENDdisplay;§7.3相關(guān)技術(shù)基本下一頁上一頁

WHEN“00”=>

Fresent_State_Register:PROCESS(reset,clklk);

BEGINIFreset=RESETACTIVETHENcount<="00";ELSIFrising_edge(clklk)THENIFcount>="11"THENcount<="00";ELSEcount<=count+"O1";ENDIF;ENDIF;CASEcountIS§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁WHEN“00”=>§7.3相關(guān)下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能

---第一個數(shù)碼管亮

sel_reg<="0001";q_reg<=q(3DOWNTO0);

---第一個數(shù)碼管亮WHEN"O1"=>sel_reg<="0010";q_reg<=q(7DOWNTO4);---第二個數(shù)碼管亮

WHEN"10"=>

selreg<="0100";

q_reg<=q(11DOWNTO8);下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能---第四個數(shù)碼管亮

WHEN"11"=>

sel_reg<=”1000';

q_reg<=q(15DOWNTO12)

WHENothers=>

---所有數(shù)碼管全滅

sel_reg<="0000";q_red<="0000";ENDCASE;ENDPROCESS;

---注意:showreg不包含示數(shù)點位

下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁

WITHq_regSELECTshow_reg<="0111111"WHEN"0000","0000110"WHEN"0001",

"1011011"WHEN"0010",

"1001111"WHEN"0011",

"1100110"WHEN"0100",

"1101101"WHEN"0101",

"1111101"WHEN"0110","0100111"WHEN"0111",

"1111111"WHEN”1000",

"1101111"WHEN”1001",

"0000000"WHENothers;

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁WITHq_regSELECT§7show<='1'&showregWHEN(sel_reg="0010"ANDscale="010")OR(sel_reg="0100"ANDscale="01l")OR(sel_reg=”1000"ANDscale=”100")ELSE

---超量程時,4位數(shù)碼管全滅"00000000"WHENscale="001"ELSE

'0'&show_reg;

sel<=sel_reg;ENDrtl;

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁show<='1'&showregWHEN(sel_程序代碼解釋:數(shù)碼管的顯示代碼:通過count變量的改變完成數(shù)碼管片選掃描。sel_reg<="0001';q_reg<=q(3DOWNTO0)(第4位數(shù)碼的片選和顯示數(shù)值的傳遞)sel_reg<="0010';q_reg<=q(7DOWNTO4);(第3位數(shù)碼的片選和顯示數(shù)值的傳遞)sel_reg<="0100';q_reg<=q(11DOWNTO8);

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁程序代碼解釋:§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能

(第2位數(shù)碼的片選和顯示數(shù)值的傳遞)sel_reg<=”1000';q_reg<=q(15DOWNTO12);(第4位數(shù)碼的片選和顯示數(shù)值的傳遞)通過以上語句,將十六位的二進(jìn)計數(shù)值由高至低、四位一組傳遞到要顯示的相對應(yīng)的數(shù)碼管。通過Show_reg<=“0111111”WHEN“0000”,--數(shù)碼管顯示0“0000110”WHEN“0001”,--數(shù)碼管顯示1“1011011“WHEN”0010”,--數(shù)碼管顯示2“1001111”WHEN“0011”,--數(shù)碼管顯示3

下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能(下一頁上一頁

“1100110”WHEN“0100”,--數(shù)碼管顯示4“1101101”WHEN“0101”,--數(shù)碼管顯示5“1111101”WHEN“0110”,--數(shù)碼管顯示6“0100111”WHEN“0111”,--數(shù)碼管顯示7“1111111”WHEN

“1000”,--數(shù)碼管顯示8“1101111”WHEN

“1001”,--數(shù)碼管顯示9“0000000”WHENothers;--數(shù)4已管不顯示語句完成數(shù)碼管數(shù)值顯示的譯碼。通過show<=‘1’&show_regWHEN

(sel_reg="0010"ANDscale="010")OR§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁“11下一頁上一頁

(sel_reg="0100"ANDscale="01l")OR

(sel_reg=”1000"ANDscale=”100")ELSE---超量程時,4位數(shù)碼管全滅

“00000000”

WHENscale=“001”ELSE

'o'&show_reg;語句完成示數(shù)點該在哪位數(shù)碼管顯示。2.顯示模塊的仿真顯示模塊的仿真參數(shù)的設(shè)定:clklk周期為1ms,reset=0,仿真時間定為3s;對q的值設(shè)定(十六進(jìn)制):

0~1s期間為0123,1~2s期間為4500,2~3s期間為6789。

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁(sel_reg="0下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能

對scale的值設(shè)定(二進(jìn)制):0~1s期間為q=0123時相對應(yīng)的擋位值為101,1~3s期間為q=4500,q=6789時相對應(yīng)的擋位值為100。通過對輸入的端口q和scale不同值的設(shè)定,在仿真結(jié)果中就可以檢查是否能正,確地顯示數(shù)值0~9及正確的數(shù)值的示數(shù)點定位。q=0123時得到的仿真波形如圖7-17所示。查對應(yīng)的數(shù)碼管譯碼顯示,可知第四位顯示為3(sel:0001show:01001111)

第三位顯示為2(sel:0010show:01011011),

第二位數(shù)顯示為1(sel:0100

show:00000110),

第一位顯示為0(情注意,由于只是對display單個模塊仿真,下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能對q值的輸入是十六進(jìn)制,數(shù)值前加了0,所以數(shù)碼顯示出0,但下載到開發(fā)板后,數(shù)值前的0是不顯示的),數(shù)碼管顯示的數(shù)值由高到低的值為0123,與輸入的q值相符。q=4500時得到的仿真波形如圖7-18所示。

查對應(yīng)的數(shù)碼管譯碼顯示,可知第四、第二位顯示為0(sel:00010010show:00111111),第一位顯示為5(sel:010show:01101101),第一位數(shù)碼管顯示與前面不同,其最高位為數(shù)值1,當(dāng)該位為1時數(shù)碼管帶示數(shù)點顯示數(shù)值,所以該位顯示為4(sel:1000show:11100110),數(shù)碼管顯示的數(shù)值由高到低的值為4500,除顯示與輸入的q值相符外,還根據(jù)數(shù)值的大示自動轉(zhuǎn)換了顯示的量程。

下一頁上一頁§7.3相關(guān)技術(shù)基本知識與基本技能對q值的輸下一頁上一頁

查看q=4500時得到的仿真波形,讀出數(shù)碼管顯示的讀數(shù)為6789。由仿真的結(jié)果,可知代碼能正確地顯示0~9的數(shù)值,并能根據(jù)輸入的數(shù)值自動轉(zhuǎn)換量程顯示,達(dá)到了代碼設(shè)計的要求。五、系統(tǒng)的整體的組裝參考步驟新建一工程項目,將各模塊的vhd.文件添加到工程;

新建一原理圖設(shè)計文件,并將原理圖文件設(shè)為頂層文件。①編譯各模塊的vhd文件,選擇菜單命令File→Create/Update→CreateSymbol

FilesforCurrentFile,將各模塊生成工程項目元件。

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁查看q=4500時得到的仿真波形,讀

②打開原理圖設(shè)計文件,打開Symbol窗口,選擇Project選項,如圖7-19所示。

③將各項目元件圖加入原理圖設(shè)計文件中,連接各元件,完成原理圖設(shè)計文件,如圖7-20所示。

④對原理圖頂層文件編譯。六、下載驗證參考步驟1.鎖定引腳

根據(jù)開發(fā)板上各引腳的定義(可參考開發(fā)板的使用手冊或本章最后所附的引腳鎖定時項目端口在開發(fā)板上的對應(yīng)管腳資料),完成項目原理圖各引腳的鎖定,如圖7-21所示。

§7.3相關(guān)技術(shù)基本知識與基本技能下一頁上一頁②打開原理圖設(shè)計文件,打開Symbol窗口,選擇Pr

注意:完成引腳鎖定后必須對項目重新再編譯。

2.下載配置文件(采用JTAG模式,如圖7-22所示)至開發(fā)板運(yùn)行

要使下載后代碼能夠運(yùn)行,必須將系統(tǒng)復(fù)位輸入端口reset鎖定開發(fā)板相對應(yīng)引腳PIN_29上的撥碼開關(guān)撥至ON處,使系統(tǒng)不處在復(fù)位狀態(tài)。

下載運(yùn)行頻率計測量所得結(jié)果與信號發(fā)生器輸出的頻率相一致,如圖7-23和圖7-24所示。

附:引腳鎖定時項目端口在開發(fā)板上的對應(yīng)管腳資料(表7-2~表7-4,圖7-25~圖7-26)§7.3相關(guān)技術(shù)基本知識與基本技能返回上一頁注意:完成引腳鎖定后必須對項目重新再編譯?!?.3本章設(shè)計了一個數(shù)字頻率計,設(shè)計采用FPGA現(xiàn)場可編程門陣列為控制核心,通過硬件描述語言VHDL編程,在Quartus6.0平臺上編譯、仿真、調(diào)試,并下載到FPGA芯片上,能夠較準(zhǔn)確地測量方波信號的頻率,達(dá)到了設(shè)計要求?!?.4本章小結(jié)返回本章設(shè)計了一個數(shù)字頻率計,設(shè)計采用FPGA現(xiàn)場可編

圖7-1開發(fā)板時鐘電路返回圖7-1開發(fā)板時鐘電路

圖7-2時鐘模塊返回圖7-2時鐘模塊返回

圖7-3計數(shù)模塊返回圖7-3計數(shù)模塊返回

圖7-4鎖存模塊返回圖7-4鎖存模塊返回

圖7-5顯示模塊返回圖7-5顯示模塊返回

圖7-6系統(tǒng)芯片選定返回圖7-6系統(tǒng)芯片選定返回

圖7-7建立仿真文件返回圖7-7建立仿真文件返回

圖7-8添加仿真的各個端口返回圖7-8添加仿真的各個端口返回

圖7-9修改仿真的模式返回圖7-9修改仿真的模式返

圖7-10時鐘仿真模塊返回圖7-10時鐘仿真模塊返

圖7-11設(shè)定輸入信號頻率返回圖7-11設(shè)定輸入信號頻率返回

圖7-12計數(shù)模塊的仿真返回圖7-12計數(shù)模塊的仿真返回

圖7-13計數(shù)模塊仿真scale擋位

隨q計數(shù)值的改變返回圖7-13計數(shù)模塊仿真scale擋位

圖7-14計數(shù)模塊仿真輸入信號

脈沖計數(shù)及相應(yīng)的進(jìn)位返回圖7-14計數(shù)模塊仿真輸入信號

圖7-15鎖存仿真返回圖7-15鎖存仿真返回

圖7-16共陰極數(shù)碼管引腳圖返回圖7-16共陰極數(shù)碼管引腳圖返回圖7-17q=0123時得到的仿真波形返回圖7-17q=0123時得到的仿真波形返回圖7-18q=4500時得到的仿真波形返回圖7-18q=4500時得到的仿真波形返回

圖7-19選擇項目元件返回圖7-19選擇項目元件返回

圖7-20原理圖設(shè)計文件返回圖7-20原理圖設(shè)計文件返回

圖7-21原理圖各引腳的鎖定返回圖7-21原理圖各引腳的鎖定返回

圖7-22下載配置文件返回圖7-22下載配置文件返回圖7-23信號發(fā)生器輸出的方波返回圖7-23信號發(fā)生器輸出的方波返回圖7-24開發(fā)板程序下載運(yùn)行后

測得的頻率數(shù)顯返回圖7-24開發(fā)板程序下載運(yùn)行后

圖7-25開發(fā)板撥碼開關(guān)電路返回圖7-25開發(fā)板撥碼開關(guān)電路返回圖7-26IO管腳映射返回圖7-26IO管腳映射返回表7-1擋位劃分返回表7-1擋位劃分返回表7-2開發(fā)板系統(tǒng)時鐘引腳下一頁表7-2開發(fā)板系統(tǒng)時鐘引腳下一頁圖7-3開發(fā)板數(shù)碼管管腳映射表下一頁圖7-3開發(fā)板數(shù)碼管管腳映射表下一頁圖7-4開發(fā)板撥碼開關(guān)管腳映射表返回圖7-4開發(fā)板撥碼開關(guān)管腳映射表返回

【要求】

掌握VHDL語言中的各模塊的設(shè)計及最后各模塊的組裝

【知識點】理解EDA的分頻設(shè)計理解VHDL程序計數(shù)器的設(shè)計理解VHDL程序鎖存器的設(shè)計理解VHDL程序檔位轉(zhuǎn)換及數(shù)碼管顯示的設(shè)計理解VHDL程序元件的例化與組裝

【重點和難點】頻率計的測頻原理VHDL程序計數(shù)器的設(shè)計VHDL程序數(shù)碼管顯示的設(shè)計下一頁第7章應(yīng)用VHDL語言方法設(shè)計具有換擋功能的四位數(shù)字頻率計【要求】下一頁第7章應(yīng)用VHDL語言方法設(shè)計第7章應(yīng)用VHDL語言方法設(shè)計

八位二進(jìn)制加法器§7.1工作任務(wù)的陳述與背景§7.2完成工作任務(wù)的引導(dǎo)§7.3相關(guān)技術(shù)基本知識與基本技能§7.3本章小結(jié)上一頁第7章應(yīng)用VHDL語言方法設(shè)計

八位二進(jìn)一、任務(wù)的陳述設(shè)計一帶進(jìn)位功能的四位數(shù)碼管顯示的頻率計,其卞要參數(shù)如下:①頻率計的測量范圍為:0Hz~1MHz;②頻率計具有自動量程轉(zhuǎn)化功能;③頻率計通過四位數(shù)碼管顯示測量的頻率。二、項目的背景頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時我們稱閘門時間為1s。閘門時間也可以大于或示于1s。閘門時間越長,得到的頻率值就越準(zhǔn)確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測得頻率值刷新就越快,但測得的頻率精度就受影響?!?.1工作任務(wù)的陳述與背景返回一、任務(wù)的陳述§7.1工作任務(wù)的陳述與背景返回下一頁§7.2完成工作任務(wù)的引導(dǎo)一、資訊由前述可知,要完成好該工作任務(wù),需要準(zhǔn)備以下幾個方面的知識:①時鐘分頻的原理及實現(xiàn)的方法。②計數(shù)器的知識。③信號鎖存的原理。④數(shù)碼管譯碼顯示、片選及動態(tài)掃描的知識。⑤數(shù)字頻率計的工作原理。二、計劃數(shù)字頻率計的測頻方法有等精度測頻和計數(shù)測頻,從實現(xiàn)的技術(shù)手段來看目前可采取的有:下一頁§7.2完成工作任務(wù)的引導(dǎo)一、資訊下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)

①采用示規(guī)模數(shù)字集成電路制作;

②采用單片機(jī)進(jìn)行測頻控制;③采用現(xiàn)場可編程門陣列(FPGA)為控制核心。三、決策采用現(xiàn)場可編程門陣列(FPGA)為控制核心,利用VHDL語言編程,將所有器件集成在一塊芯片上,體積大大減示的同時還提高了穩(wěn)定性,可實現(xiàn)大規(guī)模和超大規(guī)模的集成電路,測頻測量精度高,測量頻率范圍大,而且編程靈活、調(diào)試方便。綜合上述分析,本設(shè)計采用現(xiàn)場可編程門陣列(FPGA)為控制核心測量方案。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)①采用示下一頁上一頁四、實施

(一)設(shè)計任務(wù)的詳細(xì)描述設(shè)計一個頻率計,其頻率測量范圍為1Hz~1MHz,顯示器件為4個8段數(shù)碼管(帶示數(shù)顯示)。根據(jù)測量所得的結(jié)果,可以白動轉(zhuǎn)換量程來顯示輸出的結(jié)果:如頻率為100Hz,顯示為F100;如頻率為5kHz,顯示為5.000;

如頻率為50kHz,顯示為50.00;如頻率為500kHz,顯示為500.0;當(dāng)輸入的頻率超過量程(>1MHz)時,數(shù)碼管滅(不顯示)?!?.2完成工作任務(wù)的引導(dǎo)下一頁上一頁四、實施§7.2完成工作任務(wù)的引導(dǎo)為了與實際工程設(shè)計更貼近,我們選擇天津啟東科技公司的TQD-CYC1C3FPGA+MCU開發(fā)板作為項目的硬件開發(fā)平臺,整個項目代碼最后下載至開發(fā)板上進(jìn)行驗證(相關(guān)程序代碼稍做修改也可用于康芯GW48EDA_PK2/PK3實驗箱上)。(二)設(shè)計方案計劃將整個項目在開發(fā)板上實現(xiàn)。根據(jù)開發(fā)板上的硬件電路及設(shè)計任務(wù)的要求,對系統(tǒng)設(shè)計方案進(jìn)行化分,將整個項目進(jìn)行模塊劃分。

1.時鐘模塊開發(fā)板上系統(tǒng)的時鐘為20MHz,如圖7-1所示。測頻的閘門信號為1S的高電平信號,同時將測頻所得結(jié)果顯示出來,在數(shù)碼管顯示時采用動態(tài)掃描的方法,需要產(chǎn)生1kHz的掃描信下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)為了與實際工程設(shè)計更貼近,我們選擇天津啟東科技公司號,所以要對系統(tǒng)的20MHz時鐘信號進(jìn)行分頻,以產(chǎn)生符合要求的各頻率信號:先由系統(tǒng)時鐘20MHz分頻出1kHz,再由1kHz分頻出1Hz,由1Hz的信號產(chǎn)生1s的計數(shù)閘門信號脈沖。該模塊作為系統(tǒng)的第一個模塊,還要接受測量信號的輸入,同時我們還給整個系統(tǒng)定義系統(tǒng)復(fù)位。由以上分析,可得出該模塊的系統(tǒng)框圖如圖7-2所示。

圖7-2中,Reset為復(fù)位引腳,clk為開發(fā)板系統(tǒng)時鐘的輸入,clklk為1kHz的輸出信號,tgate為1s的閘門輸出信號。

下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)號,所以要對系統(tǒng)的20MHz時鐘信號進(jìn)行分頻,以產(chǎn)生符合要

2.計數(shù)模塊(圖7-3)

在閘門脈沖電平為1時閘門開啟,計數(shù)器開始計數(shù),在閘門脈沖電平為0時,閘門關(guān)閉,計數(shù)器停止計數(shù)。同時,鎖存器產(chǎn)生一個鎖存信號輸送到鎖存器的使能端將結(jié)果鎖存,并把鎖存結(jié)果輸送到譯碼器來控制七段顯示器,這樣就可以得到被測信號的數(shù)字顯示的頻率。在閘門脈沖的下降沿到來時控制電路將計數(shù)器情零,為下一次測量做準(zhǔn)備,實現(xiàn)了可重復(fù)使用,避免兩次測量結(jié)果相加使結(jié)果產(chǎn)生錯誤。在整個電路中,計數(shù)模塊電路是關(guān)鍵,閘門信號脈沖寬度是否精確直接決定了測量結(jié)果是否精確。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)2.計數(shù)模塊(圖7-3)下一頁上一頁§7.2完成工作任下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)

3.鎖存模塊(圖7-4)

鎖存器在閘門信號關(guān)閉前(檢測閘門信號下降沿)實現(xiàn)鎖存,并把鎖存結(jié)果輸送到譯碼器來控制八段數(shù)碼顯示器。4.顯示模塊(圖7-5)

顯示模塊將鎖存模塊送過來的數(shù)值進(jìn)行譯碼顯示,并根據(jù)鎖存模塊送來的擋位信號確定示數(shù)點顯示的位置以實現(xiàn)擋位的顯示。(三)模塊的設(shè)計及實現(xiàn)1.時鐘分頻分頻原理及分頻系數(shù)的設(shè)定:開發(fā)板的時鐘頻率設(shè)為20MHz,而為了給其他模塊提供所需的各時鐘,需對20MHz的時鐘進(jìn)行分頻:下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)3.鎖存模塊(圖①從20MHz分頻得到1kHz;②從1kHz分頻得到1Hz;③由1Hz得到占空比為1/4高電平時間為1s的閘門信號。分頻原理及分頻系數(shù)的設(shè)定:為了從20MHz分頻得到1kHz,我們設(shè)定為一次分頻,即由20MHz分頻為1MHz,由1MHz分頻得1kHz。須設(shè)定分頻的系數(shù):20MHz與1MHz相差20倍,20/2=10,設(shè)定分頻變量為0~9,1MHz與1kHz相差1000倍,1000/2=500,所以可以設(shè)分頻的變量為VARIABLEcnt:INTEGERRANGE0TO499,而從1kHz分頻得到1Hz,設(shè)分頻變量為0~499。下一頁上一頁§7.2完成工作任務(wù)的引導(dǎo)①從20MHz分頻得到1kHz;下一頁上一頁§72.計數(shù)模塊

(1)計數(shù)的原理及采用的計數(shù)方法采用在閘門信號開啟期間對輸入信號脈沖進(jìn)行計數(shù)的方法進(jìn)行測頻,當(dāng)閘門信號開啟時計數(shù),當(dāng)閘門

溫馨提示

  • 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

提交評論