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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

8、部分源程序如下:各部分模塊完成后,用Quartus對(duì)程序編譯、仿真、得到的仿真波形如圖5-2所示。圖表 5-2本系統(tǒng)采用的FPGA芯片為Altera公司的EP1C6Q240,用VHDL和Quartus軟件工具開(kāi)發(fā),設(shè)計(jì)輸入完成后,進(jìn)行整體的編譯和邏輯仿真,然后進(jìn)行轉(zhuǎn)換、延時(shí)仿真生成配置文件,最后下載至FPGA器件,完成結(jié)果功能配置,實(shí)現(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論