基于VHDL語言的電子表設(shè)計(jì)設(shè)計(jì)_第1頁
基于VHDL語言的電子表設(shè)計(jì)設(shè)計(jì)_第2頁
基于VHDL語言的電子表設(shè)計(jì)設(shè)計(jì)_第3頁
基于VHDL語言的電子表設(shè)計(jì)設(shè)計(jì)_第4頁
基于VHDL語言的電子表設(shè)計(jì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于VHDL語言的電子表設(shè)計(jì)裝 訂 線2012-2013學(xué)年第 一 學(xué)期 物電 學(xué)院期末考試卷 EDA大作業(yè) 設(shè)計(jì)制作電子表 (課程論文等試卷樣式)學(xué)號: 姓名: 班級: 成績:評語:(考試題目及要求)利用VHDL語言設(shè)計(jì)一個(gè)電子時(shí)鐘,可以顯示時(shí)、分、秒,具有時(shí)間設(shè)置功能,要求走時(shí)誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計(jì)出個(gè)性化顯示界面。注意事項(xiàng):1.上述三題任選一題,采用標(biāo)準(zhǔn)的作業(yè)考核類封面,A4打印。2.第一題40分,液晶+3分,個(gè)性化界面+3分。3.第二題45分,幅度調(diào)整+3分,頻率測量及顯示+5分。4.第三題48分,頻率分段設(shè)置+3分,頻率微調(diào)+5分,頻率范圍酌情加分。5

2、.雷同的程序和算法滿分值只計(jì)原題分值的三分之二,將依據(jù)設(shè)計(jì)報(bào)告的質(zhì)量和實(shí)驗(yàn)結(jié)果的描述計(jì)分。設(shè)計(jì)上的創(chuàng)新會酌情加分,實(shí)現(xiàn)上的偏離會酌情扣分。6.本門課程成績中,實(shí)驗(yàn)操作和實(shí)驗(yàn)報(bào)告占50%,本次作業(yè)考核占50%。目 錄一、設(shè)計(jì)要求1二、設(shè)計(jì)思路1三、程序設(shè)計(jì)21.置數(shù)還是計(jì)數(shù)22.在哪一位置數(shù)23.計(jì)數(shù)單位24.秒35.分46.時(shí)47.數(shù)碼管顯示5四、仿真結(jié)果6五、實(shí)驗(yàn)結(jié)果81.連線82.設(shè)計(jì)結(jié)果8六、實(shí)驗(yàn)心得9電子表源程序10設(shè)計(jì)制作電子表一、設(shè)計(jì)要求利用VHDL語言設(shè)計(jì)一個(gè)電子時(shí)鐘,可以顯示時(shí)、分、秒,具有時(shí)間設(shè)置功能,要求走時(shí)誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計(jì)出個(gè)性化顯示

3、界面。二、設(shè)計(jì)思路電子表其實(shí)質(zhì)為計(jì)數(shù)器,計(jì)數(shù)單位為1秒。由秒,分,時(shí)組成,秒和分是60進(jìn)制,用十進(jìn)制和六進(jìn)制組成,時(shí)是24進(jìn)制,直接設(shè)計(jì)一個(gè)24進(jìn)制計(jì)數(shù)器即可。要讓結(jié)果顯示出來,則用七段式數(shù)碼管輸出顯示計(jì)數(shù)值。此電子表需要有置數(shù)功能,加一個(gè)控制開關(guān),當(dāng)開關(guān)為低電平時(shí)計(jì)數(shù),當(dāng)開關(guān)為高電平時(shí)置數(shù)。設(shè)計(jì)思路如下圖所示:三、程序設(shè)計(jì)1.置數(shù)還是計(jì)數(shù)電子表有計(jì)數(shù)和指數(shù)兩種狀態(tài),工作時(shí)執(zhí)行計(jì)數(shù)還是執(zhí)行置數(shù)則由一控制使能端EN決定,當(dāng)EN為低電平時(shí),電子表計(jì)數(shù),當(dāng)EN為高電平時(shí),電子表置數(shù)。2.在哪一位置數(shù)該電子表有秒低位,秒高位,分低位,分高位,時(shí)低位,時(shí)高位組成,共有六位,置數(shù)由位選決定給哪一位置數(shù)。設(shè)

4、置一個(gè)三位的二進(jìn)制開關(guān)p2,p1,p0,通過編碼電路實(shí)現(xiàn)選擇置數(shù)位。 當(dāng)p2p1p0為“000”時(shí),不選擇任何位,此時(shí)電子表只是停止計(jì)數(shù),不置數(shù)。 當(dāng)p2p1p0為“001”時(shí),秒低位置數(shù)。 當(dāng)p2p1p0為“010”時(shí),秒高位置數(shù)。 當(dāng)p2p1p0為“011”時(shí),分低位置數(shù)。 當(dāng)p2p1p0為“100”時(shí),分高位置數(shù)。 當(dāng)p2p1p0為“101”時(shí),時(shí)低位置數(shù)。 當(dāng)p2p1p0為“110”時(shí),時(shí)高位置數(shù)。關(guān)鍵程序:if t'event and t='1' then if en='0' then 計(jì)數(shù)語句 elsif en='1' and

5、 p="001" then s0<=num; end if; end if;3.計(jì)數(shù)單位首先脈沖頻率要足夠大,提供一個(gè)較快的掃描頻率,時(shí)數(shù)碼管穩(wěn)定地顯示計(jì)數(shù)值。計(jì)數(shù)單位為1秒,對脈沖clk 進(jìn)行分頻,得到周期為1秒的計(jì)數(shù)單位t。程序中對clk進(jìn)行512分頻,所以需要一個(gè)相近的脈沖,試驗(yàn)箱上的CLK4的頻率范圍為625KHz19.5Hz,通過跳線帽選擇可以調(diào)出624Hz的頻率。所以脈沖頻率選用624Hz。關(guān)鍵程序:if clk'event and clk='1' then count:=count+1; end if; t<=count(9

6、);4.秒秒是60進(jìn)制的,可以用一個(gè)十進(jìn)制計(jì)數(shù)器和一個(gè)六進(jìn)制計(jì)數(shù)器實(shí)現(xiàn)。秒的低位為十進(jìn)制,當(dāng)?shù)?0個(gè)計(jì)數(shù)單位到達(dá)時(shí),計(jì)數(shù)值清零,并產(chǎn)生一個(gè)進(jìn)位信號,用以更高位的計(jì)數(shù),而其他時(shí)候進(jìn)位信號為低電平,既沒有進(jìn)位輸出。秒的高位為六進(jìn)制,每一個(gè)來自低位的進(jìn)位信號高電平到達(dá)時(shí)計(jì)一次數(shù),當(dāng)?shù)诹鶄€(gè)進(jìn)位信號到達(dá)時(shí),計(jì)數(shù)值清零,同樣的產(chǎn)生一個(gè)進(jìn)位信號。關(guān)鍵程序:-秒低位-ss0:process(t) is begin if t'event and t='1' then if en='0' then if s0=9 then s0<=0; c0<='1&#

