版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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> 五、 參考文獻: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> 當開機后,系統(tǒng)首先是時鐘狀態(tài),當按下鍵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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(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
提交評論