版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 題目:秒表設(shè)計</b></p><p><b> 內(nèi)容</b></p><p><b> 一:設(shè)計任務(wù)與要求</b></p><p> 秒表的邏輯結(jié)構(gòu)比較簡單,它主要由、顯示譯碼器、分頻器、十進制計數(shù)器、報警器和六進制計數(shù)器組成。在整個秒表中最關(guān)鍵是如何獲得一個精確
2、的100Hz計時脈沖,除此之外,整個秒表還需要一個啟動信號和一個歸零信號,以便能夠隨時啟動及停止。秒表有六個輸出顯示,分別為百分之一秒,十分之一秒、秒、十秒、分、十分,所以共有6個計數(shù)器與之對應(yīng),6個個計數(shù)器全為BCD碼輸出,這樣便于同時顯示譯碼器的連接。當(dāng)計時達(dá)60分鐘后,蜂鳴器鳴響3聲。</p><p><b> 二:設(shè)計原理</b></p><p> 本系
3、統(tǒng)采用自上向下的設(shè)計方案,系統(tǒng)的整體設(shè)計組裝原理圖如圖2-1所示,它主要由控制模塊,時基分屏模塊,計時模塊和顯示模塊四部分組成。各模塊分別完成控制,分屏,計時和顯示的功能</p><p><b> 設(shè)計原理圖</b></p><p><b> 程序模塊</b></p><p><b> 1、控制模塊程序&l
4、t;/b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all; </p><p> use ieee.std_logic_unsigned.all;</p><p> entity ctrl is</p>&l
5、t;p> port(clr,clk,sp:in std_logic; </p><p> en:out std_logic);</p><p><b> end ctrl;</b></p><p> architecture behave of ctrl is</p><p> ty
6、pe states is (s0,s1,s2,s3);</p><p> signal current_state,next_state:states;</p><p><b> begin</b></p><p> com:process(sp,current_state)</p><p><b>
7、begin</b></p><p> case current_state is</p><p> when s0=>en<='0';if sp='1' then next_state<=s1;else next_state<=s0;end if;</p><p> when s1=>e
8、n<='1';if sp='1' then next_state<=s1;else next_state<=s2;end if;</p><p> when s2=>en<='1';if sp='1' then next_state<=s3;else next_state<=s2;end if;</p
9、><p> when s3=>en<='0';if sp='1' then next_state<=s3;else next_state<=s0;end if;</p><p><b> end case;</b></p><p> end process;</p><
10、;p> synch:process(clk)</p><p><b> begin</b></p><p> if clr='1' then </p><p> current_state<=s0;</p><p> elsif clk'event and clk='
11、1' then</p><p> current_state<=next_state;</p><p><b> end if;</b></p><p> end process;</p><p> end behave;</p><p> 2、時基分頻模塊程序</p
12、><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity cb10 is</p><p> port(clk: in std_logic;</p><p> co: buffer std_logic);</p>
13、<p><b> end cb10;</b></p><p> architecture art of cb10 is</p><p> signal counter:integer range 0 to 49999;</p><p><b> begin</b></p><p>
14、; process(clk)</p><p><b> begin</b></p><p> if (clk='1' and clk'event) then</p><p> if counter=49999 then</p><p> counter<=0;</p>
15、<p> co<= not co;</p><p><b> else</b></p><p> counter<=counter+1;</p><p><b> end if;</b></p><p><b> end if;</b><
16、/p><p> end process;</p><p><b> end art;</b></p><p><b> 3、計時模塊的程序</b></p><p><b> 1)、十進制計數(shù)器</b></p><p> library ieee;
17、</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity cdu10 is</p><p> port(clk,clr,en: in std_logic;</p><p>
18、cn: out std_logic;</p><p> count10: out std_logic_vector(3 downto 0));</p><p> end cdu10;</p><p> architecture art of cdu10 is</p><p> signal temp:std_logic_vector(
19、3 downto 0);</p><p><b> begin</b></p><p> process(clk,clr)</p><p><b> begin</b></p><p> if clr='1' then </p><p> temp&
20、lt;="0000";</p><p><b> cn<='0'; </b></p><p> elsif (clk'event and clk='1') then</p><p> if en='1' then </p><p>
21、 if temp>="1001" then </p><p> temp<="0000";</p><p><b> cn<='1'; </b></p><p><b> else </b></p><p> temp
22、<=temp+1;</p><p><b> cn<='0'; </b></p><p><b> end if; </b></p><p><b> end if; </b></p><p><b> end if; </b
23、></p><p> count10<=temp;</p><p> end process;</p><p><b> end art;</b></p><p><b> 2)、六進制計數(shù)器</b></p><p> library ieee;<
24、/p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity cdu6 is</p><p> port(clk,clr,en: in std_logic;</p><p> cn: o
25、ut std_logic;</p><p> count6: out std_logic_vector(3 downto 0));</p><p><b> end cdu6;</b></p><p> architecture art of cdu6 is</p><p> signal temp:std_lo
26、gic_vector(3 downto 0);</p><p><b> begin </b></p><p> process(clk,clr)</p><p><b> begin</b></p><p> if clr='1' then </p><
27、p> temp<="0000";</p><p><b> cn<='0'; </b></p><p> elsif (clk'event and clk='1') then</p><p> if en='1' then </p>
28、<p> if temp="0110" then </p><p> temp<="0000";</p><p><b> cn<='1'; </b></p><p><b> else </b></p><p&g
29、t; temp<=temp+1;</p><p><b> cn<='0'; </b></p><p><b> end if; </b></p><p><b> end if; </b></p><p><b> end if
30、; </b></p><p> count6<=temp; </p><p> end process; </p><p><b> end art;</b></p><p><b> 3)計時器程序</b></p><p> library ie
31、ee;</p><p> use ieee.std_logic_1164.all;</p><p> entity count is</p><p> port(clk:in std_logic;</p><p> clr:in std_logic;</p><p> en:in std_logic;<
32、/p><p> S_10ms:out std_logic_vector(3 downto 0);</p><p> S_100ms:out std_logic_vector(3 downto 0);</p><p> S_1s:out std_logic_vector(3 downto 0);</p><p> S_10s:out std
33、_logic_vector(3 downto 0);</p><p> M_1min:out std_logic_vector(3 downto 0);</p><p> M_10min:out std_logic_vector(3 downto 0));</p><p> end count;</p><p> architectu
34、re art of count is</p><p> component cdu10</p><p> port(clk,clr,en: in std_logic;</p><p> cn: out std_logic;</p><p> count10: out std_logic_vector(3 downto 0));<
35、/p><p> end component cdu10;</p><p> component cdu6</p><p> port(clk,clr,en: in std_logic;</p><p> cn: out std_logic;</p><p> count6: out std_logic_vecto
36、r(3 downto 0));</p><p> end component cdu6;</p><p> signal A,B,C,D,E,F:std_logic;</p><p><b> begin </b></p><p> U1:cdu10 port map (clk,clr,en,A,S_10ms);
37、</p><p> U2:cdu10 port map (A,clr,en,B,S_100ms);</p><p> U3:cdu10 port map (B,clr,en,C,S_1s);</p><p> U4:cdu6 port map (C,clr,en,D,S_10s);</p><p> U5:cdu10 port map
38、 (D,clr,en,E,M_1min);</p><p> U6:cdu10 port map (E,clr,en,F,M_10min);</p><p><b> end art;</b></p><p><b> 4、顯示模塊程序</b></p><p> 1)七段譯碼驅(qū)動器程序<
39、;/p><p> library ieee; </p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned; </p><p> entity bcd7 is </p><p> port(bcd:in std_logic_
40、vector(3 downto 0); </p><p> led:out std_logic_vector(6 downto 0)); </p><p> end bcd7 ; </p><p> architecture art of bcd7 is </p><p><b> begin </b><
41、/p><p> led<= "0111111" when bcd="0000"else</p><p> "0000110" when bcd="0001"else</p><p> "1011011" when bcd="0010"
42、else</p><p> "1001111" when bcd="0011"else</p><p> "1100110" when bcd="0100"else</p><p> "1101101" when bcd="0101"e
43、lse</p><p> "1111101" when bcd="0110"else</p><p> "0000111" when bcd="0111"else</p><p> "1111111" when bcd="1000"el
44、se</p><p> "1101111" when bcd="1001"else</p><p> "0000000";</p><p><b> end art; </b></p><p><b> 2)數(shù)據(jù)選擇器程序</b>
45、</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_UNSIGNED.all;</p><p> entity mulx is</p><p> port(clk:in std_lo
46、gic;</p><p> clr:in std_logic;</p><p> en:in std_logic;</p><p> S_10ms:in std_logic_vector(3 downto 0);</p><p> S_100ms:in std_logic_vector(3 downto 0);</p>
47、<p> S_1s:in std_logic_vector(3 downto 0);</p><p> S_10s:in std_logic_vector(3 downto 0);</p><p> M_1min:in std_logic_vector(3 downto 0);</p><p> M_10min:in std_logic_vecto
48、r(3 downto 0);</p><p> outbcd:out std_logic_vector(3 downto 0);</p><p> seg:out std_logic_vector(2 downto 0));</p><p><b> end mulx;</b></p><p> architec
49、ture art of mulx is</p><p> signal count:std_logic_vector(2 downto 0);</p><p><b> begin</b></p><p> process(clk)</p><p><b> begin</b></p&
50、gt;<p> if (clr='1') then </p><p> count<="111";</p><p> elsif (clk='1'and clk'event) then</p><p> if en='1' then</p><
51、p> if count="101" then</p><p> count<="000"; </p><p> else count<=count+1;</p><p><b> end if;</b></p><p><b> end if
52、;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(clk)</p><p><b> begin</b></p><p> if clk'event and
53、 clk='1'then</p><p> case count is</p><p> when "000"=>outbcd<=S_10ms; seg<="000";</p><p> when "001"=>outbcd<=S_100ms; se
54、g<="001";</p><p> when "010"=>outbcd<=S_1s; seg<="010";</p><p> when "011"=>outbcd<=S_10s; seg<="011";</p>
55、<p> when "100"=>outbcd<=M_1min; seg<="100";</p><p> when "101"=>outbcd<=M_10min; seg<="101";</p><p> when others=>null;&l
56、t;/p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> end art;</b></p><p><b> 頂層設(shè)計源
57、程序</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity stopwatch is </p><p> port (sp:in std_logic ;</p><p> clr:in st
58、d_logic;</p><p> clk:in std_logic;</p><p> led:out std_logic_vector(6 downto 0);</p><p> seg:out std_logic_vector(2 downto 0));</p><p> end stopwatch;</p>&l
59、t;p> architecture art of stopwatch is </p><p> component ctrl</p><p> port(clr:in std_logic ;</p><p> clk:in std_logic ;</p><p> sp:in std_logic ;</p>&l
60、t;p> en:out std_logic );</p><p> end component;</p><p> component cb10</p><p> port(clk:in std_logic;</p><p> co:out std_logic);</p><p> end compo
61、nent;</p><p> component count</p><p> port (clk:in std_logic;</p><p> clr:in std_logic;</p><p> en:in std_logic;</p><p> S_10ms:out std_logic_vector(3
62、 downto 0);</p><p> S_100ms:out std_logic_vector(3 downto 0);</p><p> S_1s:out std_logic_vector(3 downto 0);</p><p> S_10s:out std_logic_vector(3 downto 0);</p><p>
63、 M_1min:out std_logic_vector(3 downto 0);</p><p> M_10min:out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component bcd7</p><p> port(bcd:in std_l
64、ogic_vector(3 downto 0);</p><p> led:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component mulx</p><p> port (clr:in std_logic;</p><
65、;p> clk:in std_logic;</p><p> en:in std_logic;</p><p> S_10ms:in std_logic_vector(3 downto 0);</p><p> S_100ms:in std_logic_vector(3 downto 0);</p><p> S_1s:in
66、std_logic_vector(3 downto 0);</p><p> S_10s:in std_logic_vector(3 downto 0);</p><p> M_1min:in std_logic_vector(3 downto 0);</p><p> M_10min:in std_logic_vector(3 downto 0);</
67、p><p> outbcd:out std_logic_vector(3 downto 0);</p><p> seg:out std_logic_vector(2 downto 0));</p><p> end component;</p><p> signal c,e:std_logic;</p><p>
68、; signal ms10_s,ms100_s:std_logic_vector(3 downto 0);</p><p> signal s1_s,s10_s:std_logic_vector(3 downto 0);</p><p> signal min1_s,min10_s:std_logic_vector(3 downto 0);</p><p>
69、 signal bcd_s,s:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> u0:ctrl port map(clr,clk,sp,e);</p><p> u1:cb10 port map(clk,c);</p><p> u2:c
70、ount port map(c,clr,e,ms10_s,ms100_s,s1_s,s10_s,min1_s,min10_s);</p><p> u3:mulx port map(clr,clk,e,ms10_s,ms100_s,s1_s,s10_s,min1_s,min10_s,bcd_s,seg);</p><p> u4:bcd7 port map (bcd_s,led);&l
71、t;/p><p><b> end art;</b></p><p><b> 設(shè)計解決的關(guān)鍵問題</b></p><p> 本次設(shè)計的關(guān)鍵性問題是分頻和頂層文件的設(shè)計,在分頻代碼段中可以看出我們本次采用的主頻率是5MHZ。1/100秒的頻率為100HZ所以只需要用5MHZ乘以1/50000即可得到100HZ的分頻信號,
72、即1/100秒。數(shù)碼管顯示部分的關(guān)鍵就是弄清楚每個數(shù)字對應(yīng)的二進制代碼,剛開始我們用畫原理圖的方法進行頂層文件設(shè)計,完成了實驗,而后又嘗試用VHDL語言進行程序設(shè)計,雖然程序復(fù)雜而且老出編譯錯誤,期間反復(fù)看書,和上網(wǎng)查找資料,經(jīng)過幾天的修改終于將此頂層程序的設(shè)計工作完成。</p><p><b> 五:設(shè)計分工說明</b></p><p> 主程序設(shè)計,編寫實驗報
73、告——易新會</p><p> 程序修改,用VHDL語言頂層文件設(shè)計——陳虹余</p><p> 上機硬件調(diào)試,用原理圖的方法設(shè)計頂層文件——王偉</p><p> 收集相關(guān)資料、拍照——迪拉熱</p><p><b> 仿真結(jié)果與分析</b></p><p><b> 一:測
74、試數(shù)據(jù)選擇</b></p><p> 測試數(shù)據(jù)選擇為00:00:00——03:56:38</p><p><b> 二:波形分析</b></p><p><b> 三:問題說明</b></p><p> 數(shù)碼管的顯示由sel片選信號來控制。硬件調(diào)試功能正常。</p>
75、<p><b> 總結(jié)</b></p><p> 開始VHDL語言不是很熟練,做設(shè)計時總是會犯一些錯誤且花費的時間比較多,例如在做頂層文件設(shè)計的時候總是會出現(xiàn)一些編譯錯誤,其中有些錯誤是因為一個字母沒寫對而導(dǎo)致,相比較來說在此次設(shè)計中用原理圖做頂層設(shè)計似乎更容易,當(dāng)然這主要是我們做的這個小設(shè)計不是一個大型的系統(tǒng),當(dāng)系統(tǒng)復(fù)雜時用VHDL語言更省事,在編程時,我們使用了自頂向下的
76、設(shè)計思想,這樣程序檢查起來也比較方便,也便于小組分工,做EDA設(shè)計考驗我們的耐心、毅力和細(xì)心,而對錯誤的檢查要求我們要有足夠的耐心,通過這次實戰(zhàn),我們對VHDL語言了解的更深了,也積累了一定的解決問題的經(jīng)驗,對以后從事集成電路設(shè)計工作會有一定的幫助。在設(shè)計工作中,分工很重要,即使你一個人能夠把整個程序?qū)懗鰜?,但與分工良好的組相比較,分工不好的組效率更低</p><p> 在應(yīng)用VHDL的過程中我們領(lǐ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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計--數(shù)字秒表設(shè)計
- eda數(shù)字秒表課程設(shè)計
- eda課程設(shè)計--電子秒表設(shè)計
- eda課程設(shè)計--數(shù)字秒表設(shè)計
- eda課程設(shè)計---數(shù)字秒表
- eda秒表電路課程設(shè)計
- eda課程設(shè)計--數(shù)字秒表的設(shè)計
- eda課程設(shè)計---數(shù)字秒表的設(shè)計
- eda綜合課程設(shè)計-數(shù)字秒表
- eda數(shù)字秒表課程設(shè)計報告
- eda課程--數(shù)字秒表設(shè)計
- eda技術(shù)及應(yīng)用課程設(shè)計--數(shù)字秒表
- 秒表課程設(shè)計
- 秒表課程設(shè)計
- 秒表課程設(shè)計
- 秒表課程設(shè)計-- 秒表系統(tǒng)的設(shè)計
- eda課程設(shè)計--eda課程設(shè)計實驗報告
- 秒表 課程設(shè)計
- eda課程設(shè)計-- eda與數(shù)字系統(tǒng)課程設(shè)計
- eda課程設(shè)計
評論
0/150
提交評論