7、39; -進(jìn)位 else s0<=s0+1; c0<='0' end if; elsif en='1' and p="001" then s0<=num; end if; end if; end process;-秒高位-ss1:process(c0) is begin if c0'event and c0='1' then if en='0' then if s1=5 then s1<=0; c1<='1' -進(jìn)位 else s1<=s1+1; c1

8、<='0' end if; elsif en='1' and p="010" then s1<=num; end if; end if; end process;5.分分與秒類似,也是一個(gè)60進(jìn)制的計(jì)數(shù)器,可用十進(jìn)制和六進(jìn)制組合實(shí)現(xiàn)。這里不再贅述。6.時(shí)時(shí)位不同于秒和分,因?yàn)闀r(shí)的低位不是任何進(jìn)制的計(jì)數(shù)器,因此不能像上面那樣用兩個(gè)計(jì)數(shù)器組合,而只能將時(shí)的高低位作為一個(gè)整體,為一個(gè)二十四進(jìn)制計(jì)數(shù)器,接受來自分位的進(jìn)位信號,計(jì)數(shù)滿24時(shí)清零。由于數(shù)碼管只能顯示09的數(shù)字,所以數(shù)碼管顯示時(shí)仍然要分高低位分別顯示。對于如何用兩個(gè)數(shù)碼管顯示著

