版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(論文)</p><p> 課程名稱 :電子設(shè)計自動化 課程設(shè)計</p><p> 題目名稱 :多功能數(shù)字電子鐘</p><p> 專 業(yè) :電子信息科學(xué)與技術(shù)電子三班</p><p><b> 學(xué) 號 : </b></p><p>
2、;<b> 姓 名 :</b></p><p><b> 指導(dǎo)教師 :</b></p><p> 設(shè)計時間 :2011-2012-1學(xué)期16、17周</p><p><b> 目 錄</b></p><p> 一、課程設(shè)計的目的及要求:3</p>
3、<p> 1.1 課程設(shè)計的目的:3</p><p> 1.2課程設(shè)計的要求:3</p><p> 二、電子鐘的總的設(shè)計方案及原理圖:3</p><p> 2.1電子鐘的設(shè)計的總體框圖:3</p><p> 2.1.2、工作進程:4</p><p> 2.2電子鐘各部分的原理及其仿真
4、:4</p><p> 2.2.1 分頻器的設(shè)計原理及其仿真:4</p><p> 2.2.2 控制器的設(shè)計原理及其仿真:6</p><p> 2.2.3 調(diào)時器的設(shè)計原理及其仿真:7</p><p> 2.2.4 時鐘的設(shè)計原理及其仿真:7</p><p> 2.2.5 秒表的設(shè)計原理及其仿真:
5、10</p><p> 2.2.6 鬧鐘的設(shè)計原理及其仿真:13</p><p> 2.2.7 鬧鐘響鈴的設(shè)計原理及其仿真:15</p><p> 2.2.8 顯示模塊的設(shè)計原理及其仿真:17</p><p> 三、 電子鐘設(shè)計的總體仿真:20</p><p> 四、 收獲與體會:20</p&
6、gt;<p> 五、 參考文獻(xiàn):20</p><p> 一、課程設(shè)計的目的及要求:</p><p> 1.1 課程設(shè)計的目的:</p><p> 1、熟悉EDA工具設(shè)計數(shù)字電路的方法。</p><p> 2、掌握VHDL描述硬件的方法。</p><p> 3、加深對VHDL的理解和掌握。&l
7、t;/p><p> 1.2課程設(shè)計的要求:</p><p><b> 基本功能要求:</b></p><p> 設(shè)計一個電子時鐘,要求可以顯示時、分、秒,用戶可以設(shè)置時間。</p><p><b> 擴展功能要求:</b></p><p> 跑表功能,鬧鐘功能,調(diào)整數(shù)碼
8、管的亮度。</p><p> 二、電子鐘的總的設(shè)計方案及原理圖:</p><p> 2.1電子鐘的設(shè)計的總體框圖:</p><p><b> 2.1.1、</b></p><p> 2.1.2、工作進程:</p><p> 當(dāng)開機后,系統(tǒng)首先是時鐘狀態(tài),當(dāng)按下鍵8進入調(diào)時,鍵4調(diào)節(jié)時間,
9、再按下鍵8退出調(diào)時,按兩下鍵5進入秒表,同時鍵8為開始及清零,鍵1為結(jié)束及開始,再按兩下鍵5進入鬧鐘設(shè)置,鍵4調(diào)節(jié)時間,最后按兩下鍵5返回時鐘狀態(tài),</p><p> 2.2電子鐘各部分的原理及其仿真:</p><p> 2.2.1 分頻器的設(shè)計原理及其仿真:</p><p> 2.2.1.1、原理程序:</p><p> libra
10、ry ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all; </p><p> entity dvf is----------------狀態(tài)機控制模塊</p><p> port(clk:in std_logic;
11、 -------輸入10MHZ信號</p><p> clk_out1:out std_logic;</p><p> clk_out2:out std_logic;</p><p> clk_out3:out std_logic);</p><p><b> end;</b></p><p&
12、gt; architecture one of dvf is</p><p> signal clk_tmp1: std_logic;</p><p> signal clk_tmp2: std_logic;</p><p> signal clk_tmp3: std_logic;</p><p> signal cnt1:inte
13、ger range 0 to 4999999;</p><p> signal cnt2:integer range 0 to 49999;</p><p> signal cnt3:integer range 0 to 49;</p><p><b> begin</b></p><p> fen1: proc
14、ess(clk,clk_tmp1)--時鐘信號1秒,1HZ</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> if cnt1<4999999 then</p><p> cnt1<=cn
15、t1+1;</p><p><b> else</b></p><p><b> cnt1<=0; </b></p><p> clk_tmp1<=NOT clk_tmp1 ;</p><p><b> end if;</b></p><
16、p><b> end if;</b></p><p> clk_out1<=clk_tmp1; </p><p> end process;</p><p> fen2: process(clk,clk_tmp2)--跑表信號100HZ</p><
17、p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> if cnt2<49999 then cnt2<=cnt2+1;</p><p> else cnt2<=0; clk_tmp2<=NOT clk_tmp
18、2 ;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> clk_out2<=clk_tmp2; </p><p> end process;</p>
19、;<p> fen3: process(clk,clk_tmp3)--用于控制模塊的時鐘</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> if cnt3<49 then</p><
20、p> cnt3<=cnt3+1;</p><p><b> else</b></p><p><b> cnt3<=0; </b></p><p> clk_tmp3<=NOT clk_tmp3 ;</p><p><b> end if;</b&g
21、t;</p><p><b> end if;</b></p><p> clk_out3<=clk_tmp3; </p><p> end process;</p><p>
22、<b> end ;</b></p><p> 2.2.1.2、分頻器的RTL仿真:</p><p> 2.2.2 控制器的設(shè)計原理及其仿真:</p><p> 2.2.2.1、控制器原理程序:</p><p> library ieee;</p><p> use ieee.std_
23、logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity control is</p><p> port (ad_in: in std_logic; </p><p> out_en: out std_logic_vector(1 down
24、to 0));</p><p><b> end;</b></p><p> architecture one of control is</p><p> signal moshis:std_logic_vector(1 downto 0):="00";</p><p><b>
25、begin</b></p><p> process(ad_in)</p><p><b> begin</b></p><p> if ad_in'event and ad_in='1' then</p><p> if moshis="10"then&l
26、t;/p><p> moshis<="00"; </p><p> else moshis<=moshis+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end
27、 process;</p><p> out_en<=moshis;</p><p><b> end;</b></p><p> 2.2.2.2、RTL仿真:</p><p> 2.2.3 調(diào)時器的設(shè)計原理及其仿真:</p><p> 2.2.3.1、調(diào)時器的原理程序:</
28、p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity tiaoshi is</p><p> port( clk_t,dis_clk : in std_logic;</p><p> ad_in : in std
29、_logic;</p><p> ad_out : out std_logic);</p><p><b> end ;</b></p><p> architecture bhv of tiaoshi is </p><p> signal q1: std_logic;</p><p>
30、<b> begin </b></p><p> q1<=clk_t and dis_clk;</p><p> ad_out<=q1 or ad_in;</p><p><b> end;</b></p><p> 2.2.3.2、RTL仿真:</p><
31、p> 2.2.4 時鐘的設(shè)計原理及其仿真:</p><p> 2.2.4.1、時鐘的原理程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p>&l
32、t;p> entity clock is --時鐘</p><p> port( en_in : in std_logic_vector(1 downto 0);</p><p> clk_in : in std_logic;</p><p> s_out1 : out std_logic_vector(3 downto 0
33、);--秒的個位</p><p> s_out2 : out std_logic_vector(3 downto 0);--秒的十位</p><p> m_out1 : out std_logic_vector(3 downto 0);--分的個位</p><p> m_out2 : out std_logic_vector(3
34、downto 0);--分的十位</p><p> h_out1 : out std_logic_vector(3 downto 0);--小時的個位</p><p> h_out2 : out std_logic_vector(3 downto 0));--小時的十位</p><p><b> end ;</b>&l
35、t;/p><p> architecture one of clock is</p><p> signal tmp10:std_logic_vector(3 downto 0);</p><p> signal tmp:std_logic_vector(3 downto 0);</p><p> signal m_tmp10:std_l
36、ogic_vector(3 downto 0);</p><p> signal m_tmp:std_logic_vector(3 downto 0);</p><p> signal h_tmp10:std_logic_vector(3 downto 0);</p><p> signal h_tmp:std_logic_vector(3 downto 0)
37、;</p><p> signal s_jinwei:std_logic;--秒的溢出</p><p> signal m_jinwei:std_logic;--分鐘的溢出</p><p><b> begin</b></p><p> --************************************
38、*******************************</p><p> no1:process(clk_in,tmp,tmp10)</p><p><b> begin </b></p><p> if clk_in'event and clk_in='1' then</p><p&g
39、t; if en_in="00"then </p><p> if (tmp10="0101" and tmp="1001") then </p><p> tmp10<="0000";tmp<="0000";</p><p> elsif tmp
40、="1001" then </p><p> tmp<="0000";tmp10<=tmp10+1;</p><p> else tmp<=tmp+1;</p><p><b> end if;</b></p><p><b> end if;&
41、lt;/b></p><p><b> end if;</b></p><p> if tmp10="0000" and tmp="0000" then s_jinwei<='1';</p><p> else s_jinwei<='0';</
42、p><p><b> end if;</b></p><p> s_out2<=tmp10;</p><p> s_out1<=tmp;</p><p> end process;</p><p> --**************************************
43、*****************************</p><p> no2: process(s_jinwei,en_in,m_tmp,m_tmp10)--用來輸出分鐘</p><p><b> begin </b></p><p> if s_jinwei'event and s_jinwei='1'
44、then</p><p> if en_in="00"then </p><p> if (m_tmp10="0101" and m_tmp="1001") then </p><p> m_tmp10<="0000";m_tmp<="0000";&
45、lt;/p><p> elsif m_tmp="1001" then </p><p> m_tmp<="0000";m_tmp10<=m_tmp10+1;</p><p> else m_tmp<=m_tmp+1;</p><p><b> end if;</b&
46、gt;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if m_tmp10="0101" and m_tmp="1001" then m_jinwei<='1';</p>
47、<p> else m_jinwei<='0';</p><p><b> end if;</b></p><p> m_out2<=m_tmp10;</p><p> m_out1<=m_tmp;</p><p> end process;</p>
48、<p> --*******************************************************************</p><p> no3: process(m_jinwei,en_in,h_tmp,h_tmp10)--用來輸出小時</p><p><b> begin </b></p><p&g
49、t; if m_jinwei'event and m_jinwei='1' then</p><p> if en_in="00"then </p><p> if (h_tmp10="0010" and h_tmp="0100") then </p><p> h_tmp1
50、0<="0000";h_tmp<="0000";</p><p> elsif h_tmp="1001" then </p><p> h_tmp<="0000";h_tmp10<=h_tmp10+1;</p><p> else h_tmp<=h_t
51、mp+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> h_out2<=h_tmp10;</p><p> h_o
52、ut1<=h_tmp;</p><p> end process;</p><p><b> end;</b></p><p> 2.2.4.2、時鐘的RTL仿真:</p><p> 2.2.5 秒表的設(shè)計原理及其仿真:</p><p> 2.2.5.1、秒表的原理程序:</
53、p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity second is --秒表</p><p> port( en_in
54、 : in std_logic_vector(1 downto 0);</p><p> clk_in ,jian1 : in std_logic;</p><p> reset : in std_logic;</p><p> s_out1 : out std_logic_vector(3 downto 0);--秒下一位的個位<
55、;/p><p> s_out2 : out std_logic_vector(3 downto 0);--秒下一秒的十位</p><p> m_out1 : out std_logic_vector(3 downto 0);--秒的個位</p><p> m_out2 : out std_logic_vector(3 downto 0
56、);--秒的十位</p><p> h_out1 : out std_logic_vector(3 downto 0);--分鐘的個位</p><p> h_out2 : out std_logic_vector(3 downto 0));--分鐘的十位</p><p><b> end ;</b></p>
57、<p> architecture one of second is</p><p> signal tmp10:std_logic_vector(3 downto 0);</p><p> signal tmp:std_logic_vector(3 downto 0);</p><p> signal m_tmp10:std_logic_ve
58、ctor(3 downto 0);</p><p> signal m_tmp:std_logic_vector(3 downto 0);</p><p> signal h_tmp10:std_logic_vector(3 downto 0);</p><p> signal h_tmp:std_logic_vector(3 downto 0);</p
59、><p> signal s_jinwei:std_logic;--秒下一位的溢出</p><p> signal m_jinwei:std_logic;--秒的溢出</p><p> signal start:std_logic:='0';</p><p><b> begin</b></p&
60、gt;<p> --*******************************************************************</p><p> no1:process(clk_in,tmp,tmp10,reset,start) --用來輸出秒的下一位</p><p><b> begin </b></p>
61、<p> if reset='1' then tmp10<="0000";tmp<="0000";</p><p> elsif start='1' then</p><p> elsif clk_in'event and clk_in='1' then</
62、p><p> if en_in="01"then </p><p> if (tmp10="1001" and tmp="1001") then </p><p> tmp10<="0000";tmp<="0000";</p><p&
63、gt; elsif tmp="1001" then </p><p> tmp<="0000";tmp10<=tmp10+1;</p><p> else tmp<=tmp+1;</p><p><b> end if;</b></p><p><b
64、> end if;</b></p><p><b> end if;</b></p><p> if tmp10="1001" and tmp="1001" then s_jinwei<='1';--可能有錯誤,有待修改</p><p> else s_ji
65、nwei<='0';</p><p><b> end if;</b></p><p> s_out2<=tmp10;</p><p> s_out1<=tmp;</p><p> end process;</p><p> --************
66、*******************************************************no2: process(s_jinwei,en_in,m_tmp,m_tmp10,reset,start)--用來輸出秒</p><p><b> begin </b></p><p> if reset='1' then m_tmp1
67、0<="0000";m_tmp<="0000";</p><p> elsif start='1' then</p><p> elsif s_jinwei'event and s_jinwei='1' then</p><p> if en_in="01&q
68、uot;then </p><p> if (m_tmp10="0101" and m_tmp="1001") then </p><p> m_tmp10<="0000";m_tmp<="0000";</p><p> elsif m_tmp="1001&q
69、uot; then </p><p> m_tmp<="0000";m_tmp10<=m_tmp10+1;</p><p> else m_tmp<=m_tmp+1;</p><p><b> end if;</b></p><p><b> end if;<
70、/b></p><p><b> end if;</b></p><p> if m_tmp10="0101" and m_tmp="1001" then m_jinwei<='1';</p><p> else m_jinwei<='0';<
71、/p><p><b> end if;</b></p><p> m_out2<=m_tmp10;</p><p> m_out1<=m_tmp;</p><p> end process;</p><p> --*********************************
72、**********************************no3: process(m_jinwei,en_in,h_tmp,h_tmp10,reset,start)--用來輸出分鐘</p><p><b> begin </b></p><p> if reset='1' then h_tmp10<="0000&quo
73、t;;h_tmp<="0000";</p><p> elsif start='1' then</p><p> elsif m_jinwei'event and m_jinwei='1' then</p><p> if en_in="01"then </p>
74、<p> if (h_tmp10="0101" and h_tmp="1001") then </p><p> h_tmp10<="0000";h_tmp<="0000";</p><p> elsif h_tmp="1001" then </p>
75、<p> h_tmp<="0000";h_tmp10<=h_tmp10+1;</p><p> else h_tmp<=h_tmp+1;</p><p><b> end if;</b></p><p><b> end if;</b></p>&l
76、t;p><b> end if;</b></p><p> h_out2<=h_tmp10;</p><p> h_out1<=h_tmp;</p><p> end process;</p><p> process(jian1,start)</p><p><
77、b> begin</b></p><p> if jian1'event and jian1='1' then</p><p> start<=not start;</p><p> else start<=start;</p><p><b> end if;<
78、/b></p><p> end process; </p><p><b> end;</b></p><p> 2.2.5.2、RTL仿真:</p><p> 2.2.6 鬧鐘的設(shè)計原理及其仿真:</p><p> 2.2.6.1 鬧鐘的原理程序</p><
79、p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity alarm is --鬧鐘的設(shè)置</p><p> port( en_in : in st
80、d_logic_vector(1 downto 0);</p><p> ala_set : in std_logic;</p><p> sec,sec10 : out std_logic_vector(3 downto 0);</p><p> min : out std_logic_vector(3 downto 0);--分的個位&
81、lt;/p><p> min10 : out std_logic_vector(3 downto 0);--分的十位</p><p> hr : out std_logic_vector(3 downto 0);--小時的個位</p><p> hr10 : out std_logic_vector(3 downto 0));--小時
82、的十位</p><p><b> end ;</b></p><p> architecture one of alarm is</p><p> signal m_tmp10:std_logic_vector(3 downto 0);</p><p> signal m_tmp:std_logic_vector
83、(3 downto 0);</p><p> signal h_tmp10:std_logic_vector(3 downto 0);</p><p> signal h_tmp:std_logic_vector(3 downto 0);</p><p> signal m_jinwei:std_logic;--分鐘的溢出</p><p&g
84、t; signal s_jinwei:std_logic;</p><p> signal s_tmp:std_logic_vector(3 downto 0);</p><p> signal s_tmp10:std_logic_vector(3 downto 0);</p><p><b> begin</b></p>
85、<p> --*******************************************************************no1: process(ala_set,en_in,s_tmp,s_tmp10)--用來輸出秒</p><p><b> begin </b></p><p> if ala_set'event
86、 and ala_set='1' then</p><p> if en_in="10"then </p><p> if (s_tmp10="0101" and s_tmp="1001") then </p><p> s_tmp10<="0000";s_t
87、mp<="0000";</p><p> elsif s_tmp="1001" then </p><p> s_tmp<="0000";s_tmp10<=s_tmp10+1;</p><p> else s_tmp<=s_tmp+1;</p><p>
88、<b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> if s_tmp10="0101" and s_tmp="1001" then s_jinwei<
89、;='1';</p><p> else s_jinwei<='0';</p><p><b> end if;</b></p><p> sec10<=s_tmp10;</p><p> sec<=s_tmp;</p><p> end
90、 process;</p><p> --*******************************************************************no0: process(s_jinwei,en_in,m_tmp,m_tmp10)--用來輸出分鐘</p><p><b> begin </b></p><p>
91、 if s_jinwei'event and s_jinwei='1' then</p><p> if en_in="10"then </p><p> if (m_tmp10="0101" and m_tmp="1001") then </p><p> m_tmp10&
92、lt;="0000";m_tmp<="0000";</p><p> elsif m_tmp="1001" then </p><p> m_tmp<="0000";m_tmp10<=m_tmp10+1;</p><p> else m_tmp<=m_tmp
93、+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> if m_tmp10="0101" and m_tmp="100
94、1" then m_jinwei<='1';</p><p> else m_jinwei<='0';</p><p><b> end if;</b></p><p> min10<=m_tmp10;</p><p> min<=m_tmp;&l
95、t;/p><p> end process;</p><p> --*******************************************************************no2: process(m_jinwei,en_in,h_tmp,h_tmp10)--用來輸出小時</p><p><b> begin </b&
96、gt;</p><p> if m_jinwei'event and m_jinwei='1' then</p><p> if en_in="10"then </p><p> if (h_tmp10="0010" and h_tmp="0100") then </p&
97、gt;<p> h_tmp10<="0000";h_tmp<="0000";</p><p> elsif h_tmp="1001" then </p><p> h_tmp<="0000";h_tmp10<=h_tmp10+1;</p><p&g
98、t; else h_tmp<=h_tmp+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> hr10<=h_tmp10;</p
99、><p> hr<=h_tmp;</p><p> end process;</p><p><b> end;</b></p><p> 2.2.6.2、RTL仿真:</p><p> 2.2.7 鬧鐘響鈴的設(shè)計原理及其仿真:</p><p> 2.2.7.
100、1、鬧鐘響鈴的原理程序:</p><p><b> --小時寄存器</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity hr_jicun is</p><p> port( cl
101、k: in std_logic;</p><p> adin: in std_logic_vector(3 downto 0);</p><p> adin10:in std_logic_vector(3 downto 0);</p><p> adout:out std_logic_vector(3 downto 0);</p><p&g
102、t; adout10:out std_logic_vector(3 downto 0));</p><p><b> end;</b></p><p> architecture bhv of hr_jicun is</p><p><b> begin </b></p><p> pro
103、cess(clk)</p><p><b> begin </b></p><p> if clk'event and clk='1' then</p><p> adout<=adin;adout10<=adin10;</p><p><b> end if;<
104、;/b></p><p> end process;</p><p><b> end;</b></p><p> --分鐘寄存器---------------------------------</p><p> library ieee;</p><p> use ieee.s
105、td_logic_1164.all;</p><p> entity m_jicun is</p><p> port( clk: in std_logic;</p><p> adin: in std_logic_vector(3 downto 0);</p><p> adin10:in std_logic_vector(3 do
106、wnto 0);</p><p> adout:out std_logic_vector(3 downto 0);</p><p> adout10:out std_logic_vector(3 downto 0));</p><p><b> end;</b></p><p> architecture bhv
107、 of m_jicun is</p><p><b> begin </b></p><p> process(clk)</p><p><b> begin </b></p><p> if clk'event and clk='1' then</p>
108、<p> adout<=adin;adout10<=adin10;</p><p><b> end if;</b></p><p> end process;</p><p><b> end;</b></p><p><b> --比較器</b&
109、gt;</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity bijiaoqi is</p><p> port (clk :
110、 in std_logic; </p><p> alah_in: in std_logic_vector(3 downto 0);--鬧鐘小時個位輸入</p><p> alah10_in:in std_logic_vector(3 downto 0);--鬧鐘小時十位輸入</p><p> cloch_in: in std_logic_vector(3 d
111、ownto 0);--時鐘小時個位輸入</p><p> cloch10_in:in std_logic_vector(3 downto 0);--時鐘小時十位輸入</p><p> alam_in : in std_logic_vector(3 downto 0);--鬧鐘分鐘個位輸入</p><p> alam10_in:in std_logic_vect
112、or(3 downto 0);--鬧鐘分鐘十位輸入</p><p> clocm_in : in std_logic_vector(3 downto 0);--時鐘分鐘個位輸入</p><p> clocm10_in:in std_logic_vector(3 downto 0);--時鐘分鐘十位輸入</p><p> ad_out : out std_lo
113、gic );--驅(qū)動輸出 </p><p><b> end;</b></p><p> architecture bhv of bijiaoqi is</p><p><b> begin</b></p><p> process(alah_in,cloch_in ,clk, alam_i
114、n,clocm_in, alah10_in,cloch10_in , alam10_in,clocm10_in)</p><p><b> begin</b></p><p> if (alah_in=cloch_in and alam_in=clocm_in and alah10_in=cloch10_in and alam10_in=clocm10_in an
115、d alam_in>1)</p><p> then ad_out<=clk ;else ad_out<='1'; </p><p><b> end if;</b></p><p> end process;</p><p><b> end;</b>&l
116、t;/p><p> 2.2.8 顯示模塊的設(shè)計原理及其仿真:</p><p> 2.2.8.1顯示器的原理程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.al
117、l;</p><p> entity scanled is</p><p><b> port(</b></p><p> clk : in std_logic;</p><p> alarmset : in std_logic_vector(1 d
118、ownto 0); --如果進入鬧鐘定時,則進行定時譯碼</p><p> second : in std_logic_vector(1 downto 0); --如果進入秒表,則進行秒表譯碼</p><p> sl,sh,ml,mh,hl,hh: in std_logic_vector(3 downto 0
119、); --走時掃描譯碼</p><p> asl,ash,aml,amh,ahl,ahh : in std_logic_vector(3 downto 0); --鬧鐘定時譯碼</p><p> sls,shs,mls,mhs,hls,hhs : in std_logic_vector(3 downto 0); --秒表譯碼</
120、p><p> sg :out std_logic_vector(6 downto 0);</p><p> bt :out std_logic_vector(7 downto 0));</p><p><b> end;</b></p><p> architecture bhv
121、of scanled is</p><p> signal cnt8 : std_logic_vector(2 downto 0);</p><p> signal a : std_logic_vector(3 downto 0);</p><p><b> begin </b></p><p&g
122、t; p1:process(cnt8,sl,sh,ml,mh,hl,hh,second,alarmset,sls,shs,mls,mhs,asl,ash,hhs,hls,aml,amh,ahl,ahh)</p><p><b> begin</b></p><p> case cnt8 is</p><p> WHEN "0
123、00" => bt<="00000001";</p><p> if alarmset="10" then a<=ahh(3 downto 0);</p><p> elsif second ="01" then a<=hhs(3 downto 0);</p><p>
124、; else a<=hh(3 downto 0);</p><p> end if; --注意檢查,顯示的順序 WHEN "001" => bt<="00000010";</p><p> if ala
125、rmset="10" then a<=ahl(3 downto 0);</p><p> elsif second ="01" then a<=hls(3 downto 0);</p><p> else a<=hl(3 downto 0);</p><p> end if;
126、 </p><p> WHEN "010" => bt<="00000100";a<="1010";</p><p> WHEN "011" => bt<="00001000";</p>
127、;<p> if alarmset="10" then a<=amh(3 downto 0);</p><p> elsif second ="01" then a<=mhs(3 downto 0);</p><p> else a<=mh(3 downto 0);</p><p>
128、end if; </p><p> WHEN "100" => bt<="00010000";</p><p> if alarmset="10" then a<=aml(3 downto 0);</p>&
129、lt;p> elsif second ="01" then a<=mls(3 downto 0);</p><p> else a<=ml(3 downto 0);</p><p> end if; </p><p> WHEN &
130、quot;101" => bt<="00100000";a<="1010";</p><p> WHEN "110" => bt<="01000000";</p><p> if alarmset="10" then a<=ash(3 dow
131、nto 0);</p><p> elsif second ="01" then a<=shs(3 downto 0);</p><p> else a<=sh(3 downto 0);</p><p> end if; </p>
132、;<p> WHEN "111" => bt<="10000000";</p><p> if alarmset="10" then a<=asl(3 downto 0);</p><p> elsif second ="01" then a<=sls(3 down
133、to 0);</p><p> else a<=sl(3 downto 0);</p><p><b> end if; </b></p><p> when others=>null;</p><p><b> end case;</b></p><p&g
134、t; end process p1;</p><p> p2:process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p><p> cnt8<=cnt8+1;</p>&
135、lt;p><b> end if;</b></p><p> end process p2;</p><p> p3:process(a)</p><p><b> begin</b></p><p><b> case a is</b></p>
136、<p> when "0000" =>sg<="0111111"; </p><p> when "0001" =>sg<="0000110";</p><p> when "0010" =>sg<="101101
137、1"; </p><p> when "0011" =>sg<="1001111"; </p><p> when "0100" =>sg<="1100110"; </p><p> when "0101" =>
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電子鐘課程設(shè)計報告
- 數(shù)字電子鐘課程設(shè)計報告
- 數(shù)字電子鐘課程設(shè)計報告
- 電子鐘課程設(shè)計----數(shù)字電子鐘的設(shè)計
- 數(shù)字電子鐘設(shè)計課程設(shè)計報告
- 課程設(shè)計---數(shù)字電子鐘設(shè)計報告
- 課程設(shè)計--數(shù)字電子鐘設(shè)計報告
- 課程設(shè)計---數(shù)字電子鐘設(shè)計報告
- 課程設(shè)計----數(shù)字電子鐘設(shè)計報告
- 數(shù)字電子鐘課程設(shè)計
- 電子鐘課程設(shè)計報告--數(shù)字鐘設(shè)計
- 數(shù)字電子鐘課程設(shè)計
- eda課程設(shè)計報告---數(shù)字電子鐘
- 課程設(shè)計報告---數(shù)字顯示電子鐘
- 數(shù)字電子鐘課程設(shè)計報告 (2)
- 課程設(shè)計---數(shù)字電子鐘
- 數(shù)字電子鐘課程設(shè)計
- 數(shù)字電子鐘課程設(shè)計
- 數(shù)字電子鐘課程設(shè)計
- 數(shù)字電子課程設(shè)計報告---多功能電子鐘
評論
0/150
提交評論