數(shù)字秒表設(shè)計(終結(jié)版)_第1頁
數(shù)字秒表設(shè)計(終結(jié)版)_第2頁
數(shù)字秒表設(shè)計(終結(jié)版)_第3頁
數(shù)字秒表設(shè)計(終結(jié)版)_第4頁
數(shù)字秒表設(shè)計(終結(jié)版)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南機電高等專科學??删幊踢壿嬈骷砼c應用課程設(shè)計報告數(shù)字秒表設(shè)計專業(yè)班級: 醫(yī)電131 學 號: 130411116 姓 名: 徐長偉 時 間: 2015年6月 成 績: 數(shù)字秒表設(shè)計摘要:本次設(shè)計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對計算機系統(tǒng)中時鐘控制系統(tǒng)進一步了解,掌握狀態(tài)機工作原理,同時了解計算機時鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學的計算機組成與結(jié)構(gòu)課程理論知識時,通過對數(shù)字秒表的設(shè)計,進行理論與實際的結(jié)合,提高與計算機有關(guān)設(shè)計能力,提高分析、解決計算機技術(shù)實際問題的能力。通過課程設(shè)計深入理解計算機結(jié)構(gòu)與控制實現(xiàn)的技術(shù),達到課程設(shè)計的目標。關(guān)鍵詞:

2、FPGA;數(shù)字秒表;VHDL 目錄1.概述32.設(shè)計要求42.1實驗任務(wù)及要求43.總體構(gòu)思43.1系統(tǒng)總體框圖44.各單元電路的設(shè)計和實現(xiàn)54.1數(shù)字秒表的電路邏輯圖54.2時序波形圖如下:74.3頂層程序框圖如下:85.功能仿真及其結(jié)果85.1分頻模塊85.2計數(shù)模塊95.3勢能控制模塊105.4顯示控制模塊116.編譯、下載及調(diào)試136.1各功能模塊VHDL程序十分之一秒137.總結(jié)271.概述超高速硬件描述語言VHDL是數(shù)字系統(tǒng)進行抽象的行為與功能描述道具體的內(nèi)部線路結(jié)構(gòu)描述,利用EDA工具可以在電子設(shè)計的各個階段各個層系進行計算機模擬驗證,保證設(shè)計過程中的正確性,可大大降低設(shè)計成本,

3、縮短設(shè)計周期。本文介紹的數(shù)字秒表設(shè)計,。利用基于VHDL的EDA設(shè)計工具,采用大規(guī)??删幊踢壿嬈骷﨔PGA,通過設(shè)計芯片來實現(xiàn)系統(tǒng)功能。應用VHDL語言設(shè)計數(shù)字系統(tǒng),很多設(shè)計工作可以在計算機上完成,從而縮短了系統(tǒng)的開發(fā)時間,提高了工作效率。本文介紹一種以FPGA為核心,以VHDL為開發(fā)工具的數(shù)字秒表,并給出源程序和仿真結(jié)果。2.設(shè)計要求2.1實驗任務(wù)及要求設(shè)計用于體育比賽用的數(shù)字秒表,要求:1.及時精度大雨1/1000秒,計數(shù)器能顯示1/1000秒時間,提供給計時器內(nèi)部定時的始終頻率為12MHz;計數(shù)器的最長計時時間為1小時,為此需要一個7位的顯示器,顯示的最長時間為59分59.999秒。2、

4、設(shè)計有復位和起/停開關(guān)。 (1)、復位開關(guān)用來使計時器清零,并做好計時準備。 (2)、起/停開關(guān)的使用方法與傳統(tǒng)的機械式計數(shù)器相同,即按一下起/停開關(guān),啟動計時器開始計時,再按一下起/停開關(guān)計時終止。 (3)、復位開關(guān)可以在任何情況下使用,即使在計時過程中,只要按一下復位開關(guān),計時進程理科終止,并對計時器清零。3、采用層次設(shè)計方法設(shè)計符合上述功能要求的數(shù)字秒表。4、對電路進行功能仿真,通過波形確認電路設(shè)計是否正確。5、完成電路傳布設(shè)計后,通過實驗箱下載驗證設(shè)計的正確性。3.總體構(gòu)思3.1系統(tǒng)總體框圖數(shù)字秒表主要有分頻器、計數(shù)模塊、功能控制模塊、勢能控制模塊和顯示輸出模塊組成。系統(tǒng)框圖如圖3-1

