

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p> 一、設(shè)計(jì)題目和要求-----------------------------------------------------------------2</p><p> 二、設(shè)計(jì)思路-------------------------------------------------------------
2、-------------2</p><p> 三、單元模塊設(shè)計(jì)--------------------------------------------------------------------3</p><p> -----------------------------------------------------------------------------------
3、---------8</p><p> 3.1、FENPIN模塊設(shè)計(jì)-----------------------------------------------------(3,4)</p><p> 3.2、FIRST模塊設(shè)計(jì)------------------------------------------------------(4,5)</p><p>
4、; 3.3、JIANJISHU模塊設(shè)計(jì)------------------------------------------------(5,6)</p><p> 3.4、CHOICE和VIEW模塊設(shè)計(jì)------------------------------------------(7,8)</p><p> 四、硬件實(shí)驗(yàn)-----------------------------
5、----------------------------------------------8</p><p> 五、心得體會(huì)---------------------------------------------------------------------------9</p><p> 附頁(yè):程序代碼--------------------------------------
6、----------------------------------10</p><p> ---------------------------------------------------------------------------------------------17</p><p><b> 一、設(shè)計(jì)題目和要求</b></p><
7、;p> 設(shè)計(jì)題目為:微波爐定時(shí)控制器</p><p> 要求:1、復(fù)位開關(guān):</p><p><b> 啟動(dòng)開關(guān): </b></p><p><b> 烹調(diào)時(shí)間設(shè)置: </b></p><p><b> 烹調(diào)時(shí)間顯示:</b></p><p&
8、gt;<b> 七段碼測(cè)試:</b></p><p><b> 啟動(dòng)輸出:</b></p><p> 按TEST鍵可以測(cè)試七段碼管,顯示為“8888”;</p><p> 設(shè)定時(shí)間后,按啟動(dòng)鍵開始烹調(diào),同時(shí)七段碼顯示剩余時(shí)間,時(shí)間為0時(shí),顯示烹調(diào)完成信息“CDEF”</p><p><
9、b> 二、設(shè)計(jì)思路</b></p><p> A.先有一個(gè)大概的模塊話設(shè)計(jì),就如下圖:</p><p> 預(yù)設(shè)初值 倒計(jì)時(shí)減計(jì)數(shù) 輸出數(shù)據(jù)</p><p> B:再在上面大模塊的基礎(chǔ)上進(jìn)行改進(jìn)</p><p><b> 增加復(fù)位端和測(cè)試端</b><
10、/p><p><b> 復(fù)位輸出數(shù)據(jù)</b></p><p> 預(yù)設(shè) 倒計(jì)時(shí) 實(shí)現(xiàn)閃爍</p><p> 初值 減計(jì)數(shù)</p><p><b> 測(cè)試</b></p><p> C:具體的設(shè)計(jì)過(guò)程:</p><p>
11、; 1、剛開始設(shè)計(jì)是先完成了FENPIN模塊的設(shè)計(jì),因?yàn)檫@個(gè)模塊比較簡(jiǎn)單。</p><p> 2、然后是對(duì)設(shè)初值大模塊的設(shè)計(jì),在這一部分的設(shè)計(jì)遇到兩方案:</p><p> ?。?)設(shè)計(jì)四個(gè)按鈕的初始話模塊,四個(gè)按鈕分別控制秒,十秒,分,十分4個(gè)數(shù)值的初始化加;</p><p> (2)設(shè)計(jì)兩個(gè)按鈕的初始化模塊,兩個(gè)按鈕分別提供一個(gè)移位信號(hào)和一個(gè)加信號(hào);<
12、;/p><p> 兩個(gè)方案都用了一下,發(fā)現(xiàn)還好是2號(hào)方案比較好,不僅程序上比較簡(jiǎn)單而且省了很多按鈕的使用,比較符合實(shí)際應(yīng)用的要求;</p><p> 3、在完成了初始話模塊的設(shè)計(jì)之后,接下來(lái)就是減計(jì)數(shù)模塊的設(shè)計(jì),只要把由初始化模塊所提供的數(shù)據(jù)進(jìn)行減計(jì)數(shù)即可;</p><p> 4、在完成以上三個(gè)模塊時(shí),程序的已經(jīng)初見(jiàn)雛形了,然后把這三個(gè)模塊連接起來(lái),添加上復(fù)位和測(cè)
13、試按鈕就可以了;</p><p> 5、用動(dòng)態(tài)掃描的方法隊(duì)數(shù)據(jù)進(jìn)行輸出,其中在輸入數(shù)據(jù)是使相應(yīng)的數(shù)據(jù)進(jìn)行閃爍。</p><p><b> 三.單元模塊設(shè)計(jì)</b></p><p> 單元模塊設(shè)計(jì)部分主要有4部分組成:</p><p> ?。ㄒ唬?、FENPIN模塊,用于給后面的JIANJISHU模塊和VIEW模塊提供
14、合適的頻率。</p><p> ?。ǘ?、FIRST模塊,用于設(shè)定微波爐的初試時(shí)間而用。</p><p> ?。ㄈ?、JIANJISHU模塊,配合FENPIN模塊提供的時(shí)鐘頻率實(shí)現(xiàn)每秒減一的計(jì)數(shù)。</p><p> ?。ㄋ模?、CHOICE模塊和VIEW模塊,利用動(dòng)態(tài)掃描的方法顯出對(duì)應(yīng)數(shù)字。</p><p> 3.1 FENPIN模塊的設(shè)計(jì)&
15、lt;/p><p> FENPIN模塊主要利用1Khz的時(shí)鐘信號(hào)進(jìn)行分頻。得到1s的outlck時(shí)鐘信號(hào)(用于后期JIANJISHU模塊的使用)和0.5s的screen的時(shí)鐘信號(hào)(用于VIEW的顯示閃爍使用)。</p><p> 說(shuō)明:試驗(yàn)箱上有1Khz,2Khz等多個(gè)時(shí)鐘信號(hào)。而在這里采用1Khz的信號(hào)使用。1Khz/1000=1s,所以采用1Khz進(jìn)行千分頻得到1s的信號(hào)。</p
16、><p><b> 實(shí)驗(yàn)波形圖:</b></p><p> 每秒產(chǎn)生一個(gè)時(shí)鐘脈沖</p><p> ?。ǔ绦虼a見(jiàn)附錄。)</p><p> Move此時(shí)數(shù)碼管有輸出</p><p> Move選中時(shí)數(shù)碼管無(wú)輸出</p><p> 3.2 FIRST模塊設(shè)計(jì)<
17、/p><p> FIRST模塊主要用于對(duì)時(shí)間設(shè)定初始值而用,其中設(shè)有ABLE和CLK兩時(shí)鐘信號(hào),分別用于外接按鈕信號(hào)而用,其中CLK用于進(jìn)行加計(jì)數(shù),ABLE用于移位而用。輸出o1,o2,o3和o4分別是輸出秒,十秒,分,十分。而輸出o5是為VIEW實(shí)現(xiàn)閃爍而用的。其中的RES和TEST要配合JIANJISHU模塊中的RES和TEST同時(shí)控制才能有效(具體會(huì)在JIANJISHU模塊中詳細(xì)介紹)。</p>
18、<p> 說(shuō)明:開始設(shè)計(jì)時(shí),由于沒(méi)有考慮全面設(shè)計(jì)了一個(gè)有4個(gè)按鍵分別控制秒,十秒,分,十分的方案,因?yàn)檎n設(shè)要接近與實(shí)際設(shè)計(jì),而實(shí)際不可能給予如此多的按鍵,這樣不僅占用大量空間而且產(chǎn)品也是非常的不美觀,所以之后就改成現(xiàn)在的由ABLE控制移位,再由CLK給予時(shí)鐘脈沖的方式進(jìn)行設(shè)計(jì),最后發(fā)現(xiàn)這樣的設(shè)計(jì)不僅沒(méi)有上述的缺點(diǎn)更加使我的程序變的更加的簡(jiǎn)單。</p><p><b> 波形圖仿真: &
19、lt;/b></p><p> 每個(gè)上升沿都會(huì)進(jìn)行加計(jì)數(shù)</p><p> 當(dāng)res和test為零時(shí)輸出分別是“0000”和“8888”</p><p> Able在每個(gè)脈沖到來(lái)是都會(huì)進(jìn)行移位,而o5正好顯示出正在加的位數(shù)</p><p> 注意:編寫此段代碼是要注意秒位和分位都是記從1記到9然后進(jìn)位自己變成0的,</p&
20、gt;<p> 而十秒位和十分位是記到5然后變成0的。</p><p><b> (程序代碼見(jiàn)附頁(yè))</b></p><p> 3.3 JIANJISHU模塊的設(shè)計(jì)</p><p> JIANJISHU模塊的主要用于對(duì)FIRST的數(shù)據(jù)進(jìn)行選擇性的處理和輸出:</p><p> ?。ㄒ唬?、當(dāng)JIANJ
21、ISHU模塊中的res=0時(shí),由于res作為輸入同樣也連接這FRIST模塊中</p><p> 的res,他們是由一個(gè)輸入共同控制的,所以此時(shí)輸出的就是“0000”;</p><p> (二)、當(dāng)JIANJISHU模塊中的test=0時(shí),同res一樣的道理,此時(shí)輸出為“8888”;</p><p> (三)、當(dāng)q4=15(輸出為F)或start=0時(shí),LED就
22、不會(huì)亮了,表示工作完成或處</p><p> 于等待狀態(tài),此時(shí)不對(duì)FIRST模塊中的數(shù)據(jù)進(jìn)行任何處理就直接輸出;</p><p> (四)、在以上條件都不滿足的情況下,若此時(shí)start=1,那么JIANJISHU模塊才</p><p> 開始了真正的工作狀態(tài),即配合FENPIN模塊中時(shí)鐘outclk開始每秒減一的記時(shí)計(jì)數(shù);</p><p&g
23、t; 本程序中復(fù)位鍵res和test的詳細(xì)說(shuō)明:</p><p> 這里的res和test和模塊FRIST中的res和test是用同一個(gè)控制端,而且JIANJISHU的res和test是必不可少的。因?yàn)槊看芜M(jìn)行計(jì)數(shù)完后由于是利用信號(hào)進(jìn)行減計(jì)數(shù),在記完一次數(shù)之后q1,q2,q3和q4都會(huì)保持最后一次的狀態(tài),如果不及時(shí)清零的話,那么下一次的res,test以及加計(jì)數(shù)就是只能對(duì)前一級(jí)的輸入進(jìn)行復(fù)位和測(cè)試,輸出的將是
24、前一級(jí)的各個(gè)位數(shù)減去q1,q2,q3和q4的值,所以在JIANJISHU模塊中進(jìn)行清零是十分重要的。</p><p><b> 波形圖仿真:</b></p><p> 輸入初值為“0015”</p><p> 當(dāng)start=1時(shí)開始配合clks的始終上升沿開始減計(jì)數(shù)</p><p> 在各位都記到0時(shí),就數(shù)碼管就
25、會(huì)顯示 “FEDC”同時(shí)LED熄滅</p><p> 這就是上次提到的復(fù)位是清零了所有的中間信號(hào),這樣輸出為FIRST中提供原始數(shù)據(jù)</p><p><b> ?。ǔ绦虼a見(jiàn)附頁(yè))</b></p><p> 3.4 CHOICE模塊和VIEW模塊</p><p> CHOICE模塊和VIEW模塊必須放在一起進(jìn)行使用
26、,CHOICE模塊是進(jìn)行數(shù)據(jù)選則而使用的,VIEW模塊是用于在相應(yīng)的為進(jìn)行輸出對(duì)應(yīng)的數(shù),兩者和起來(lái)就是一個(gè)動(dòng)態(tài)掃描的過(guò)程。</p><p> A:CHOICE模塊;</p><p> 說(shuō)明:這里的clk時(shí)鐘信號(hào)是使用和FENPIN模塊中一樣的時(shí)鐘信號(hào)(1Khz),因?yàn)槿?lt;/p><p> 的眼睛對(duì)時(shí)間的分辨為20個(gè)微秒,用1Khz的信號(hào)完全能滿足這樣的要求;要
27、注意CHOICE有兩個(gè)輸出,o2顯然輸出的是對(duì)應(yīng)的數(shù)據(jù)信號(hào),而o1要輸出的是一個(gè)位選信號(hào),是為下一個(gè)模塊VIEW顯示而用。</p><p><b> B:VIEW模塊;</b></p><p> 說(shuō)明:f1是接受位信號(hào)用的,f2是接受數(shù)據(jù)而用的。</p><p> 詳細(xì)說(shuō)明一下screen和able的作用:</p><
28、p> Screen是有FENPIN模塊通過(guò)對(duì)時(shí)鐘信號(hào)分頻得到的,當(dāng)在模塊FRIST選中某一</p><p> 進(jìn)行加數(shù)初始化是,VIEW就可以在時(shí)鐘screen在為1是正常輸出able所指的那位,</p><p> 當(dāng)screen為0時(shí),able所指的那位不能對(duì)應(yīng)輸出,這樣就能達(dá)到讓相應(yīng)的數(shù)碼管閃爍</p><p><b> 的效果。<
29、/b></p><p><b> 波形圖:</b></p><p> ?。?程序代碼見(jiàn)附頁(yè))</p><p><b> 四.硬件實(shí)驗(yàn)</b></p><p><b> 管腳設(shè)置</b></p><p> 注釋:Clk1:選用的是1Khz的信
30、號(hào);</p><p> Clk2,Move,Rest,Testt:選用的是按鈕信號(hào);</p><p> Startt:使用的是開關(guān)信號(hào);</p><p> Lighto:LED輸出;</p><p><b> 五、心得體會(huì)</b></p><p> 這次我獨(dú)立完成了一次完整的程序設(shè)計(jì),在
31、整個(gè)的設(shè)計(jì)過(guò)程中我感覺(jué)我的動(dòng)手能力得到了比較高的提高吧,學(xué)了的東西如果連這么一個(gè)比較簡(jiǎn)單的課設(shè)都不能完成的話我感覺(jué)是比較羞愧的一件事情。</p><p> 在整個(gè)的設(shè)計(jì)過(guò)程中現(xiàn)在回頭好好回想一下我覺(jué)得還是有很多不足的,做任何事情起步的時(shí)候就應(yīng)該有一個(gè)全局觀,但是剛開始由于我沒(méi)有考慮完全,在FIRST模塊種設(shè)計(jì)了有四個(gè)按鍵控制的初始化程序,之后發(fā)現(xiàn)這樣不僅程序非常的繁瑣,而且這種課設(shè)應(yīng)該和實(shí)際好好聯(lián)系一下,有誰(shuí)家
32、的微波爐就光是剛開始設(shè)定初值都有這么多按鈕,那么不僅難看而且比較耗資源,使用也不是最方便的,所以之后經(jīng)過(guò)分析后選擇了現(xiàn)在使用的由兩個(gè)按鈕就能事先數(shù)據(jù)初始化的功能。因此在以后的設(shè)計(jì)工作中也要學(xué)會(huì)有大局觀。</p><p> 同是在編寫復(fù)位和測(cè)試兩個(gè)按鍵的功能是遇到了比較大的麻煩,總是輸出一些莫名其妙的數(shù)據(jù),之后發(fā)現(xiàn)是由于在JIANJISHU模塊的中的中間信號(hào)沒(méi)有清零而導(dǎo)致的,這樣的一個(gè)遇到困難然后去解決這個(gè)問(wèn)題的
33、過(guò)程讓我對(duì)中間信號(hào)有了比較深刻的理解。</p><p> 在完成大半個(gè)程序之后,我發(fā)現(xiàn)在初始化數(shù)據(jù)的時(shí)候沒(méi)有任何的提示是在對(duì)哪以為進(jìn)行加,所以就去請(qǐng)教了老師,以老師的方案就是用一個(gè)時(shí)間較長(zhǎng)的時(shí)鐘信號(hào)對(duì)輸出數(shù)碼管的管腳進(jìn)行或操作(數(shù)碼管是共陰),當(dāng)時(shí)我嫌這么方法寫的代碼比較長(zhǎng),所以我就嘗試了一下在輸出數(shù)碼管的位選上做文章,用這個(gè)較長(zhǎng)的時(shí)鐘信號(hào)和位信號(hào)進(jìn)行位操作,這樣可以實(shí)現(xiàn)閃爍,但是在時(shí)鐘信號(hào)為’1’時(shí)輸入的位信
34、號(hào)是“111”,由于實(shí)驗(yàn)箱上的數(shù)碼管都進(jìn)行了引腳的鎖定,所以會(huì)讓第8個(gè)數(shù)碼管點(diǎn)亮,所以這個(gè)方案宣告失敗,最后就采用了現(xiàn)程序使用的方法,和老師的差不多,寫起來(lái)也比較方便。</p><p> 總的來(lái)說(shuō)這樣的課程設(shè)計(jì)比上課有意思多了,在實(shí)際中還是有很多不是在課本上能學(xué)的到的東西,這個(gè)需要自己去理解,去總結(jié)的。</p><p><b> 附頁(yè):</b></p>
35、<p> ————————————微波爐定時(shí)控制器程序代碼————————————</p><p> 第一部分:TOP(頂層文件)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsig
36、ned.all;</p><p> entity top is</p><p> port(rest,clk1,clk2,move,startt,testt:in std_logic;</p><p> lighto:out std_logic;</p><p> sel:out std_logic_vector(2 downto 0
37、);</p><p> seg:out std_logic_vector(7 downto 0));</p><p><b> end;</b></p><p> architecture three of top is</p><p> component fenpin is</p><p&
38、gt; port(clk:in std_logic; 分頻</p><p> outclk,screen:out std_logic);</p><p> end component;</p><p> component first is</p><p> port(clk,able,res,tes
39、t:in std_logic; 初始化數(shù)據(jù)</p><p> o1,o2,o3,o4,o5:out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component jianjishu is</p><p>
40、port(clks,start,res,test:in std_logic;</p><p> in1,in2,in3,in4:in std_logic_vector(3 downto 0); 減計(jì)數(shù)</p><p> light:out std_logic;</p><p> out1,out2,out3,out4:out std_logi
41、c_vector(3 downto 0));</p><p> end component;</p><p> component choice is</p><p> port(clk:std_logic;</p><p> f1,f2,f3,f4:in std_logic_vector(3 downto 0);</p>
42、<p> o1:out std_logic_vector(1 downto 0); 位選</p><p> o2:out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component view is</p><p&g
43、t; port(screen:in std_logic;</p><p> f1:in std_logic_vector(1 downto 0);</p><p> f2,able:in std_logic_vector(3 downto 0); 顯示輸出</p><p> segout:out std_logic_vector(7 down
44、to 0);</p><p> selout:out std_logic_vector(2 downto 0));</p><p> end component;</p><p> signal b,c,d,e,f,g,h,i,j:std_logic_vector(3 downto 0);</p><p> signal a,k:st
45、d_logic;</p><p> signal q:std_logic_vector(1 downto 0);</p><p> signal p:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> u1: fenpin port map
46、(clk=>clk1,outclk=>a,screen=>k);</p><p> u2: first port map (clk=>clk2,res=>rest,test=>testt,able=>move,</p><p> o1=>b,o2=>c,o3=>d,o4=>e,o5=>j);</p>
47、<p> u3:jianjishu port map (clks=>a,start=>startt,res=>rest,test=>testt,in1=>b,in2=>c,</p><p> in3=>d,in4=>e,light=>lighto,out1=>f,out2=>g,out3=>h,out4=>i);<
48、/p><p> u4:choice port map (clk=>clk1,f1=>f,f2=>g,f3=>h,f4=>i,o1=>q,o2=>p);</p><p> u5:view port map (able=>j,screen=>k,f1=>q,f2=>p,segout=>seg,selout=>
49、sel);</p><p><b> end;</b></p><p> ————————————————————————————————————</p><p> 第二部分:FENPIN(時(shí)鐘分頻)</p><p> library ieee;</p><p> use ieee.st
50、d_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity fenpin is</p><p> port(clk:in std_logic;</p><p> outclk,screen:out std_logic);</p>
51、<p><b> end;</b></p><p> architecture first of fenpin is</p><p> signal Q1,Q2:std_logic;</p><p><b> begin</b></p><p> one:process(clk)
52、</p><p> variable count1:integer range 0 to 1002;</p><p><b> begin</b></p><p><b> Q1<='0';</b></p><p> if count1>1000 then Q1&
53、lt;='1';count1:=0;</p><p> elsif clk'event and clk='1' then count1:=count1+1; 分出1秒信號(hào)</p><p><b> end if;</b></p><p> end process;</p>
54、<p> two:process(clk)</p><p> variable count2:integer range 0 to 500;</p><p><b> begin</b></p><p> if clk'event and clk='1' then </p><p&
55、gt; if count2<250 then Q2<='1';count2:=count2+1;</p><p> else Q2<='0';count2:=count2+1; 閃爍信號(hào)</p><p><b> end if;</b></p><p><
56、;b> end if;</b></p><p> if count2>499 then count2:=0;</p><p><b> end if;</b></p><p> end process;</p><p> outclk<=Q1;</p><p&g
57、t; screen<=Q2;</p><p><b> end; </b></p><p> 第三部分:FIRST(數(shù)據(jù)初始化)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use
58、 ieee.std_logic_unsigned.all;</p><p> entity first is</p><p> port(clk,able,res,test:in std_logic;</p><p> o1,o2,o3,o4,o5:out std_logic_vector(3 downto 0));</p><p>&
59、lt;b> end;</b></p><p> architecture two of first is</p><p> signal q1,q2,q3,q4,q5:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> p
60、rocess(able)</p><p><b> begin</b></p><p> if able'event and able='1' then </p><p> if q5<4 then q5<=q5+1; 位選信號(hào),選擇相應(yīng)的位進(jìn)行初始</p><p&g
61、t; else q5<="0000"; 化,其中“0000”為空位。</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process; </p><p> p
62、rocess(clk,res,test,q4)</p><p><b> begin</b></p><p> if res='0' then q1<="0000";q2<="0000";q3<="0000";q4<="0000"; --復(fù)位
63、鍵</p><p> elsif test='0' then q1<="1000";q2<="1000";q3<="1000";q4<="1000"; --測(cè)試鍵</p><p> elsif clk'event and clk='1' th
64、en </p><p> case q5 is</p><p> when "0001"=> if q1<9 then q1<=q1+1;</p><p> else q1<="0000"; 秒位加數(shù)</p><p><b> end if;&
65、lt;/b></p><p> when "0010"=> if q2<5 then q2<=q2+1;</p><p> else q2<="0000"; 十秒位加數(shù)</p><p><b> end if;</b></p><p&
66、gt; when "0011"=> if q3<9 then q3<=q3+1;</p><p> else q3<="0000"; 分位加數(shù)</p><p><b> end if;</b></p><p> when "0100"=&
67、gt; if q4<5 then q4<=q4+1;</p><p> else q4<="0000"; 十分位加數(shù)</p><p><b> end if;</b></p><p> when others=>null;</p><p><b>
68、; end case;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> o1<=q1;</b></p><p><b> o2<=q2;</b></p>
69、<p><b> o3<=q3;</b></p><p><b> o4<=q4;</b></p><p> o5<=q5; --在VIEW模塊中選擇閃爍位</p><p><b> end;</b>
70、;</p><p> ————————————————————————————————————</p><p> 第四部分:JIANJISHU(數(shù)據(jù)按秒倒計(jì)時(shí))</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use
71、ieee.std_logic_unsigned.all;</p><p> entity jianjishu is</p><p> port(clks,start,res,test:in std_logic;</p><p> in1,in2,in3,in4:in std_logic_vector(3 downto 0);</p><p&
72、gt; light:out std_logic;</p><p> out1,out2,out3,out4:out std_logic_vector(3 downto 0));</p><p><b> end;</b></p><p> architecture one of jianjishu is</p><p
73、> signal q1,q2,q3,q4:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(start,clks,res,test,q4)</p><p> variable a:std_logic_vector(1 downto 0);
74、</p><p><b> begin</b></p><p> if res='0' or test='0' then q1<="0000";q2<="0000";q3<="0000";q4<="0000";</p&
75、gt;<p> --對(duì)信號(hào)都清零設(shè)置</p><p> elsif q4=(in4-15) or start='0' then a:="00";light<='0'; </p><p> --當(dāng)q4=15或start=0時(shí)不進(jìn)行減計(jì)數(shù),同時(shí)LED不亮</p><p> elsif
76、start='1' then a:="11";light<='1';</p><p> --當(dāng)start=1時(shí)LED點(diǎn)亮同時(shí)開始倒計(jì)時(shí)</p><p><b> case a is</b></p><p> when "11"=>if clks'e
77、vent and clks='1' then</p><p> if (in1-q1)=0 then q1<=(in1-9);q2<=q2+1;</p><p> else q1<=q1+1;</p><p><b> end if;</b></p><p> --q1開始為0,
78、當(dāng)q1=in1時(shí),對(duì)q1賦值為(in1-9),為負(fù)數(shù),</p><p> 同時(shí)對(duì)q2進(jìn)行加1,那么(in2-q2)就可以視線減1,若不是那么q1<=q1+1,可以實(shí)現(xiàn)</p><p> ?。╥n1-q1)從9開始的倒計(jì)數(shù)</p><p> if (in2-q2)=0 and (in1-q1)=0 then </p><p> q3
79、<=q3+1;q2<=(in2-5);q1<=(in1-9);</p><p><b> end if;</b></p><p> --當(dāng)輸出out1=0和out2=0時(shí)進(jìn)位減1,同時(shí)out1=9,out2=5;</p><p> if (in3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 t
80、hen</p><p> q4<=q4+1;q3<=(in3-9);q2<=(in2-5);q1<=(in1-9);</p><p><b> end if;</b></p><p> if (in4-q4)=0 and (in3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 </p
81、><p> thenq4<=(in4-15);q3<=(in3-14);q2<=(in2-13);q1<=(in1-12);</p><p><b> end if;</b></p><p> --當(dāng)所有計(jì)數(shù)完畢(都為0)時(shí),實(shí)現(xiàn)輸出FEDC;</p><p><b> end i
82、f;</b></p><p> when others=>null;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> out1&l
83、t;=(in1-q1);</p><p> out2<=(in2-q2);</p><p> out3<=(in3-q3);</p><p> out4<=(in4-q4);</p><p><b> end;</b></p><p> ————————————————
84、————————————————————</p><p> 第五部分:CHOICE(數(shù)據(jù)選擇模塊)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><
85、p> entity choice is</p><p> port(clk:std_logic;</p><p> f1,f2,f3,f4:in std_logic_vector(3 downto 0);</p><p> o1:out std_logic_vector(1 downto 0);</p><p> o2:out
86、 std_logic_vector(3 downto 0));</p><p><b> end;</b></p><p> architecture one of choice is</p><p> signal q:std_logic_vector(1 downto 0);</p><p><b>
87、 begin</b></p><p> process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1' then q<=q+1;</p><p><b> end if;</b&
88、gt;</p><p><b> case q is</b></p><p> when "00" => o2<=f1; </p><p> when "01" => o2<=f2;</p><p> when "10" =&g
89、t; o2<=f3; 選擇輸出數(shù)據(jù)</p><p> when "11" => o2<=f4; </p><p> when others=> null;</p><p><b> end case;</b></p><p> end process
90、;</p><p> o1<=q; --位選信號(hào)</p><p><b> end;</b></p><p> ————————————————————————————————————</p><p> 第六部分:VIEW(顯示模塊)</p><p&
91、gt; library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity view is</p><p> port(screen:in std_logic;</p>
92、<p> f1:in std_logic_vector(1 downto 0);</p><p> f2,able:in std_logic_vector(3 downto 0);</p><p> segout:out std_logic_vector(7 downto 0);</p><p> selout:out std_logic_vec
93、tor(2 downto 0));</p><p><b> end;</b></p><p> architecture one of view is</p><p> signal seg:std_logic_vector(6 downto 0);</p><p> signal sel:std_logic
94、_vector(2 downto 0);</p><p><b> begin</b></p><p> selout<=sel;</p><p> segout(6 downto 0)<=seg;</p><p> sel<="000" when f1=0 else<
95、/p><p> "001" when f1=1 else</p><p> "010" when f1=2 else 相應(yīng)的數(shù)據(jù)選擇對(duì)應(yīng)的位進(jìn)行輸出</p><p> "011" when f1=3 else</p><p><b> "000&quo
96、t;;</b></p><p> segout(7)<='1' when f1=2 else '0'; --在第三個(gè)數(shù)碼管輸出小數(shù)點(diǎn)</p><p> process(f2,able,sel)</p><p><b> begin</b></p><p>
97、; if (able="0001" and sel="000") or (able="0010" and sel="001") or </p><p> (able="0011" and sel="010") or (able="0100" and sel="0
98、11") then</p><p> if screen='1' then seg<="0000000"; --無(wú)輸出</p><p><b> else</b></p><p> case f2 is</p><p> when "0000&qu
99、ot; => seg<="0111111";</p><p> when "0001" => seg<="0000110";</p><p> when "0010" => seg<="1011011";</p><p> w
100、hen "0011" => seg<="1001111";</p><p> when "0100" => seg<="1100110";</p><p> when "0101" => seg<="1101101";</p&
101、gt;<p> when "0110" => seg<="1111101";</p><p> when "0111" => seg<="0000111";</p><p> when "1000" => seg<="1111
102、111";</p><p> when "1001" => seg<="1101111";</p><p> when "1010" => seg<="1110111";</p><p> when "1011" => s
103、eg<="1111100";</p><p> when "1100" => seg<="0111001";</p><p> when "1101" => seg<="1011110";</p><p> when "1
104、110" => seg<="1111001";</p><p> when "1111" => seg<="1110001";</p><p> when others=>null;</p><p> end case; --有
105、輸出</p><p> end if; --實(shí)現(xiàn)閃爍</p><p><b> else</b></p><p> case f2 is</p><p> when "0000" => seg<="0111111";<
106、/p><p> when "0001" => seg<="0000110";</p><p> when "0010" => seg<="1011011";</p><p> when "0011" => seg<="1
107、001111";</p><p> when "0100" => seg<="1100110";</p><p> when "0101" => seg<="1101101";</p><p> when "0110" =>
108、; seg<="1111101";</p><p> when "0111" => seg<="0000111";</p><p> when "1000" => seg<="1111111";</p><p> when &quo
109、t;1001" => seg<="1101111";</p><p> when "1010" => seg<="1110111";</p><p> when "1011" => seg<="1111100";</p><
110、;p> when "1100" => seg<="0111001";</p><p> when "1101" => seg<="1011110";</p><p> when "1110" => seg<="1111001"
111、;;</p><p> when "1111" => seg<="1110001";</p><p> when others=>null;</p><p> end case; --在沒(méi)選中的位正常輸出</p><p><b> end if;</b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)---微波爐定時(shí)控制器的設(shè)置
- eda課程設(shè)計(jì)---微波爐控制器設(shè)計(jì)
- eda綜合課程設(shè)計(jì)報(bào)告-----微波爐定時(shí)控制器的設(shè)計(jì)
- eda課程設(shè)計(jì)—微波爐定時(shí)設(shè)計(jì)
- vhdl微波爐控制器課程設(shè)計(jì)-- 數(shù)字微波爐控制器
- 課程設(shè)計(jì)---vhdl設(shè)計(jì)微波爐控制器
- 數(shù)電課程設(shè)計(jì)--微波爐定時(shí)控制器的設(shè)計(jì)與制作
- 數(shù)字電路課程設(shè)計(jì)微波爐控制器
- 課程設(shè)計(jì)---基于fpga的微波爐控制器設(shè)計(jì)
- 微波爐課程設(shè)計(jì)---基于微波爐控制系統(tǒng)設(shè)計(jì)
- 微波爐控制器論文
- 畢業(yè)設(shè)計(jì)--微波爐控制器系統(tǒng)
- 基于fpga的微波爐控制器設(shè)計(jì)
- 可編程微波爐控制器系統(tǒng)設(shè)計(jì)
- 簡(jiǎn)易微波爐控制器的設(shè)計(jì)與實(shí)現(xiàn)
- eda課程設(shè)計(jì)---彩燈控制器
- 開題報(bào)告---基于fpga的微波爐控制器設(shè)計(jì)
- 基于fpga的微波爐控制器【開題報(bào)告】
- eda課程設(shè)計(jì)彩燈控制器
- eda課程設(shè)計(jì)-彩燈控制器
評(píng)論
0/150
提交評(píng)論