

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報告</b></p><p> 課程名稱: EDA技術(shù)與應(yīng)用 </p><p> 設(shè)計(jì)題目: 數(shù)字鐘設(shè)計(jì) </p><p><b> 數(shù)字鐘設(shè)計(jì)</b></p><p> 摘 要 : 系統(tǒng)使用EDA技術(shù)設(shè)計(jì)
2、了數(shù)字鐘,采用硬件描述語言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程,時序仿真等。利用VHDL語言完成了數(shù)字鐘的設(shè)計(jì)。該數(shù)字鐘能實(shí)現(xiàn)時、分、秒計(jì)數(shù)的顯示功能,且以24小時循環(huán)計(jì)時。整個系統(tǒng)結(jié)構(gòu)簡單,使用方便,功能齊全,精度高,具有一定的開發(fā)價值。</p><p> 關(guān)鍵字: 數(shù)字鐘;EDA;VHDL;</p><p><b> 一、設(shè)計(jì)要求</b></p&
3、gt;<p><b> 1.1、時鐘功能</b></p><p> 設(shè)計(jì)一個具有時、分、秒計(jì)時的數(shù)字鐘電路,計(jì)時采用24小時制。小時、分鐘可調(diào)的數(shù)字鐘。</p><p><b> 1.2、準(zhǔn)確性要求</b></p><p> 設(shè)計(jì)出的時鐘電路要確保高精度的要求,每天的誤差不得超過一秒。</p&g
4、t;<p> 二、數(shù)字鐘的基本原理</p><p> 1、具有時、分、秒計(jì)數(shù)顯示功能,以24小時循環(huán)計(jì)時。其中SECOND模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)秒計(jì)時功能;MINUTE模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)分計(jì)時功能;HOUR模塊為24進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)小時計(jì)時功能。</p><p> 2、有驅(qū)動8位七段共陰極掃描數(shù)碼管的片選驅(qū)動信號輸出和七段碼輸出
5、。SELTIME模塊產(chǎn)生8位數(shù)碼管的掃描驅(qū)動信號SEL[2..0]和時鐘顯示數(shù)據(jù)(動態(tài)顯示)DAOUT[3..0]。DELED模塊則為數(shù)碼管顯示時鐘數(shù)據(jù)的7段譯碼電路。</p><p><b> 三、方案論證</b></p><p> 3.1、數(shù)字鐘的基本組成</p><p> 數(shù)字鐘實(shí)際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路,其
6、基本組成電路如下圖所示:</p><p> 圖3.1 數(shù)字鐘原理圖</p><p> 圖(1)中,秒沖發(fā)生器產(chǎn)生秒脈沖,作為圖中各個計(jì)數(shù)器的脈沖信號。分、秒計(jì)數(shù)器要求設(shè)計(jì)為六十進(jìn)制計(jì)數(shù)器;時計(jì)數(shù)器則設(shè)計(jì)為二十四進(jìn)制計(jì)數(shù)器。時、分、秒的計(jì)時結(jié)果分別送入譯碼器中,經(jīng)譯碼器翻譯后,共由六個LED數(shù)碼管顯示出結(jié)果。因此,使用計(jì)數(shù)器作為計(jì)時電路是可以實(shí)現(xiàn)的。</p><p&
7、gt;<b> 四、各功能模塊</b></p><p> 4.1、小時計(jì)時功能</p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p>
8、; use ieee.std_logic_unsigned.all;</p><p> entity hour is</p><p> port(reset,clk : in std_logic;</p><p> daout : out std_logic_vector(7 downto 0));</p><p><b>
9、 end hour;</b></p><p> architecture behav of hour is</p><p> signal count : std_logic_vector(3 downto 0);</p><p> signal counter : std_logic_vector(3 downto 0);</p>
10、;<p><b> begin</b></p><p> p1: process(reset,clk)</p><p><b> begin</b></p><p> if reset='0' then </p><p> count<="00
11、00"; </p><p> counter<="0000"; </p><p> elsif(clk'event and clk='1') then</p><p> if (counter<2) then</p><p> if (count=9) then&l
12、t;/p><p> count<="0000";</p><p> counter<=counter + 1;</p><p><b> else</b></p><p> count<=count+1;</p><p><b> end if
13、;</b></p><p><b> else</b></p><p> if (count=3) then</p><p> count<="0000";</p><p> counter<="0000";</p><p>
14、<b> else</b></p><p> count<=count+1;</p><p> end if; </p><p><b> end if;</b></p><p><b> end if;</b></p><p>
15、end process;</p><p> daout(7 downto 4)<=counter;</p><p> daout(3 downto 0)<=count;</p><p> end behav;</p><p> 圖4.1 時計(jì)時功能模塊</p><p><b> 4.2
16、、分計(jì)時功能</b></p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p>&
17、lt;p> entity minute is</p><p> port(reset,clk,sethour: in std_logic;</p><p> daout : out std_logic_vector(7 downto 0);</p><p> enhour : out std_logic);</p><p>
18、end minute;</p><p> architecture behav of minute is</p><p> signal count : std_logic_vector(3 downto 0);</p><p> signal counter : std_logic_vector(3 downto 0);</p><p
19、> signal carry_out1 : std_logic;</p><p> signal carry_out2 : std_logic;</p><p><b> begin</b></p><p> p1: process(reset,clk)</p><p><b> begin&l
20、t;/b></p><p> if reset='0' then </p><p> count<="0000"; </p><p> counter<="0000"; </p><p> elsif(clk'event and clk='1
21、') then</p><p> if (counter<5) then</p><p> if (count=9) then</p><p> count<="0000";</p><p> counter<=counter + 1;</p><p><b&
22、gt; else</b></p><p> count<=count+1;</p><p><b> end if;</b></p><p> carry_out1<='0';</p><p><b> else</b></p><
23、;p> if (count=9) then</p><p> count<="0000";</p><p> counter<="0000";</p><p> carry_out1<='1';</p><p><b> else</b&
24、gt;</p><p> count<=count+1;</p><p> carry_out1<='0';</p><p> end if; </p><p><b> end if;</b></p><p><b> end if;</
25、b></p><p> end process;</p><p> p2: process(clk)</p><p><b> begin</b></p><p> if(clk'event and clk='0') then</p><p> if (co
26、unter=0) then</p><p> if (count=0) then</p><p> carry_out2<='0';</p><p><b> end if; </b></p><p><b> else</b></p><p>
27、 carry_out2<='1'; </p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process; </p><p> daout(7 downto 4)<=counte
28、r;</p><p> daout(3 downto 0)<=count;</p><p> enhour<=(carry_out1 and carry_out2) or sethour;</p><p> end behav; </p><p> 圖4.2 分計(jì)時模塊</p><p>
29、<b> 4.3、秒計(jì)時功能</b></p><p><b> 實(shí)現(xiàn)程序如下;</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all
30、;</p><p> entity second is</p><p> port(reset,clk,setmin : in std_logic;</p><p> daout : out std_logic_vector(7 downto 0);</p><p> enmin : out std_logic);</p>
31、<p> end second;</p><p> architecture behav of second is</p><p> signal count : std_logic_vector(3 downto 0);</p><p> signal counter : std_logic_vector(3 downto 0);<
32、/p><p> signal carry_out1 : std_logic;</p><p> signal carry_out2 : std_logic;</p><p><b> begin</b></p><p> p1: process(reset,clk)</p><p><b
33、> begin</b></p><p> if reset='0' then </p><p> count<="0000"; </p><p> counter<="0000"; </p><p> elsif(clk'event a
34、nd clk='1') then</p><p> if (counter<5) then</p><p> if (count=9) then</p><p> count<="0000";</p><p> counter<=counter + 1;</p>&l
35、t;p><b> else</b></p><p> count<=count+1;</p><p><b> end if;</b></p><p> carry_out1<='0';</p><p><b> else</b>&l
36、t;/p><p> if (count=9) then</p><p> count<="0000";</p><p> counter<="0000";</p><p> carry_out1<='1';</p><p><b>
37、 else</b></p><p> count<=count+1;</p><p> carry_out1<='0';</p><p> end if; </p><p><b> end if;</b></p><p><b>
38、 end if;</b></p><p> end process;</p><p> daout(7 downto 4)<=counter;</p><p> daout(3 downto 0)<=count;</p><p> enmin<=carry_out1 or setmin;</p>
39、;<p> end behav;</p><p> 圖4.3 秒計(jì)時模塊</p><p> 4.4、alert模塊</p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> Library IEEE;</p><p> use IEEE.std_logic_
40、1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity alert is</p><p><b> Port(</b></p><p> clkspk : in std_logic;</p><p> sec
41、ond : in std_logic_vector(7 downto 0);</p><p> minute : in std_logic_vector(7 downto 0);</p><p> speak : out std_logic;</p><p> lamp : out std_logic_vector(8 downto 0));</p>
42、;<p> end alert;</p><p> architecture behav of alert is</p><p> signal divclkspk2 : std_logic;</p><p><b> begin</b></p><p> p1: process(clkspk)&
43、lt;/p><p><b> begin</b></p><p> if (clkspk'event and clkspk='1') then</p><p> divclkspk2<=not divclkspk2;</p><p><b> end if;</b>
44、</p><p> end process;</p><p> p2: process(second,minute)</p><p><b> begin</b></p><p> if (minute="01011001") then</p><p> case s
45、econd is</p><p> when "01010001"=>lamp<="000000001";speak<=divclkspk2;</p><p> when "01010010"=>lamp<="000000010";speak<='0';&
46、lt;/p><p> when "01010011"=>lamp<="000000100";speak<=divclkspk2;</p><p> when "01010100"=>lamp<="000001000";speak<='0';</p>
47、<p> when "01010101"=>lamp<="000010000";speak<=divclkspk2;</p><p> when "01010110"=>lamp<="000100000";speak<='0';</p><p&g
48、t; when "01010111"=>lamp<="001000000";speak<=divclkspk2;</p><p> when "01011000"=>lamp<="010000000";speak<='0';</p><p> when
49、"01011001"=>lamp<="100000000";speak<=clkspk;</p><p> when others=>lamp<="000000000";</p><p><b> end case;</b></p><p><b
50、> end if;</b></p><p> end process;</p><p> end behav;</p><p> 圖4.4 alert模塊</p><p> 4.5、DELED模塊</p><p><b> 實(shí)現(xiàn)程序如下;</b></p>
51、<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY DELED IS</p><p><b> PORT(</b></p><p> S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
52、</p><p> A,B,C,D,E,F,G,H: OUT STD_LOGIC);</p><p> END DELED;</p><p> ARCHITECTURE BEHAV OF DELED IS</p><p> SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><
53、;p> SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p><b> DATA<=S;</b></p><p> PROCESS(DATA)</p><p><b> BEG
54、IN</b></p><p> CASE DATA IS</p><p> WHEN "0000"=>DOUT<="00111111";</p><p> WHEN "0001"=>DOUT<="00000110";</p>&l
55、t;p> WHEN "0010"=>DOUT<="01011011";</p><p> WHEN "0011"=>DOUT<="01001111";</p><p> WHEN "0100"=>DOUT<="01100110&quo
56、t;;</p><p> WHEN "0101"=>DOUT<="01101101";</p><p> WHEN "0110"=>DOUT<="01111101";</p><p> WHEN "0111"=>DOUT<=&
57、quot;00000111";</p><p> WHEN "1000"=>DOUT<="01111111";</p><p> WHEN "1001"=>DOUT<="01101111";</p><p> WHEN "1010&quo
58、t;=>DOUT<="01110111";</p><p> WHEN "1011"=>DOUT<="01111100";</p><p> WHEN "1100"=>DOUT<="00111001";</p><p> WH
59、EN "1101"=>DOUT<="01011110";</p><p> WHEN "1110"=>DOUT<="01111001";</p><p> WHEN "1111"=>DOUT<="01000000";</p&g
60、t;<p> WHEN OTHERS=>DOUT<="00000000";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> H<=DOUT(7);</p><p> G<=DOUT(6)
61、;</p><p> F<=DOUT(5);</p><p> E<=DOUT(4);</p><p> D<=DOUT(3);</p><p> C<=DOUT(2);</p><p> B<=DOUT(1);</p><p> A<=DOUT(
62、0);</p><p> END BEHAV;</p><p> 圖4.5 deled模塊</p><p> 4.6、seltime模塊</p><p><b> 實(shí)現(xiàn)程序如下:</b></p><p> library ieee;</p><p> use
63、ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity seltime is</p><p><b> port(</b></p><p> ckdsp : in std_logic;</p>
64、<p> reset : in std_logic;</p><p> second : in std_logic_vector(7 downto 0);</p><p> minute : in std_logic_vector(7 downto 0);</p><p> hour : in std_logic_vector(7 downto
65、 0);</p><p> daout : out std_logic_vector(3 downto 0);</p><p> sel : out std_logic_vector(2 downto 0));</p><p> end seltime;</p><p> architecture behav of seltime i
66、s</p><p> signal sec : std_logic_vector(2 downto 0);</p><p><b> begin</b></p><p> process(reset,ckdsp)</p><p><b> begin</b></p><p
67、> if(reset='0') then</p><p> sec<="000";</p><p> elsif(ckdsp'event and ckdsp='1') then </p><p> if(sec="111") then</p><
68、p> sec<="000";</p><p><b> else</b></p><p> sec<=sec+1;</p><p><b> end if;</b></p><p><b> end if;</b></p&g
69、t;<p> end process;</p><p> process(sec,second,minute,hour)</p><p><b> begin</b></p><p> case sec is</p><p> when "000"=>daout<=
70、second(3 downto 0);</p><p> when "001"=>daout<=second(7 downto 4);</p><p> when "011"=>daout<=minute(3 downto 0);</p><p> when "100"=>
71、;daout<=minute(7 downto 4);</p><p> when "110"=>daout<=hour(3 downto 0);</p><p> when "111"=>daout<=hour(7 downto 4);</p><p> when others=>d
72、aout<="1111";</p><p><b> end case;</b></p><p> end process;</p><p><b> sel<=sec;</b></p><p> end behav;</p><p>
73、 圖4.6 seltime模塊</p><p><b> 五、功能實(shí)現(xiàn)簡述</b></p><p> 5.1、具有時、分、秒計(jì)數(shù)顯示功能,以24小時循環(huán)計(jì)時。其中SECOND模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)秒計(jì)時功能;MINUTE為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)分計(jì)時功能;HOUR模塊為24進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)小時計(jì)時功能。</p>&
74、lt;p> 5.2、有驅(qū)動8位七段共陰極掃描數(shù)碼管的片選驅(qū)動信號輸出和七段碼輸出。SELTIME模塊產(chǎn)生8位數(shù)碼管的掃描驅(qū)動信號SEL[2..0]和時鐘顯示數(shù)據(jù)(動態(tài)顯示)DAOUT[3..0]。DELED模塊則為數(shù)碼管顯示時鐘數(shù)據(jù)的7段譯碼電路。</p><p> 根據(jù)圖1所示原理圖,對其進(jìn)行仿真,其仿真圖如下:</p><p> 圖5.1 實(shí)驗(yàn)仿真圖</p>
75、<p> 完成功能仿真之后,如圖所示對其進(jìn)行管腳鎖定,并下載到目標(biāo)芯片,將第一全局時鐘CLK1的跳線器接1Hz,第二全局時鐘CLK2的跳線器接1024Hz,第三全局時鐘CLK3的跳線器接32768Hz。撥位開關(guān)KD1為清零控制開關(guān)(高電平有效),KD2、KD3分別為小時調(diào)節(jié)、分鐘調(diào)節(jié)允許端(低電平允許調(diào)節(jié),高電平禁止調(diào)節(jié)/正常計(jì)時)。按鍵K2、K3分別為小時調(diào)節(jié)、分鐘調(diào)節(jié)按鍵(僅當(dāng)KD2、KD3為低電平允許調(diào)節(jié)時有效),只
76、能加調(diào)節(jié)。數(shù)碼管SM6-SM1分別顯示小時,分鐘,秒。</p><p><b> 結(jié)果顯示</b></p><p> 圖6.1 實(shí)驗(yàn)顯示圖</p><p><b> 心得體會</b></p><p> 這次實(shí)驗(yàn)中積累了如下經(jīng)驗(yàn):</p><p> 1、系統(tǒng)設(shè)計(jì)進(jìn)要
77、行充分的方案論證,不可盲目就動手去做;</p><p> 2、實(shí)驗(yàn)中對每一個細(xì)節(jié)部分都要全面思考,要對特殊情況進(jìn)行處理;</p><p> 3、對于數(shù)字系統(tǒng),要考慮同步、異步問題;</p><p> 4、數(shù)字電路的理論分析要結(jié)合時序圖;</p><p> 5、遇到問題,要順藤摸瓜,分析清楚,不可胡亂改動,每做一次改變都要有充分的理由;
78、</p><p> 6、模塊化設(shè)計(jì)方法的優(yōu)點(diǎn)在于其簡潔性,但是在實(shí)驗(yàn)設(shè)計(jì)中也發(fā)現(xiàn),在實(shí)驗(yàn)最終電路確定之前,要盡量減少模塊重疊嵌套,因?yàn)樵诳偟碾娐非枚ㄖ?,電路還不成熟,很多地方需要改進(jìn),如果在開始時就進(jìn)行多層模塊化,里層模塊電路的修改將影響其外層的全部電路,這樣就是牽一發(fā)動全身,很顯然,這樣將導(dǎo)致電路設(shè)計(jì)的低效,所以在設(shè)計(jì)過程中,一定要盡量減少超過兩層的模塊;</p><p> 7、遇
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字鐘--eda課程設(shè)計(jì)
- eda數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘eda課程設(shè)計(jì)報告
- eda課程設(shè)計(jì)報告--數(shù)字鐘
- eda課程設(shè)計(jì)報告---數(shù)字鐘設(shè)計(jì)
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- eda實(shí)現(xiàn)多功能數(shù)字鐘課程設(shè)計(jì)
- eda課程數(shù)字鐘設(shè)計(jì)報告
- eda課程設(shè)計(jì)---基于fpga的數(shù)字鐘設(shè)計(jì)
- eda數(shù)字鐘課程設(shè)計(jì)--用vhdl語言實(shí)現(xiàn)數(shù)字鐘的設(shè)計(jì)
- eda課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作
- EDA課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作.doc
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 適用多功能數(shù)字鐘(eda技術(shù)課程設(shè)計(jì))
評論
0/150
提交評論