5、所示。圖表 3-1本次的設(shè)計仿真選用以EP1C6Q240芯片為核心的FPGA開發(fā)板,該開發(fā)板提供了較完善的外圍周邊電路和信號接口,并提供了一塊4位7段數(shù)碼管的擴展板,為本次設(shè)計提供了硬件條件。在設(shè)計中,功能控制模塊根據(jù)控制選擇不同的功能狀態(tài)的時間輸出,通過勢能控制模塊和顯示輸出模塊驅(qū)動7段數(shù)碼管顯示相應的時間。4.各單元電路的設(shè)計和實現(xiàn)4.1數(shù)字秒表的電路邏輯圖圖表 4-14.2時序波形圖如下:圖表 4-24.3頂層程序框圖如下:清零CLR開關(guān)ENA時鐘CLK十分之一秒秒個位(10進制)秒十位(6進制)分個位(10進制)分十位(6進制)鬧鐘(預置時間)圖表 4-35.功能仿真及其結(jié)果5.1分頻

6、模塊開發(fā)板提供的系統(tǒng)時鐘為50 MHz,通過分頻模塊3次分頻,將系統(tǒng)的時鐘信號分為100 Hz和1 000 Hz分別提供給計數(shù)模塊和勢能控制模塊作為時鐘控制信號。該模塊部分VHDL源程序如下:5.2計數(shù)模塊計數(shù)模塊中,時鐘信號是100 Hz作為秒表的百分秒輸入,百分秒為100進制計數(shù)器,其進位輸出作為秒的計數(shù)時鐘,秒為60進制計數(shù)器??刂菩盘栞斎攵说腷egin-stop和reset信號控制計數(shù)器的開始、停止和至零。該模塊部分VHDL源程序如下,方針結(jié)果如圖5-1所示:圖表 5-15.3勢能控制模塊本次設(shè)計選用的開發(fā)板數(shù)碼管擴展板的數(shù)碼顯示采用的是4個數(shù)碼管動態(tài)掃描輸出,一般只要每個掃描頻率超過

7、人的眼睛視覺暫留頻率24 Hz以上就可以達到點亮單個顯示而不閃爍,掃描頻率采用1 kHz信號。通過勢能控制,每個的顯示頻率為250 Hz,滿足顯示要求。該模塊部分VHDL源程序如下:5.4顯示控制模塊本次設(shè)計選用的開發(fā)板在4位數(shù)碼管輸入方面只提供1個數(shù)據(jù)接口,用來動態(tài)顯示4位數(shù)據(jù),在數(shù)據(jù)輸入信號方面要做到和勢能控制信號同頻率輸出,才能保證數(shù)碼顯示不會出錯或顯示移位。該模塊部分VHDL源程序如下: 同時通過控制信號示系統(tǒng)處在不同的功能狀態(tài):系統(tǒng)時間運行狀態(tài),系統(tǒng)時間至零狀態(tài),時鐘正常顯示狀態(tài)。利用功能轉(zhuǎn)換信號實現(xiàn)3個功能狀態(tài)之間的轉(zhuǎn)換,并產(chǎn)生相應的控制信號去控制顯示輸出模塊不同狀態(tài)的正確顯示。其

