版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 題目:秒表設(shè)計(jì)</b></p><p><b> 內(nèi)容</b></p><p><b> 一:設(shè)計(jì)任務(wù)與要求</b></p><p> 秒表的邏輯結(jié)構(gòu)比較簡(jiǎn)單,它主要由、顯示譯碼器、分頻器、十進(jìn)制計(jì)數(shù)器、報(bào)警器和六進(jìn)制計(jì)數(shù)器組成。在整個(gè)秒表中最關(guān)鍵是如何獲得一個(gè)精確
2、的100Hz計(jì)時(shí)脈沖,除此之外,整個(gè)秒表還需要一個(gè)啟動(dòng)信號(hào)和一個(gè)歸零信號(hào),以便能夠隨時(shí)啟動(dòng)及停止。秒表有六個(gè)輸出顯示,分別為百分之一秒,十分之一秒、秒、十秒、分、十分,所以共有6個(gè)計(jì)數(shù)器與之對(duì)應(yīng),6個(gè)個(gè)計(jì)數(shù)器全為BCD碼輸出,這樣便于同時(shí)顯示譯碼器的連接。當(dāng)計(jì)時(shí)達(dá)60分鐘后,蜂鳴器鳴響3聲。</p><p><b> 二:設(shè)計(jì)原理</b></p><p> 本系
3、統(tǒng)采用自上向下的設(shè)計(jì)方案,系統(tǒng)的整體設(shè)計(jì)組裝原理圖如圖2-1所示,它主要由控制模塊,時(shí)基分屏模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊分別完成控制,分屏,計(jì)時(shí)和顯示的功能</p><p><b> 設(shè)計(jì)原理圖</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、時(shí)基分頻模塊程序</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、計(jì)時(shí)模塊的程序</b></p><p><b> 1)、十進(jìn)制計(jì)數(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)、六進(jìn)制計(jì)數(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)計(jì)時(shí)器程序</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ū)動(dòng)器程序<
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è)計(jì)源
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è)計(jì)解決的關(guān)鍵問(wèn)題</b></p><p> 本次設(shè)計(jì)的關(guān)鍵性問(wèn)題是分頻和頂層文件的設(shè)計(jì),在分頻代碼段中可以看出我們本次采用的主頻率是5MHZ。1/100秒的頻率為100HZ所以只需要用5MHZ乘以1/50000即可得到100HZ的分頻信號(hào),
72、即1/100秒。數(shù)碼管顯示部分的關(guān)鍵就是弄清楚每個(gè)數(shù)字對(duì)應(yīng)的二進(jìn)制代碼,剛開(kāi)始我們用畫(huà)原理圖的方法進(jìn)行頂層文件設(shè)計(jì),完成了實(shí)驗(yàn),而后又嘗試用VHDL語(yǔ)言進(jìn)行程序設(shè)計(jì),雖然程序復(fù)雜而且老出編譯錯(cuò)誤,期間反復(fù)看書(shū),和上網(wǎng)查找資料,經(jīng)過(guò)幾天的修改終于將此頂層程序的設(shè)計(jì)工作完成。</p><p><b> 五:設(shè)計(jì)分工說(shuō)明</b></p><p> 主程序設(shè)計(jì),編寫(xiě)實(shí)驗(yàn)報(bào)
73、告——易新會(huì)</p><p> 程序修改,用VHDL語(yǔ)言頂層文件設(shè)計(jì)——陳虹余</p><p> 上機(jī)硬件調(diào)試,用原理圖的方法設(shè)計(jì)頂層文件——王偉</p><p> 收集相關(guān)資料、拍照——迪拉熱</p><p><b> 仿真結(jié)果與分析</b></p><p><b> 一:測(cè)
74、試數(shù)據(jù)選擇</b></p><p> 測(cè)試數(shù)據(jù)選擇為00:00:00——03:56:38</p><p><b> 二:波形分析</b></p><p><b> 三:?jiǎn)栴}說(shuō)明</b></p><p> 數(shù)碼管的顯示由sel片選信號(hào)來(lái)控制。硬件調(diào)試功能正常。</p>
75、<p><b> 總結(jié)</b></p><p> 開(kāi)始VHDL語(yǔ)言不是很熟練,做設(shè)計(jì)時(shí)總是會(huì)犯一些錯(cuò)誤且花費(fèi)的時(shí)間比較多,例如在做頂層文件設(shè)計(jì)的時(shí)候總是會(huì)出現(xiàn)一些編譯錯(cuò)誤,其中有些錯(cuò)誤是因?yàn)橐粋€(gè)字母沒(méi)寫(xiě)對(duì)而導(dǎo)致,相比較來(lái)說(shuō)在此次設(shè)計(jì)中用原理圖做頂層設(shè)計(jì)似乎更容易,當(dāng)然這主要是我們做的這個(gè)小設(shè)計(jì)不是一個(gè)大型的系統(tǒng),當(dāng)系統(tǒng)復(fù)雜時(shí)用VHDL語(yǔ)言更省事,在編程時(shí),我們使用了自頂向下的
76、設(shè)計(jì)思想,這樣程序檢查起來(lái)也比較方便,也便于小組分工,做EDA設(shè)計(jì)考驗(yàn)我們的耐心、毅力和細(xì)心,而對(duì)錯(cuò)誤的檢查要求我們要有足夠的耐心,通過(guò)這次實(shí)戰(zhàn),我們對(duì)VHDL語(yǔ)言了解的更深了,也積累了一定的解決問(wèn)題的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作會(huì)有一定的幫助。在設(shè)計(jì)工作中,分工很重要,即使你一個(gè)人能夠把整個(gè)程序?qū)懗鰜?lái),但與分工良好的組相比較,分工不好的組效率更低</p><p> 在應(yīng)用VHDL的過(guò)程中我們領(lǐng)會(huì)到了其并行
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--數(shù)字秒表設(shè)計(jì)
- eda數(shù)字秒表課程設(shè)計(jì)
- eda課程設(shè)計(jì)--電子秒表設(shè)計(jì)
- eda課程設(shè)計(jì)--數(shù)字秒表設(shè)計(jì)
- eda課程設(shè)計(jì)---數(shù)字秒表
- eda秒表電路課程設(shè)計(jì)
- eda課程設(shè)計(jì)--數(shù)字秒表的設(shè)計(jì)
- eda課程設(shè)計(jì)---數(shù)字秒表的設(shè)計(jì)
- eda綜合課程設(shè)計(jì)-數(shù)字秒表
- eda數(shù)字秒表課程設(shè)計(jì)報(bào)告
- eda課程--數(shù)字秒表設(shè)計(jì)
- eda技術(shù)及應(yīng)用課程設(shè)計(jì)--數(shù)字秒表
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)-- 秒表系統(tǒng)的設(shè)計(jì)
- eda課程設(shè)計(jì)--eda課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 秒表 課程設(shè)計(jì)
- eda課程設(shè)計(jì)-- eda與數(shù)字系統(tǒng)課程設(shè)計(jì)
- eda課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論