




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)院fpga設(shè)計實踐報告題目: 數(shù)字秒表的設(shè)計 院系: 計算機與信息工程學(xué)院 專業(yè): 電子科學(xué)與技術(shù) 年級 姓名: 學(xué)號: 指導(dǎo)老師: 一、課程設(shè)計目的: 本課程的授課對象是電子科學(xué)與技術(shù)專業(yè)本科生,是電子類專業(yè)的一門重要的實踐課程,是理論與實踐相結(jié)合的重要環(huán)節(jié)。本課程有助于培養(yǎng)學(xué)生的數(shù)字電路設(shè)計方法、掌握模塊劃分、工程設(shè)計思想與電路調(diào)試能力,為以后從事各種電路設(shè)計、制作與調(diào)試工作打下堅實的基礎(chǔ)。二、課程設(shè)計要求: l. 設(shè)計用于體育比賽用的數(shù)字秒表, 要求: 計時精度應(yīng)大于l/100s, 計時器能顯示1/100s的時間, 提供給計時器內(nèi)部定時的時鐘脈沖頻率應(yīng)大于l00hz, 這里選用 1kh
2、z 。 計時器的最長計時時間為l小時, 為此需要一個6位的顯示器, 顯示的最長時間為59分59.99秒。2. 設(shè)置有復(fù)位和起/停開關(guān) 復(fù)位開關(guān)用來使計時器清零, 并作好計時準(zhǔn)備。 起/停開關(guān)的使用方法與傳統(tǒng)的機械式計時器相同, 即按一下起/停開關(guān), 啟動計時器開始計時, 再按一下起/停開關(guān)計時終止。 復(fù)位開關(guān)可以在任何情況下使用,即使在計時過程中, 只要按一下復(fù)位開關(guān), 計時進程立刻終止, 并對計時器清零。3. 復(fù)位和起/停開關(guān)應(yīng)有內(nèi)部消抖處理。4. 采用vhdl語言用層次化設(shè)計方法設(shè)計符合上述功能要求的數(shù)字秒表。5. 對電路進行功能仿真, 通過有關(guān)波形確認(rèn)電路設(shè)計是否正確。6. 完成電路全部
3、設(shè)計后, 通過系統(tǒng)實驗箱下載驗證設(shè)計課題的正確性。三、系統(tǒng)組成與工作原理:數(shù)字秒表框圖: 1、電路原理圖 : 2、工作原理:l.計時控制器作用是控制計時。計時控制器的輸入信號是啟動、暫停和清零。為符合慣例, 將啟動和暫停功能設(shè)置在同一個按鍵上, 按一次是啟動, 按第二次是暫停, 按第三次是繼續(xù)。所以計時控制器共有2個開關(guān)輸入信號, 即啟動/暫停和清除。計時控制器輸出信號為計數(shù)允許/保持信號和清零信號。2. 計時電路的作用是計時, 其輸入信號為lkhz 時鐘、計數(shù)允許/保持和清零信號, 輸出為l0ms、l00ms、s 和 min 的計時數(shù)據(jù)。3. 時基分頻器是一個l0分頻器, 產(chǎn)生l0ms周期的
4、脈沖, 用于計時電路時鐘信號。4. 顯示電路為動態(tài)掃描電路, 用以顯示十分位、min、10s、s、100ms 和10ms 信號。三、系統(tǒng)設(shè)計的實現(xiàn):要滿足數(shù)字秒表的精度,首先應(yīng)該獲得精確的計時基準(zhǔn)信號,這里的系統(tǒng)精度要求為l/100s, 計時器能顯示1/100s的時間, 提供給計時器內(nèi)部定時的時鐘脈沖頻率應(yīng)大于l00hz, 這里選用1khz,因此每來1000個外界輸入脈沖就輸出一個頻率,該頻率的時間周期正好為0.01s,即先將外界脈沖進行1mhz100hz的分頻。 0.1s、1s、1min等計時單位之間的進位轉(zhuǎn)換可以通過十進制與六進制計數(shù)器來實現(xiàn)。每位計數(shù)器均能輸出相應(yīng)計時單位計數(shù)結(jié)果,其中十
5、進制計數(shù)器可以實現(xiàn)0.01s、0.1s、1s和1min單位單元的計數(shù);六進制可以實現(xiàn)10s、10min為單位的計數(shù)。由于秒表需要具有異步清零和啟動/暫停功能,因此可以將每個計數(shù)器都設(shè)置異步清零和啟動/暫停輸入端口,再將各計數(shù)器進行級聯(lián),即可同步顯示不同量度單位的計時內(nèi)容,如圖所示 圖中,u0模塊用于將外界脈沖進行1mhz100hz的分頻,從而得到0.01s的脈沖信號,u1用于實現(xiàn)0.1s的脈沖信號,u2用于實現(xiàn)1s的脈沖信號,u3和u4用于實現(xiàn)1min的脈沖信號,u5和u6用于實現(xiàn)1h的脈沖信號。除u0外,u1u6的cq可驅(qū)動顯示帶譯碼器的七段led進行數(shù)字顯示。通過上述分析可知,數(shù)字秒表的構(gòu)
6、成實際上依賴于三個基本模塊,即1mhz100hz的分頻模塊、十進制計數(shù)器模塊和六進制計數(shù)器模塊,然后使用一個頂層模塊將這些基本模塊通過元件調(diào)用與映射的關(guān)系進行有機的結(jié)合。start程序初始化clk、clr、ena計時顯示結(jié)果總體流程圖如下:1、頂層模塊程序 由于十進制計數(shù)器模塊和六進制計數(shù)器模塊會產(chǎn)生計數(shù)溢出信號,而這些溢出信號有可能作為下一計數(shù)器的時鐘輸入脈沖,因此在頂層模塊程序結(jié)構(gòu)體中需要定義相應(yīng)的暫存計數(shù)溢出信號。頂層模塊程序編寫如下:-數(shù)字秒表的頂層模塊程序miaobiao.vhdlibrary ieee;use ieee.std_logic_1164.all;entity miaob
7、iao is port(clr:in std_logic; -定義清零輸入端 clk:in std_logic; -定義外界時鐘脈沖輸入端 ena:in std_logic; -定義啟動/暫停輸入端 dout:out std_logic_vector(23 downto 0); -定義秒表顯示輸出端end miaobiao;architecture art of miaobiao iscomponent clkgen -定義3mhz到100hz的分頻計數(shù)器元件 port(clk:in std_logic; -定義3mhz到100hz的分頻計數(shù)器所使用的端口 newclk:out std_log
8、ic);end component;component cnt10 -定義十進制計數(shù)器元件 port(clk,clr,ena:in std_logic; -定義十進制計數(shù)器所使用的端口 cq:out std_logic_vector(3 downto 0); carry_out:out std_logic);end component;component cnt6 -定義六進制計數(shù)器元件 port(clk,clr,ena:in std_logic; -定義六進制計數(shù)器所使用的端口 cq:out std_logic_vector(3 downto 0); carry_out:out std_lo
9、gic);end component;signal newclk:std_logic;signal carry1:std_logic;signal carry2:std_logic; -暫存計數(shù)溢出信號signal carry3:std_logic;signal carry4:std_logic;signal carry5:std_logic;begin-使用元件例化語句,通過基本模塊的級聯(lián)實現(xiàn)數(shù)字秒表u0:clkgen port map(clk=clk,newclk=newclk);u1:cnt10 port map(clk=newclk,clr=clr,ena=ena, cq=dout(3
10、 downto 0),carry_out=carry1);u2:cnt10 port map(clk=carry1,clr=clr,ena=ena, cq=dout(7 downto 4),carry_out=carry2);u3:cnt10 port map(clk=carry2,clr=clr,ena=ena, cq=dout(11 downto 8),carry_out=carry3);u4:cnt6 port map(clk=carry3,clr=clr,ena=ena, cq=dout(15 downto 12),carry_out=carry4);u5:cnt10 port map
11、(clk=carry4,clr=clr,ena=ena, cq=dout(19 downto 16),carry_out=carry5);u6:cnt6 port map(clk=carry5,clr=clr,ena=ena, cq=dout(23 downto 20);end art;頂層仿真波形: 2、 50mhz1khz分頻模塊程序 50mhz1khz分頻模塊程序流程圖如圖所示,使用vhdl編寫程序時,在實體中應(yīng)定義1kmhz的時鐘頻率輸入端和100hz的時鐘脈沖輸出端。1khz時鐘輸入每來一個脈沖,cnter是否為999?cente清零newclk輸出為高電平得到100hz的輸出脈沖c
12、nter+1newclk輸出為低電平ny 在結(jié)構(gòu)體的說明語句中,定義一個頻率脈沖計數(shù)信號(cnter),該信號的類型為整數(shù)型,計數(shù)范圍為0999。在結(jié)構(gòu)體的功能描述語句中,可使用個進程(u1和u2)來完成 50mhz1khz的頻率描述。在u1中,每次檢測到一個上升沿輸入脈沖時,先通過if語句檢測輸入信號是否為上升沿。若是上升沿,再使用if語句判斷當(dāng)前計數(shù)值(cnter)是否等于999,如果相等,則將cnter清零,為輸出下一個100hz的頻率做準(zhǔn)備,否則將cnter加1。在u2中判斷cnter是否等于999,若果相等,將newclk輸出為高電平,否則輸出為低電平。1kmhz100hz分頻模塊程
13、序編寫如下:library ieee;use ieee. std_logic_1164.all;entity clkgen is port( clk:in std_logic; -定義3mhz脈沖輸入端 newclk:out std_logic ); -定義100hz脈沖輸出端end clkgen;architecture art of clkgen is signal cnter:integer range 0 to 10#299999#; -暫存輸入脈沖個數(shù) begin u1: process(clk) begin if clkevent and clk=1 then if cnter=1
14、0#299999# then cnter=0; -判斷輸入脈沖個數(shù)是否為3000(029999) else cnter=cnter+1; end if; end if; end process u1; u2: process(cnter) -計數(shù)溢出信號控制 begin if cnter=10#299999# then newclk=1; -3mhz信號變?yōu)?00hz else newclk=0; end if; end process u2; end art;分頻仿真波形:3、十進制計數(shù)器模塊程序 十進制計數(shù)模塊程序流程圖如下,使用vhdl編寫程序時,在實體中定義時鐘脈沖輸入端(clk)、異
15、步清零輸入端(clr)、啟動暫??刂贫耍╡na)、計數(shù)脈沖輸出端cq和計數(shù)脈沖溢出端(carry_out)。y開始清零信號是否有效?輸出脈沖是否為上升沿?是否允許計數(shù)?cq清零計數(shù)值是否等于9?計數(shù)值加1溢出信號輸出為高電平計數(shù)值清零溢出信號輸出為低電平y(tǒng)nynnyn 由于cq的方向定義為out,在結(jié)構(gòu)體中不能對輸入脈沖進行加1計數(shù),因此在結(jié)構(gòu)體的說明語句中應(yīng)定義一個頻率脈沖計數(shù)信號(cqi),通過cqi來進行加1控制。 在結(jié)構(gòu)體的功能描述語句中可使用2個進程(u1和u2)來完成十進制計數(shù)器的功能描述。在u1中,先判斷清零信號(clr)是否有效,若有效時,將cqi清零,否則檢測輸入脈沖。每次檢
16、測到一個上升沿輸入脈沖時,通過if語句檢測輸入信號是否為上升沿。若是上升沿,在判斷是否允許計數(shù)(即ena是否有效)。若ena無效,則暫停計數(shù),否則再使用if語句判斷當(dāng)前計數(shù)值(cqi)是否等于“1001”(即整數(shù)9),如果相等,則將cqi清零,肉則cqi加1,。在u2中判斷cqi是否等于“1001”,如果相等,產(chǎn)生溢出信號(carry_out=1),否則carry_out輸出為低電平(carry_out=0).十進制計數(shù)器模塊程序編寫如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entit
17、y cnt10 isport(clk:in std_logic; clr:in std_logic; ena:in std_logic; cq:out std_logic_vector(3 downto 0);carry_out:out std_logic);end cnt10;architecture art of cnt10 issignal cqi:std_logic_vector(3 downto 0);begin u1:process(clk,clr,ena) begin if clr=1then cqi=0000; elsif clkevent and clk=1then if e
18、na=1then u1:for n in 15 downto 0 loop u2:for i in 15 downto 0 loop end loop u2; end loop u1; if ena=1 then if cqi=1001 then cqi=0000; else cqi=cqi+1; end if; end if; end if; end if; end process u1;u2:process(cqi)begin if cqi=0000 then carry_out=1; else carry_out=0; end if; end process u2; cq=cqi;end
19、 art;十進制仿真波形:4、六進制計數(shù)器模塊程序 六進制計數(shù)器模塊的程序編寫思路與十進制計數(shù)器模塊類似,只不過將cqi的判斷值由“1001”改為“0101”即可。六進制計數(shù)器模塊程序編寫如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk:in std_logic; clr:in std_logic; ena:in std_logic; cq:out std_logic_vector(3 downto 0);carry_out:out std_log
20、ic);end cnt6;architecture art of cnt6 issignal cqi:std_logic_vector(3 downto 0);begin u1:process(clk,clr,ena) begin if clr=1then cqi=0000; elsif clkevent and clk=1then if ena=1then u1:for n in 15 downto 0 loop u2:for i in 15 downto 0 loop end loop u2; end loop u1; if ena=1 then if cqi=0101 then cqi=0000; else cqi=cqi+1; e
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同范本林業(yè)
- 傳單派發(fā)合同范本
- 鄉(xiāng)鎮(zhèn)物業(yè)收費合同范本
- 勞務(wù)公司租車合同范本
- 公會主播合同范本
- 勞務(wù)購買合同范例
- 公司經(jīng)營模式合同范本
- 出售買賣合同范本
- 勞動合同轉(zhuǎn)簽合同范本
- 2025國合通測校園招聘筆試參考題庫附帶答案詳解
- 消防員班長培訓(xùn)課件
- 醫(yī)師資格認(rèn)定申請審核表
- 04干部人事檔案目錄
- (新湘科版)六年級下冊科學(xué)知識點
- MLL基因重排成人急性B淋巴細(xì)胞白血病和急性髓系白血病臨床特征及預(yù)后危險因素分析
- 雅思學(xué)習(xí)證明范本范例案例模板
- 磁共振成像(MRI)基本知識及臨床應(yīng)用
- 電廠深度調(diào)峰運行對機組的影響
- 分布式光伏電站勘查收資清單
- 產(chǎn)品不良品(PPM)統(tǒng)計表格模板
- 品管圈PDCA提高手衛(wèi)生依從性-手衛(wèi)生依從性品
評論
0/150
提交評論