8、部分源程序如下:各部分模塊完成后,用Quartus對程序編譯、仿真、得到的仿真波形如圖5-2所示。圖表 5-2本系統(tǒng)采用的FPGA芯片為Altera公司的EP1C6Q240,用VHDL和Quartus軟件工具開發(fā),設(shè)計輸入完成后,進行整體的編譯和邏輯仿真,然后進行轉(zhuǎn)換、延時仿真生成配置文件,最后下載至FPGA器件,完成結(jié)果功能配置,實現(xiàn)其硬件功能。6.編譯、下載及調(diào)試6.1各功能模塊VHDL程序十分之一秒library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MINSECONDb ispor

9、t(clk,clrm,stop:in std_logic; secm0:out std_logic_vector(3 downto 0); co:out std_logic);end MINSECONDb;architecture SEC of MINSECONDb isbeginprocess(clk,clrm)variable cnt0:std_logic_vector(3 downto 0); beginif clrm='1' thencnt0:="0000"elsif clk'event and clk='1'then if

10、stop='0'thenif cnt0="1001" thenco<='1'cnt0:="0000"elsif cnt0<"1001" thencnt0:=cnt0+1;co<='0'end if;else cnt0:=cnt0;end if;end if;secm0<=cnt0;end process;end SEC;秒library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all

11、;entity SECOND isport(clk,clr:in std_logic; sec1,sec0:out std_logic_vector(3 downto 0); co:out std_logic);end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='1' thencnt1:="0000"cnt0:="0000"elsif clk'

12、;event and clk='1' thenif cnt1="0101" and cnt0="1000" thenco<='1'cnt0:="1001"elsif cnt0<"1001" thencnt0:=cnt0+1;co<='0'elsecnt0:="0000"if cnt1<"0101" thencnt1:=cnt1+1;elsecnt1:="0000"co<='

13、;0'end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MINUTE isport(clk,en,clr:in std_logic; min1,min0:out std_logic_vector(3 downto 0); co:out std_logic);end MINUTE;architecture MIN of MINUTE isbe

14、ginprocess(clk)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='1' thencnt1:="0000"cnt0:="0000"elsif clk'event and clk='1' thenif en='1' thenif cnt1="0101" and cnt0="1000" thenco<='1'cnt0:="1001"elsi

15、f cnt0<"1001" thencnt0:=cnt0+1;elsecnt0:="0000"if cnt1<"0101" thencnt1:=cnt1+1;co<='0'elsecnt1:="0000"end if;end if;end if;end if;min1<=cnt1;min0<=cnt0;end process;end MIN;鬧鐘library ieee;use ieee.std_logic_1164.all;entity nz isport(clk:i

16、n std_logic; time:in std_logic_vector(23 downto 0); h1,h0,m1,m0,s1,s0:in std_logic_vector(3 downto 0); qlk:out std_logic);end nz;architecture sss_arc of nz is begin process(clk) begin if clk'event and clk='1' then if (h1=time(23 downto 20) and h0=time(19 downto 16) and m1=time(15 downto