9、24個(gè)數(shù),用分段的方法解決。h表示時(shí)位的計(jì)數(shù)值 ,h1表示時(shí)的高位,h0表示時(shí)的低位 h在09范圍內(nèi),則h1=0,h0=h; h在1019范圍內(nèi),則h1=1,h0=h-10; h在2023范圍內(nèi),則h1=2,h0=h-20;關(guān)鍵程序:hh:process(c3,h) is begin if c3'event and c3='1' then if h=23 then h<=0; else h<=h+1; end if; end if; case h is when 0 to 9 =>h1<=0;h0<=h; when 10 to 19 =&g

10、t;h1<=1;h0<=h-10; when 20 to 23 =>h1<=2;h0<=h-20; when others =>null; end case; end process;7.數(shù)碼管顯示秒分時(shí)個(gè)兩位,分與秒,時(shí)與分之間用短線隔開,所以需要用8個(gè)數(shù)碼管,從右到左分別為秒低位,秒高位,短線,分低位,分高位,短線,時(shí)低位,時(shí)高位。時(shí)高位h1時(shí)低位h0分高位m1分低位m0秒高位s1秒低位s0關(guān)鍵程序:process(clk,w) isbegin if clk'event and clk='1' then if w="11

11、1" then w<="000" else w<=w+1; end if; end if; case w is when "000"=>n<=s0; when "001"=>n<=s1; when "010"=>n<=10; -第10種狀態(tài),顯示分與秒之間的短線。 when "011"=>n<=m0; when "100"=>n<=m1; when "101"=>n&l

12、t;=10; -第10種狀態(tài),顯示時(shí)與分之間的短線。 when "110"=>n<=h0; when "111"=>n<=h1; when others=>null; end case; end process; sel<=w;四、仿真結(jié)果1.clk分頻后用以計(jì)數(shù),s0為十進(jìn)制,仿真結(jié)果如下:2.s1為六進(jìn)制3m0為十進(jìn)制4m1為六進(jìn)制5h為二十四進(jìn)制 五、實(shí)驗(yàn)結(jié)果1.連線設(shè)定器件為EPM7128LC84-6,按分配好的引腳在試驗(yàn)箱上連線。輸入管腳有:脈沖clk,使能控制端en,置數(shù)選擇p2p1p0,置數(shù)端x3x2x1

13、x0。輸出管腳有:數(shù)碼管位選輸出selsel0,數(shù)碼管段選輸出d6d0。連線照片如下:2.設(shè)計(jì)結(jié)果電子表實(shí)物照片如下:從左到右為時(shí),分,秒。六、實(shí)驗(yàn)心得本次實(shí)驗(yàn)花費(fèi)了較長時(shí)間,剛開始想電子表就是一個(gè)計(jì)數(shù)器,之前實(shí)驗(yàn)做過計(jì)數(shù)器,應(yīng)該很快能做出來,但當(dāng)開始寫程序時(shí)發(fā)現(xiàn)有很多不同,也遇到了比較困難的問題,要讓計(jì)數(shù)單位為1秒,脈沖還要比較快,脈沖的選擇和分頻就是一個(gè)重要問題。還有時(shí)的高低位如何在數(shù)碼管上顯示出來的問題,因?yàn)闀r(shí)是二十四進(jìn)制的,自己想了很久也沒有辦法解決,后來請教同學(xué),經(jīng)同學(xué)點(diǎn)撥,采用分段賦值的方法讓時(shí)的地高位分別顯示。覺得自己還是思維方式太狹窄,解決問題的方法太單一,以后要擴(kuò)展思維,一條

