版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 2012--2013學(xué)年第 一 學(xué)期 物電 學(xué)院期末考試卷</p><p> EDA大作業(yè) 《設(shè)計制作電子表》 (課程論文等試卷樣式)</p><p> 學(xué)號: 姓名: 班級: </p><p><b> 成績:</b></p>
2、;<p><b> 評語:</b></p><p><b> ?。荚囶}目及要求)</b></p><p> 利用VHDL語言設(shè)計一個電子時鐘,可以顯示時、分、秒,具有時間設(shè)置功能,要求走時誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計出個性化顯示界面。</p><p><b> 注意
3、事項:</b></p><p> 1.上述三題任選一題,采用標(biāo)準(zhǔn)的作業(yè)考核類封面,A4打印。</p><p> 2.第一題40分,液晶+3分,個性化界面+3分。</p><p> 3.第二題45分,幅度調(diào)整+3分,頻率測量及顯示+5分。</p><p> 4.第三題48分,頻率分段設(shè)置+3分,頻率微調(diào)+5分,頻率范圍酌情加
4、分。</p><p> 5.雷同的程序和算法滿分值只計原題分值的三分之二,將依據(jù)設(shè)計報告的質(zhì)量和實驗結(jié)果的描述計分。設(shè)計上的創(chuàng)新會酌情加分,實現(xiàn)上的偏離會酌情扣分。</p><p> 6.本門課程成績中,實驗操作和實驗報告占50%,本次作業(yè)考核占50%。</p><p><b> 目 錄</b></p><p>&
5、lt;b> 一、設(shè)計要求1</b></p><p><b> 二、設(shè)計思路1</b></p><p><b> 三、程序設(shè)計2</b></p><p> 1.置數(shù)還是計數(shù)2</p><p> 2.在哪一位置數(shù)2</p><p><b
6、> 3.計數(shù)單位2</b></p><p><b> 4.秒3</b></p><p><b> 5.分4</b></p><p><b> 6.時4</b></p><p><b> 7.數(shù)碼管顯示5</b><
7、/p><p><b> 四、仿真結(jié)果6</b></p><p><b> 五、實驗結(jié)果8</b></p><p><b> 1.連線8</b></p><p><b> 2.設(shè)計結(jié)果8</b></p><p><b
8、> 六、實驗心得9</b></p><p><b> 電子表源程序10</b></p><p><b> 設(shè)計制作電子表</b></p><p><b> 一、設(shè)計要求</b></p><p> 利用VHDL語言設(shè)計一個電子時鐘,可以顯示時、分、
9、秒,具有時間設(shè)置功能,要求走時誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計出個性化顯示界面。</p><p><b> 二、設(shè)計思路</b></p><p> 電子表其實質(zhì)為計數(shù)器,計數(shù)單位為1秒。由秒,分,時組成,秒和分是60進制,用十進制和六進制組成,時是24進制,直接設(shè)計一個24進制計數(shù)器即可。要讓結(jié)果顯示出來,則用七段式數(shù)碼管輸出顯示計數(shù)值。此電
10、子表需要有置數(shù)功能,加一個控制開關(guān),當(dāng)開關(guān)為低電平時計數(shù),當(dāng)開關(guān)為高電平時置數(shù)。設(shè)計思路如下圖所示:</p><p><b> 三、程序設(shè)計</b></p><p><b> 1.置數(shù)還是計數(shù)</b></p><p> 電子表有計數(shù)和指數(shù)兩種狀態(tài),工作時執(zhí)行計數(shù)還是執(zhí)行置數(shù)則由一控制使能端EN決定,當(dāng)EN為低電平時,
11、電子表計數(shù),當(dāng)EN為高電平時,電子表置數(shù)。</p><p><b> 2.在哪一位置數(shù)</b></p><p> 該電子表有秒低位,秒高位,分低位,分高位,時低位,時高位組成,共有六位,置數(shù)由位選決定給哪一位置數(shù)。設(shè)置一個三位的二進制開關(guān)p2,p1,p0,通過編碼電路實現(xiàn)選擇置數(shù)位。</p><p> ?、?當(dāng)p2p1p0為“000”時,不
12、選擇任何位,此時電子表只是停止計數(shù),不置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“001”時,秒低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“010”時,秒高位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“011”時,分低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“100”時,分高位置數(shù)。</p>&l
13、t;p> ?、?當(dāng)p2p1p0為“101”時,時低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“110”時,時高位置數(shù)。</p><p><b> 關(guān)鍵程序:</b></p><p> if t'event and t='1' then </p><p> if en='
14、0' then </p><p><b> 計數(shù)語句</b></p><p> elsif en='1' and p="001" then s0<=num;</p><p><b> end if;</b></p><p><b>
15、 end if;</b></p><p><b> 3.計數(shù)單位</b></p><p> 首先脈沖頻率要足夠大,提供一個較快的掃描頻率,時數(shù)碼管穩(wěn)定地顯示計數(shù)值。計數(shù)單位為1秒,對脈沖clk 進行分頻,得到周期為1秒的計數(shù)單位t。程序中對clk進行512分頻,所以需要一個相近的脈沖,試驗箱上的CLK4的頻率范圍為625KHz~19.5Hz,通過跳線帽
16、選擇可以調(diào)出624Hz的頻率。所以脈沖頻率選用624Hz。</p><p><b> 關(guān)鍵程序:</b></p><p> if clk'event and clk='1' then</p><p> count:=count+1;</p><p><b> end if;<
17、;/b></p><p> t<=count(9);</p><p><b> 4.秒</b></p><p> 秒是60進制的,可以用一個十進制計數(shù)器和一個六進制計數(shù)器實現(xiàn)。秒的低位為十進制,當(dāng)?shù)?0個計數(shù)單位到達時,計數(shù)值清零,并產(chǎn)生一個進位信號,用以更高位的計數(shù),而其他時候進位信號為低電平,既沒有進位輸出。秒的高位為六進
18、制,每一個來自低位的進位信號高電平到達時計一次數(shù),當(dāng)?shù)诹鶄€進位信號到達時,計數(shù)值清零,同樣的產(chǎn)生一個進位信號。</p><p><b> 關(guān)鍵程序:</b></p><p> -----秒低位--------</p><p> ss0:process(t) is </p><p><b> begin
19、</b></p><p> if t'event and t='1' then </p><p> if en='0' then </p><p> if s0=9 then s0<=0;</p><p> c0<='1'; ---進位</p>
20、<p> else s0<=s0+1;</p><p><b> c0<='0';</b></p><p><b> end if;</b></p><p> elsif en='1' and p="001" then s0<=nu
21、m;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> -------秒高位----</p><p> ss1:process(c0) is </p
22、><p><b> begin </b></p><p> if c0'event and c0='1' then </p><p> if en='0' then</p><p> if s1=5 then s1<=0;</p><p> c1
23、<='1'; ---進位</p><p> else s1<=s1+1;</p><p><b> c1<='0';</b></p><p><b> end if;</b></p><p> elsif en='1' and
24、 p="010" then s1<=num;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> 5.分</b></p&
25、gt;<p> 分與秒類似,也是一個60進制的計數(shù)器,可用十進制和六進制組合實現(xiàn)。這里不再贅述。</p><p><b> 6.時</b></p><p> 時位不同于秒和分,因為時的低位不是任何進制的計數(shù)器,因此不能像上面那樣用兩個計數(shù)器組合,而只能將時的高低位作為一個整體,為一個二十四進制計數(shù)器,接受來自分位的進位信號,計數(shù)滿24時清零。由于數(shù)
26、碼管只能顯示0~9的數(shù)字,所以數(shù)碼管顯示時仍然要分高低位分別顯示。對于如何用兩個數(shù)碼管顯示著24個數(shù),用分段的方法解決。</p><p> h表示時位的計數(shù)值 ,h1表示時的高位,h0表示時的低位</p><p> h在0~9范圍內(nèi),則h1=0,h0=h;</p><p> h在10~19范圍內(nèi),則h1=1,h0=h-10;</p><p&
27、gt; h在20~23范圍內(nèi),則h1=2,h0=h-20;</p><p><b> 關(guān)鍵程序:</b></p><p> hh:process(c3,h) is</p><p><b> begin </b></p><p> if c3'event and c3='1&
28、#39; then</p><p> if h=23 then h<=0;</p><p> else h<=h+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b>
29、 case h is</b></p><p> when 0 to 9 =>h1<=0;h0<=h;</p><p> when 10 to 19 =>h1<=1;h0<=h-10;</p><p> when 20 to 23 =>h1<=2;h0<=h-20;</p><
30、p> when others =>null;</p><p><b> end case;</b></p><p> end process;</p><p><b> 7.數(shù)碼管顯示</b></p><p> 秒分時個兩位,分與秒,時與分之間用短線隔開,所以需要用8個數(shù)碼管,
31、從右到左分別為秒低位,秒高位,短線,分低位,分高位,短線,時低位,時高位。</p><p><b> 關(guān)鍵程序:</b></p><p> process(clk,w) is</p><p><b> begin</b></p><p> if clk'event and clk=&
32、#39;1' then</p><p> if w="111" then w<="000";</p><p><b> else</b></p><p><b> w<=w+1;</b></p><p><b> end
33、 if;</b></p><p><b> end if;</b></p><p><b> case w is</b></p><p> when "000"=>n<=s0;</p><p> when "001"=>n
34、<=s1;</p><p> when "010"=>n<=10; ---第10種狀態(tài),顯示分與秒之間的短線。</p><p> when "011"=>n<=m0;</p><p> when "100"=>n<=m1;</p><p&
35、gt; when "101"=>n<=10; ---第10種狀態(tài),顯示時與分之間的短線。</p><p> when "110"=>n<=h0;</p><p> when "111"=>n<=h1;</p><p> when others=>null;
36、</p><p><b> end case;</b></p><p> end process;</p><p><b> sel<=w;</b></p><p><b> 四、仿真結(jié)果</b></p><p> 1.clk分頻后用以計
37、數(shù),s0為十進制,仿真結(jié)果如下:</p><p><b> 2.s1為六進制</b></p><p><b> 3.m0為十進制</b></p><p><b> 4.m1為六進制</b></p><p> 5.h為二十四進制 </p><p>
38、<b> 五、實驗結(jié)果</b></p><p><b> 1.連線</b></p><p> 設(shè)定器件為EPM7128LC84-6,按分配好的引腳在試驗箱上連線。輸入管腳有:脈沖clk,使能控制端en,置數(shù)選擇p2p1p0,置數(shù)端x3x2x1x0。輸出管腳有:數(shù)碼管位選輸出sel~sel0,數(shù)碼管段選輸出d6~d0。</p>
39、<p><b> 連線照片如下:</b></p><p><b> 2.設(shè)計結(jié)果</b></p><p> 電子表實物照片如下:從左到右為時,分,秒。</p><p><b> 六、實驗心得</b></p><p> 本次實驗花費了較長時間,剛開始想電子表就
40、是一個計數(shù)器,之前實驗做過計數(shù)器,應(yīng)該很快能做出來,但當(dāng)開始寫程序時發(fā)現(xiàn)有很多不同,也遇到了比較困難的問題,要讓計數(shù)單位為1秒,脈沖還要比較快,脈沖的選擇和分頻就是一個重要問題。還有時的高低位如何在數(shù)碼管上顯示出來的問題,因為時是二十四進制的,自己想了很久也沒有辦法解決,后來請教同學(xué),經(jīng)同學(xué)點撥,采用分段賦值的方法讓時的地高位分別顯示。覺得自己還是思維方式太狹窄,解決問題的方法太單一,以后要擴展思維,一條路行不通就換另一種方法,也許會更
41、簡單。總的來說,本次設(shè)計受益匪淺,一方面鞏固了EDA所學(xué)知識,另一方面對自己的思維方式也有一些反思。七、附錄</p><p><b> 電子表源程序:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use iee
42、e.std_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity dzb is </p><p> port (clk:in std_logic; </p><p> en:in std_logic; ---置數(shù)開關(guān)</p>
43、<p> p:in std_logic_vector(2 downto 0);--置數(shù)選擇</p><p> x:in std_logic_vector(3 downto 0);--置數(shù)值</p><p> sel:out std_logic_vector(2 downto 0); ---掃描</p><p> d:out std_logic_ve
44、ctor(6 downto 0));</p><p><b> end dzb;</b></p><p> architecture behaver of dzb is</p><p> signal t:std_logic; --計數(shù)單位,即1秒</p><p> signal num:integer rang
45、e 0 to 9;--置數(shù)值</p><p> signal n:integer range 0 to 10; --數(shù)碼管顯示值</p><p> signal s0,s1,m0,m1,h0,h1:integer range 0 to 10;--秒,分,時</p><p> signal h:integer range 0 to 23; </p>
46、<p> signal c0,c1,c2,c3:std_logic; ---進位信號</p><p> signal w:std_logic_vector(2 downto 0); --位選</p><p><b> begin</b></p><p> ------分頻----</p><p>
47、fenpin:process(clk) is </p><p> variable count:std_logic_vector(9 downto 0);</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><
48、;p> count:=count+1;</p><p><b> end if;</b></p><p> t<=count(9);</p><p> end process; </p><p> -----秒低位--------</p><p> ss0:process(
49、t) is </p><p><b> begin </b></p><p> if t'event and t='1' then </p><p> if en='0' then </p><p> if s0=9 then s0<=0;</p>&l
50、t;p> c0<='1'; ---進位</p><p> else s0<=s0+1;</p><p><b> c0<='0';</b></p><p><b> end if;</b></p><p> elsif en='
51、;1' and p="001" then s0<=num;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> -------秒高位----<
52、/p><p> ss1:process(c0) is </p><p><b> begin </b></p><p> if c0'event and c0='1' then </p><p> if en='0' then</p><p> if
53、s1=5 then s1<=0;</p><p> c1<='1'; ---進位</p><p> else s1<=s1+1;</p><p><b> c1<='0';</b></p><p><b> end if;</b><
54、;/p><p> elsif en='1' and p="010" then s1<=num;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p&g
55、t;<p> -------分低位-------</p><p> mm0:process(c1) is </p><p><b> begin </b></p><p> if c1'event and c1='1' then </p><p> if en='0
56、' then</p><p> if m0=9 then m0<=0;</p><p> c2<='1'; ---進位</p><p> else m0<=m0+1;</p><p><b> c2<='0';</b></p><
57、p><b> end if;</b></p><p> elsif en='1' and p="011" then m0<=num;</p><p><b> end if;</b></p><p><b> end if;</b></p&
58、gt;<p> end process;</p><p> --------分高位-----</p><p> mm1:process(c2) is </p><p><b> begin </b></p><p> if c2'event and c2='1' then
59、</p><p> if en='0' then</p><p> if m1=5 then m1<=0;</p><p> c3<='1'; ---進位</p><p> else m1<=m1+1;</p><p><b> c3<=
60、9;0';</b></p><p><b> end if;</b></p><p> elsif en='1' and p="100" then m1<=num;</p><p><b> end if;</b></p><p>
61、<b> end if;</b></p><p> end process;</p><p> ---------時----</p><p> hh:process(c3,h) is</p><p><b> begin </b></p><p> if c3
62、39;event and c3='1' then</p><p> if h=23 then h<=0;</p><p> else h<=h+1;</p><p><b> end if;</b></p><p><b> end if;</b></p&g
63、t;<p><b> case h is</b></p><p> when 0 to 9 =>h1<=0;h0<=h;</p><p> when 10 to 19 =>h1<=1;h0<=h-10;</p><p> when 20 to 23 =>h1<=2;h0<
64、;=h-20;</p><p> when others =>null;</p><p><b> end case;</b></p><p> end process;</p><p> -------置數(shù)----------</p><p> zhizhu:process(x)
65、 is</p><p><b> begin</b></p><p><b> case x is</b></p><p> when "0000"=>num<=0;</p><p> when "0001"=>num<=1;&
66、lt;/p><p> when "0010"=>num<=2;</p><p> when "0011"=>num<=3;</p><p> when "0100"=>num<=4;</p><p> when "0101"
67、=>num<=5;</p><p> when "0110"=>num<=6;</p><p> when "0111"=>num<=7;</p><p> when "1000"=>num<=8;</p><p> when
68、"1001"=>num<=9; </p><p> when others=>null; </p><p> end case; </p><p> end process;</p><p> ----數(shù)碼管位選-----</p><p> weixuan:proces
69、s(clk,w) is</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> if w="111" then w<="000";</p><p><b
70、> else</b></p><p><b> w<=w+1;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> case w is</b>
71、;</p><p> when "000"=>n<=s0;</p><p> when "001"=>n<=s1;</p><p> when "010"=>n<=10;</p><p> when "011"=>
72、n<=m0;</p><p> when "100"=>n<=m1;</p><p> when "101"=>n<=10;</p><p> when "110"=>n<=h0;</p><p> when "111&qu
73、ot;=>n<=h1;</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;</p><p><b> sel<=w;</b></p><p>
74、 -------數(shù)碼管段選-------</p><p> duanxuan:process(n) is</p><p><b> begin</b></p><p> case n is --gfedcba</p><p> when 0=>d<="0111111";
75、 ----0 </p><p> when 1=>d<="0000110"; ----1</p><p> when 2=>d<="1011011"; ----2</p><p> when 3=>d<="1001111"; ----3<
76、;/p><p> when 4=>d<="1100110"; ----4</p><p> when 5=>d<="1101101"; ----5</p><p> when 6=>d<="1111101"; ----6</p>&
77、lt;p> when 7=>d<="0000111"; ----7</p><p> when 8=>d<="1111111"; ----8</p><p> when 9=>d<="1101111"; ----9</p><p>
78、when 10=>d<="1000000"; ----_</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;</p><p> end architecture be
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論