17、12) and m0=time(11 downto 8) and s1=time(7 downto 4)and s0=time(3 downto 0)then qlk<='1' else qlk<='0' end if; end if;end process;end sss_arc;頂層程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity time2 isport(clk,clr,stop,en,led:in std_logic; time:

18、in std_logic_vector(23 downto 0); qlk:out std_logic; hou1,hou0,m1,m0,s1,s0,sm0:out std_logic_vector(3 downto 0);end time2;architecture bav of time2 iscomponent MINSECONDb port(clk,clrm,stop:in std_logic; secm0:out std_logic_vector(3 downto 0); co:out std_logic);end component;component SECOND port(cl

19、k,clr:in std_logic; sec1,sec0:out std_logic_vector(3 downto 0); co:out std_logic);end component;component MINUTEport(clk,en,clr:in std_logic; min1,min0:out std_logic_vector(3 downto 0); co:out std_logic);end component;component HOUR port(clk,en,clr,led:in std_logic; h1,h0:out std_logic_vector(3 down

20、to 0);end component;component nzport(clk:in std_logic; time:in std_logic_vector(23 downto 0); h1,h0,m1,m0,s1,s0:in std_logic_vector(3 downto 0); qlk:out std_logic);end component; signal c:std_logic;signal c1:std_logic;signal c2:std_logic;signal a1,a0,b1,b0,d1,d0,dm0:std_logic_vector(3 downto 0);begi

21、n hou1<=a1;hou0<=a0;m1<=b1;m0<=b0;s1<=d1;s0<=d0;sm0<=dm0; u1:MINSECONDb port map(clk=>clk,clrm=>clr,stop=>stop,secm0=>dm0,co=>c); u2:SECOND port map(clk=>c,clr=>clr,sec1=>d1,sec0=>d0,co=>c1); u3:MINUTE port map(clk=>c1,clr=>clr,min1=>b1,min

22、0=>b0,en=>en,co=>c2); u4:HOUR port map(clk=>c2,clr=>clr,h1=>a1,h0=>a0,en=>en,led=>led); u5:nz port map(clk=>clk,h1=>a1,h0=>a0,m1=>b1,m0=>b0,s1=>d1,s0=>d0,qlk=>qlk, time=>time);end bav;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un

23、signed.all;entity MINSECONDb isport(clk,clrm,stop:in std_logic; secm0:out std_logic_vector(3 downto 0); co:out std_logic);end MINSECONDb;architecture SEC of MINSECONDb isbeginprocess(clk,clrm)variable cnt0:std_logic_vector(3 downto 0); beginif clrm='1' thencnt0:="0000"elsif clk'

24、;event and clk='1'then if stop='0'thenif cnt0="1001" thenco<='1'cnt0:="0000"elsif cnt0<"1001" thencnt0:=cnt0+1;co<='0'end if;else cnt0:=cnt0;end if;end if;secm0<=cnt0;end process;end SEC;library ieee;use ieee.std_logic_1164.al

25、l;use ieee.std_logic_unsigned.all;entity SECOND isport(clk,clr:in std_logic; sec1,sec0:out std_logic_vector(3 downto 0); co:out std_logic);end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='1' thencnt1:="0000"cn

26、t0:="0000"elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" thenco<='1'cnt0:="1001"elsif cnt0<"1001" thencnt0:=cnt0+1;co<='0'elsecnt0:="0000"if cnt1<"0101" thencnt1:=cnt1+1;else

27、cnt1:="0000"co<='0'end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MINUTE isport(clk,en,clr:in std_logic; min1,min0:out std_logic_vector(3 downto 0); co:out std_logic);end MINUTE

28、;architecture MIN of MINUTE isbeginprocess(clk)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='1' thencnt1:="0000"cnt0:="0000"elsif clk'event and clk='1' thenif en='1' thenif cnt1="0101" and cnt0="1000" thenco<='

29、1'cnt0:="1001"elsif cnt0<"1001" thencnt0:=cnt0+1;elsecnt0:="0000"if cnt1<"0101" thencnt1:=cnt1+1;co<='0'elsecnt1:="0000"end if;end if;end if;end if;min1<=cnt1;min0<=cnt0;end process;end MIN;library ieee;use ieee.std_logic_1

30、164.all;use ieee.std_logic_unsigned.all;entity HOUR isport(clk,en,clr,led:in std_logic; h1,h0:out std_logic_vector(3 downto 0);end HOUR;architecture hour_arc of HOUR isbeginprocess(clk)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='1' thencnt1:="0000"cnt0:="0000&

31、quot;elsif clk'event and clk='1' thenif en='1' thenif led='1' thenif cnt1="0010" and cnt0="0011" thencnt1:="0000"cnt0:="0000"elsif cnt0<"1001" thencnt0:=cnt0+1;elsif cnt0="1001" thencnt1:=cnt1+1;cnt0:="0000"end if;else if cnt1="0001" and cnt0="0001" thencnt1:="0000"cnt0:="0000"elsif cnt0<&q

溫馨提示

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

評論

0/150

提交評論