14、路行不通就換另一種方法,也許會更簡單??偟膩碚f,本次設(shè)計(jì)受益匪淺,一方面鞏固了所學(xué)知識,另一方面對自己的思維方式也有一些反思。七、附錄電子表源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dzb is port (clk:in std_logic; en:in std_logic; -置數(shù)開關(guān) p:in std_logic_vector(2 downto 0);-置數(shù)選擇 x:in std_logic_vector(3

15、 downto 0);-置數(shù)值 sel:out std_logic_vector(2 downto 0); -掃描 d:out std_logic_vector(6 downto 0); end dzb;architecture behaver of dzb issignal t:std_logic; -計(jì)數(shù)單位,即1秒signal num:integer range 0 to 9;-置數(shù)值signal n:integer range 0 to 10; -數(shù)碼管顯示值signal s0,s1,m0,m1,h0,h1:integer range 0 to 10;-秒,分,時(shí)signal h:in

16、teger range 0 to 23; signal c0,c1,c2,c3:std_logic; -進(jìn)位信號signal w:std_logic_vector(2 downto 0); -位選begin-分頻-fenpin:process(clk) is variable count:std_logic_vector(9 downto 0); begin if clk'event and clk='1' then count:=count+1; end if; t<=count(9); end process; -秒低位-ss0:process(t) is b

17、egin if t'event and t='1' then if en='0' then if s0=9 then s0<=0; c0<='1' -進(jìn)位 else s0<=s0+1; c0<='0' end if; elsif en='1' and p="001" then s0<=num; end if; end if; end process;-秒高位-ss1:process(c0) is begin if c0'event and c0=&#

18、39;1' then if en='0' then if s1=5 then s1<=0; c1<='1' -進(jìn)位 else s1<=s1+1; c1<='0' end if; elsif en='1' and p="010" then s1<=num; end if; end if; end process;-分低位-mm0:process(c1) is begin if c1'event and c1='1' then if en='0&

19、#39; then if m0=9 then m0<=0; c2<='1' -進(jìn)位 else m0<=m0+1; c2<='0' end if; elsif en='1' and p="011" then m0<=num; end if; end if; end process;-分高位-mm1:process(c2) is begin if c2'event and c2='1' then if en='0' then if m1=5 then m1<

20、;=0; c3<='1' -進(jìn)位 else m1<=m1+1; c3<='0' end if; elsif en='1' and p="100" then m1<=num; end if; end if; end process;-時(shí)-hh:process(c3,h) is begin if c3'event and c3='1' then if h=23 then h<=0; else h<=h+1; end if; end if; case h is when 0

21、 to 9 =>h1<=0;h0<=h; when 10 to 19 =>h1<=1;h0<=h-10; when 20 to 23 =>h1<=2;h0<=h-20; when others =>null; end case; end process;-置數(shù)-zhizhu:process(x) is begin case x is when "0000"=>num<=0; when "0001"=>num<=1; when "0010"=>nu

22、m<=2; when "0011"=>num<=3; when "0100"=>num<=4; when "0101"=>num<=5; when "0110"=>num<=6; when "0111"=>num<=7; when "1000"=>num<=8; when "1001"=>num<=9; when others=>null; end case;

23、end process;-數(shù)碼管位選-weixuan:process(clk,w) isbegin if clk'event and clk='1' then if w="111" then w<="000" else w<=w+1; end if; end if; case w is when "000"=>n<=s0; when "001"=>n<=s1; when "010"=>n<=10; when "011"=>n&l

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論