版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 2012--2013學(xué)年第 一 學(xué)期 物電 學(xué)院期末考試卷</p><p> EDA大作業(yè) 《設(shè)計(jì)制作電子表》 (課程論文等試卷樣式)</p><p> 學(xué)號(hào): 姓名: 班級(jí): </p><p><b> 成績(jī):</b></p>
2、;<p><b> 評(píng)語(yǔ):</b></p><p><b> (考試題目及要求)</b></p><p> 利用VHDL語(yǔ)言設(shè)計(jì)一個(gè)電子時(shí)鐘,可以顯示時(shí)、分、秒,具有時(shí)間設(shè)置功能,要求走時(shí)誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計(jì)出個(gè)性化顯示界面。</p><p><b> 注意
3、事項(xiàng):</b></p><p> 1.上述三題任選一題,采用標(biāo)準(zhǔn)的作業(yè)考核類(lèi)封面,A4打印。</p><p> 2.第一題40分,液晶+3分,個(gè)性化界面+3分。</p><p> 3.第二題45分,幅度調(diào)整+3分,頻率測(cè)量及顯示+5分。</p><p> 4.第三題48分,頻率分段設(shè)置+3分,頻率微調(diào)+5分,頻率范圍酌情加
4、分。</p><p> 5.雷同的程序和算法滿(mǎn)分值只計(jì)原題分值的三分之二,將依據(jù)設(shè)計(jì)報(bào)告的質(zhì)量和實(shí)驗(yàn)結(jié)果的描述計(jì)分。設(shè)計(jì)上的創(chuàng)新會(huì)酌情加分,實(shí)現(xiàn)上的偏離會(huì)酌情扣分。</p><p> 6.本門(mén)課程成績(jī)中,實(shí)驗(yàn)操作和實(shí)驗(yàn)報(bào)告占50%,本次作業(yè)考核占50%。</p><p><b> 目 錄</b></p><p>&
5、lt;b> 一、設(shè)計(jì)要求1</b></p><p><b> 二、設(shè)計(jì)思路1</b></p><p><b> 三、程序設(shè)計(jì)2</b></p><p> 1.置數(shù)還是計(jì)數(shù)2</p><p> 2.在哪一位置數(shù)2</p><p><b
6、> 3.計(jì)數(shù)單位2</b></p><p><b> 4.秒3</b></p><p><b> 5.分4</b></p><p><b> 6.時(shí)4</b></p><p><b> 7.數(shù)碼管顯示5</b><
7、/p><p><b> 四、仿真結(jié)果6</b></p><p><b> 五、實(shí)驗(yàn)結(jié)果8</b></p><p><b> 1.連線8</b></p><p><b> 2.設(shè)計(jì)結(jié)果8</b></p><p><b
8、> 六、實(shí)驗(yàn)心得9</b></p><p><b> 電子表源程序10</b></p><p><b> 設(shè)計(jì)制作電子表</b></p><p><b> 一、設(shè)計(jì)要求</b></p><p> 利用VHDL語(yǔ)言設(shè)計(jì)一個(gè)電子時(shí)鐘,可以顯示時(shí)、分、
9、秒,具有時(shí)間設(shè)置功能,要求走時(shí)誤差不大于每天10秒??刹捎脭?shù)碼管或液晶顯示,最好設(shè)計(jì)出個(gè)性化顯示界面。</p><p><b> 二、設(shè)計(jì)思路</b></p><p> 電子表其實(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é)果顯示出來(lái),則用七段式數(shù)碼管輸出顯示計(jì)數(shù)值。此電
10、子表需要有置數(shù)功能,加一個(gè)控制開(kāi)關(guān),當(dāng)開(kāi)關(guān)為低電平時(shí)計(jì)數(shù),當(dāng)開(kāi)關(guān)為高電平時(shí)置數(shù)。設(shè)計(jì)思路如下圖所示:</p><p><b> 三、程序設(shè)計(jì)</b></p><p><b> 1.置數(shù)還是計(jì)數(shù)</b></p><p> 電子表有計(jì)數(shù)和指數(shù)兩種狀態(tài),工作時(shí)執(zhí)行計(jì)數(shù)還是執(zhí)行置數(shù)則由一控制使能端EN決定,當(dāng)EN為低電平時(shí),
11、電子表計(jì)數(shù),當(dāng)EN為高電平時(shí),電子表置數(shù)。</p><p><b> 2.在哪一位置數(shù)</b></p><p> 該電子表有秒低位,秒高位,分低位,分高位,時(shí)低位,時(shí)高位組成,共有六位,置數(shù)由位選決定給哪一位置數(shù)。設(shè)置一個(gè)三位的二進(jìn)制開(kāi)關(guān)p2,p1,p0,通過(guò)編碼電路實(shí)現(xiàn)選擇置數(shù)位。</p><p> ① 當(dāng)p2p1p0為“000”時(shí),不
12、選擇任何位,此時(shí)電子表只是停止計(jì)數(shù),不置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“001”時(shí),秒低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“010”時(shí),秒高位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“011”時(shí),分低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“100”時(shí),分高位置數(shù)。</p>&l
13、t;p> ?、?當(dāng)p2p1p0為“101”時(shí),時(shí)低位置數(shù)。</p><p> ?、?當(dāng)p2p1p0為“110”時(shí),時(shí)高位置數(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> 計(jì)數(shù)語(yǔ)句</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.計(jì)數(shù)單位</b></p><p> 首先脈沖頻率要足夠大,提供一個(gè)較快的掃描頻率,時(shí)數(shù)碼管穩(wěn)定地顯示計(jì)數(shù)值。計(jì)數(shù)單位為1秒,對(duì)脈沖clk 進(jìn)行分頻,得到周期為1秒的計(jì)數(shù)單位t。程序中對(duì)clk進(jìn)行512分頻,所以需要一個(gè)相近的脈沖,試驗(yàn)箱上的CLK4的頻率范圍為625KHz~19.5Hz,通過(guò)跳線帽
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進(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)位信號(hào),用以更高位的計(jì)數(shù),而其他時(shí)候進(jìn)位信號(hào)為低電平,既沒(méi)有進(jìn)位輸出。秒的高位為六進(jìn)
18、制,每一個(gè)來(lái)自低位的進(jìn)位信號(hào)高電平到達(dá)時(shí)計(jì)一次數(shù),當(dāng)?shù)诹鶄€(gè)進(jìn)位信號(hào)到達(dá)時(shí),計(jì)數(shù)值清零,同樣的產(chǎn)生一個(gè)進(jìn)位信號(hào)。</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'; ---進(jìn)位</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'; ---進(jìn)位</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> 分與秒類(lèi)似,也是一個(gè)60進(jìn)制的計(jì)數(shù)器,可用十進(jìn)制和六進(jìn)制組合實(shí)現(xiàn)。這里不再贅述。</p><p><b> 6.時(shí)</b></p><p> 時(shí)位不同于秒和分,因?yàn)闀r(shí)的低位不是任何進(jìn)制的計(jì)數(shù)器,因此不能像上面那樣用兩個(gè)計(jì)數(shù)器組合,而只能將時(shí)的高低位作為一個(gè)整體,為一個(gè)二十四進(jìn)制計(jì)數(shù)器,接受來(lái)自分位的進(jìn)位信號(hào),計(jì)數(shù)滿(mǎn)24時(shí)清零。由于數(shù)
26、碼管只能顯示0~9的數(shù)字,所以數(shù)碼管顯示時(shí)仍然要分高低位分別顯示。對(duì)于如何用兩個(gè)數(shù)碼管顯示著24個(gè)數(shù),用分段的方法解決。</p><p> h表示時(shí)位的計(jì)數(shù)值 ,h1表示時(shí)的高位,h0表示時(shí)的低位</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> 秒分時(shí)個(gè)兩位,分與秒,時(shí)與分之間用短線隔開(kāi),所以需要用8個(gè)數(shù)碼管,
31、從右到左分別為秒低位,秒高位,短線,分低位,分高位,短線,時(shí)低位,時(shí)高位。</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),顯示時(shí)與分之間的短線。</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分頻后用以計(jì)
37、數(shù),s0為十進(jìn)制,仿真結(jié)果如下:</p><p><b> 2.s1為六進(jìn)制</b></p><p><b> 3.m0為十進(jìn)制</b></p><p><b> 4.m1為六進(jìn)制</b></p><p> 5.h為二十四進(jìn)制 </p><p>
38、<b> 五、實(shí)驗(yàn)結(jié)果</b></p><p><b> 1.連線</b></p><p> 設(shè)定器件為EPM7128LC84-6,按分配好的引腳在試驗(yàn)箱上連線。輸入管腳有:脈沖clk,使能控制端en,置數(shù)選擇p2p1p0,置數(shù)端x3x2x1x0。輸出管腳有:數(shù)碼管位選輸出sel~sel0,數(shù)碼管段選輸出d6~d0。</p>
39、<p><b> 連線照片如下:</b></p><p><b> 2.設(shè)計(jì)結(jié)果</b></p><p> 電子表實(shí)物照片如下:從左到右為時(shí),分,秒。</p><p><b> 六、實(shí)驗(yàn)心得</b></p><p> 本次實(shí)驗(yàn)花費(fèi)了較長(zhǎng)時(shí)間,剛開(kāi)始想電子表就
40、是一個(gè)計(jì)數(shù)器,之前實(shí)驗(yàn)做過(guò)計(jì)數(shù)器,應(yīng)該很快能做出來(lái),但當(dāng)開(kāi)始寫(xiě)程序時(shí)發(fā)現(xiàn)有很多不同,也遇到了比較困難的問(wèn)題,要讓計(jì)數(shù)單位為1秒,脈沖還要比較快,脈沖的選擇和分頻就是一個(gè)重要問(wèn)題。還有時(shí)的高低位如何在數(shù)碼管上顯示出來(lái)的問(wèn)題,因?yàn)闀r(shí)是二十四進(jìn)制的,自己想了很久也沒(méi)有辦法解決,后來(lái)請(qǐng)教同學(xué),經(jīng)同學(xué)點(diǎn)撥,采用分段賦值的方法讓時(shí)的地高位分別顯示。覺(jué)得自己還是思維方式太狹窄,解決問(wèn)題的方法太單一,以后要擴(kuò)展思維,一條路行不通就換另一種方法,也許會(huì)更
41、簡(jiǎn)單??偟膩?lái)說(shuō),本次設(shè)計(jì)受益匪淺,一方面鞏固了EDA所學(xué)知識(shí),另一方面對(duì)自己的思維方式也有一些反思。七、附錄</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ù)開(kāi)關(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; --計(jì)數(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;--秒,分,時(shí)</p><p> signal h:integer range 0 to 23; </p>
46、<p> signal c0,c1,c2,c3:std_logic; ---進(jìn)位信號(hào)</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'; ---進(jìn)位</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'; ---進(jìn)位</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'; ---進(jìn)位</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'; ---進(jìn)位</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> ---------時(shí)----</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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論