版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 深 圳 大 學(xué) 實 驗 報 告</p><p> 課程名稱: 數(shù)字系統(tǒng)現(xiàn)場集成技術(shù) </p><p> 實驗項目名稱: 設(shè)計秒表 </p><p> 學(xué)院: 信息工程學(xué)院 <
2、;/p><p> 專業(yè): 集成電路設(shè)計與集成系統(tǒng) </p><p> 指導(dǎo)教師: </p><p> 報告人: 學(xué)號: 班級: </p><p> 實驗時間:
3、 </p><p> 實驗報告提交時間: </p><p><b> 教務(wù)部制</b></p><p><b> 目錄</b></p><p> 實驗要求 -------------
4、-------------------------------------------------------------3</p><p> 實驗環(huán)境 --------------------------------------------------------------------------3</p><p> Nexys2開發(fā)板介紹及本實驗功能說明 ----------
5、---------------------------3</p><p> 框架圖功能與ASM圖 ---------------------------------------------------------4</p><p> 各層VHDL代碼、仿真結(jié)果及結(jié)果分析 ----------------------------------6</p><p>
6、 資源報告及實驗結(jié)果 -----------------------------------------------------------50</p><p> 問題及解決 -----------------------------------------------------------------------51</p><p> 總結(jié) ----------------
7、----------------------------------------------------------------52</p><p><b> 一、實驗要求:</b></p><p> 基本要求:它具有計時功能。此秒表有兩個按鍵(reset, start)按下reset鍵后,秒表清零,按下start鍵后,開始計時, 再次按下start鍵后, 停止計
8、時, 用FPGA開發(fā)板上的兩個七段數(shù)碼管顯示時間(以秒為單位),計時由0 到 59 循環(huán)。</p><p> 高級要求(可選):實現(xiàn)基本要求的前提下,增加一個按鍵(select),用于輪流切換兩個七段數(shù)碼管分別顯示百分之一秒,秒,分鐘。</p><p><b> 二、實驗環(huán)境</b></p><p><b> windows7&
9、lt;/b></p><p><b> ISE14.4</b></p><p><b> Nexys2開發(fā)板</b></p><p> 三、Nexys2開發(fā)板介紹及本實驗功能說明</p><p> Nexys2開發(fā)板的核心芯片是具有1200K門的Spartan 3E FPGA,時鐘是由
10、50MHz的晶振提供,還有4個的7段數(shù)碼管,4個按鈕,8個撥碼開關(guān)。</p><p> 下圖為Nexys2開發(fā)板的實際部分板分布:</p><p> 圖3.1 Nexys2開發(fā)板的實際部分板分布</p><p> 圖3.2 Nexys2開發(fā)板的I/O原理圖</p><p> Nexys2板上7段數(shù)碼管為共陽極的方式,陰極獨立。也就是說
11、驅(qū)動7段數(shù)碼管的每一段的顯示,必須給低電平。由于板上的7段數(shù)碼管的設(shè)計結(jié)構(gòu),為了在4個數(shù)碼管上顯示數(shù)字,必須給出掃描控制電路,圖3.3給出了掃描控制電路的時序結(jié)構(gòu)。為了在每個數(shù)碼管上顯示和連續(xù)的點亮數(shù)碼管,所有的四個數(shù)碼管應(yīng)該每1到16ms就被驅(qū)動一次。</p><p><b> 圖3。3 時序結(jié)構(gòu)</b></p><p> 但在本實驗中,四個數(shù)碼管的驅(qū)動時間為1
12、00us,所以每400us,數(shù)碼管就被驅(qū)動一次,并且效果也很好。</p><p> 四、框架圖功能與ASM圖</p><p><b> 1、框架:</b></p><p><b> 圖4.1.1 框架</b></p><p> 本實驗中使用了4個數(shù)碼管、3個按鈕、5個撥動開關(guān),數(shù)碼管用來顯示
13、時間,按鈕分別是rst_p異步復(fù)位按鍵、start_stop開始/暫停按鍵、record_button記錄時間按鍵(只能記錄最近的4次),撥動開關(guān)作用分別是key1(兩位)秒表時間選擇(00表示顯示秒和百分秒、01表示顯示分和秒、10表示顯示時和分、11表示顯示天和時)、mode可切換看秒表還是記錄(1表示數(shù)碼管顯示的是正在計數(shù)時間,0表示數(shù)碼管顯示的是已記錄的時間)、key2(兩位)記錄次數(shù)選擇(00表示最近的一次記錄時間、01表示最
14、近第二次的記錄時間、11表示最近第三次的記錄時間、10表示最近第四次的記錄時間)。</p><p><b> ASM圖</b></p><p> 本實驗中有一個counter計數(shù)模塊,輸出想要的天、時、分、秒和百分秒(后面有詳細(xì)介紹),它的ASM圖如下:</p><p> 圖4.2 counterASM圖</p><
15、p> 五、各層VHDL代碼、仿真結(jié)果及結(jié)果分析</p><p> 全部的模塊展開如下:</p><p> 圖5.0 全部模塊展開圖</p><p> 頂層chronography模塊</p><p> 此模塊只是負(fù)責(zé)連線、分頻器的分頻系數(shù)和復(fù)位的取反(因為我習(xí)慣低復(fù)位,而開發(fā)板的按鍵按下是高電平)</p><
16、;p><b> 代碼為:</b></p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> entity chronography is</p><p><b> port(</b></p>
17、<p> clk : in std_logic;</p><p> rst_p : in std_logic;</p><p> start_stop : in std_logic;</p><p> record_button : in std_logic;</p><p> key1 : in std_logic_
18、vector (1 downto 0);--秒表時間選擇</p><p> mode : in std_logic;--可切換看秒表還是記錄</p><p> key2 : in std_logic_vector (1 downto 0);--記錄次數(shù)選擇</p><p> seg7 : out std_logic_vector (7 downto 0)
19、;--dp,g,f,e,d,c,b,a</p><p> an : out std_logic_vector (3 downto 0)</p><p><b> );</b></p><p> end chronography;</p><p> architecture Behavioral of chron
20、ography is</p><p> -----------------------------------------------------------</p><p> component button is</p><p><b> port(</b></p><p> clk : in std_lo
21、gic;</p><p> rst_n : in std_logic;</p><p> start_stop : in std_logic;--繼續(xù)/暫停鍵</p><p> record_button : in std_logic;--記錄鍵</p><p> key1 : in std_logic_vector (1 dow
22、nto 0);--時間切換選擇</p><p> mode : in std_logic;--選擇秒表時間還是看記錄時間</p><p> key2 : in std_logic_vector (1 downto 0);--可記錄4次,查看第幾次記錄</p><p> time_sel : out std_logic_vector (1 downto 0
23、);--等于key1</p><p> en_counter : out std_logic;--使能計數(shù)器,可使計數(shù)器繼續(xù)或暫停</p><p> en_recorder : out std_logic;--記錄的使能,每按一次,就記錄當(dāng)下時間</p><p> transfer : out std_logic;--選擇秒表時間還是看記錄時間<
24、/p><p> record_sel : out std_logic_vector (1 downto 0)--可記錄4次,查看第幾次記錄</p><p><b> );</b></p><p> end component;</p><p> -----------------------------------
25、------------------------</p><p> -----------------------------------------------------------</p><p> component div_clk is</p><p> generic (cnt : integer);--分頻系數(shù)</p><
26、;p><b> port(</b></p><p> clk : IN std_logic;</p><p> rst_n : IN std_logic;</p><p> f_clk : out std_logic</p><p><b> );</b></p>
27、<p> end component;</p><p> -----------------------------------------------------------</p><p> -----------------------------------------------------------</p><p> compo
28、nent counter is</p><p><b> port(</b></p><p> clk : in std_logic;--100hz</p><p> rst_n : in std_logic;</p><p> en : in std_logic;</p><p>
29、dayten : out integer range 0 to 3;--天數(shù)十位</p><p> dayge : out integer range 0 to 9;--天數(shù)個位</p><p> hourten : out integer range 0 to 2;--小時十位</p><p> hourge : out integer range 0
30、 to 9;--小時個位</p><p> minten :out integer range 0 to 5;--分鐘十位</p><p> minge :out integer range 0 to 9;--分鐘個位</p><p> secten :out integer range 0 to 5;--秒十位</p><p
31、> secge :out integer range 0 to 9;--秒個位</p><p> msecten : out integer range 0 to 9;--為100ms</p><p> msecge : out integer range 0 to 9--為10ms</p><p><b> );</b>
32、</p><p> end component;</p><p> -----------------------------------------------------------</p><p> -----------------------------------------------------------</p><p&
33、gt; component mux10_4 is</p><p><b> port(</b></p><p> dayten : in integer range 0 to 3;</p><p> dayge : in integer range 0 to 9;</p><p> hourten : in i
34、nteger range 0 to 2;</p><p> hourge : in integer range 0 to 9;</p><p> minten : in integer range 0 to 5;</p><p> minge : in integer range 0 to 9;</p><p> secten : i
35、n integer range 0 to 5;</p><p> secge : in integer range 0 to 9;</p><p> msecten : in integer range 0 to 9;</p><p> msecge : in integer range 0 to 9;</p><p> sel :
36、in std_logic_vector (1 downto 0);</p><p> out1 : out integer range 0 to 9;</p><p> out2 : out integer range 0 to 9;</p><p> out3 : out integer range 0 to 9;</p><p>
37、 out4 : out integer range 0 to 9</p><p><b> );</b></p><p> end component;</p><p> -----------------------------------------------------------</p><p> --
38、---------------------------------------------------------</p><p> component seg7display is</p><p><b> port(</b></p><p> clk : in std_logic;</p><p> rst
39、_n : in std_logic;</p><p> shu1 : in integer range 0 to 9;</p><p> shu2 : in integer range 0 to 9;</p><p> shu3 : in integer range 0 to 9;</p><p> shu4 : in integer
40、 range 0 to 9;</p><p> seg7 : out std_logic_vector (7 downto 0);</p><p> an : out std_logic_vector (3 downto 0)</p><p><b> );</b></p><p> end component;
41、</p><p> -----------------------------------------------------------</p><p> -----------------------------------------------------------</p><p> component recorder is</p>
42、<p><b> port(</b></p><p> clk : in std_logic;</p><p> en_recorder : in std_logic;</p><p> transfer : in std_logic;</p><p> record_sel : in std_l
43、ogic_vector (1 downto 0);</p><p> daytenin : in integer range 0 to 3;--天數(shù)十位</p><p> daygein : in integer range 0 to 9;--天數(shù)個位</p><p> hourtenin : in integer range 0 to 2;--小時十位
44、</p><p> hourgein : in integer range 0 to 9;--小時個位</p><p> mintenin :in integer range 0 to 5;--分鐘十位</p><p> mingein :in integer range 0 to 9;--分鐘個位</p><p> sec
45、tenin :in integer range 0 to 5;--秒十位</p><p> secgein :in integer range 0 to 9;--秒個位</p><p> msectenin : in integer range 0 to 9;--為100ms</p><p> msecgein : in integer range
46、0 to 9;--為10ms</p><p> dayten : out integer range 0 to 3;--天數(shù)十位</p><p> dayge : out integer range 0 to 9;--天數(shù)個位</p><p> hourten : out integer range 0 to 2;--小時十位</p>&
47、lt;p> hourge : out integer range 0 to 9;--小時個位</p><p> minten :out integer range 0 to 5;--分鐘十位</p><p> minge :out integer range 0 to 9;--分鐘個位</p><p> secten :out intege
48、r range 0 to 5;--秒十位</p><p> secge :out integer range 0 to 9;--秒個位</p><p> msecten : out integer range 0 to 9;--為100ms</p><p> msecge : out integer range 0 to 9--為10ms</p
49、><p><b> );</b></p><p> end component;</p><p> -----------------------------------------------------------</p><p> signal clk_10khz, clk_100hz: std_logic;
50、</p><p> signal rst_n : std_logic;</p><p> signal time_sel : std_logic_vector (1 downto 0);</p><p> signal en_counter : std_logic;</p><p> signal en_recorder : std_
51、logic;</p><p> signal recorder_sel : std_logic_vector (1 downto 0);</p><p> signal transfer : std_logic;</p><p> --cr : counter_recorder</p><p> signal dayten_cr :
52、integer range 0 to 3 := 0;</p><p> signal dayge_cr : integer range 0 to 9 := 0;</p><p> signal hourten_cr : integer range 0 to 2 := 0;</p><p> signal hourge_cr : integer range 0
53、to 9 := 0;</p><p> signal minten_cr : integer range 0 to 5 := 0;</p><p> signal minge_cr : integer range 0 to 9 := 0;</p><p> signal secten_cr : integer range 0 to 5 := 0;</p&
54、gt;<p> signal secge_cr : integer range 0 to 9 := 0;</p><p> signal msecten_cr : integer range 0 to 9 := 0;</p><p> signal msecge_cr : integer range 0 to 9 := 0;</p><p>
55、signal dayten : integer range 0 to 3 := 0;</p><p> signal dayge : integer range 0 to 9 := 0;</p><p> signal hourten : integer range 0 to 2 := 0;</p><p> signal hourge : integer r
56、ange 0 to 9 := 0;</p><p> signal minten : integer range 0 to 5 := 0;</p><p> signal minge : integer range 0 to 9 := 0;</p><p> signal secten : integer range 0 to 5 := 0;</p>
57、;<p> signal secge : integer range 0 to 9 := 0;</p><p> signal msecten : integer range 0 to 9 := 0;</p><p> signal msecge : integer range 0 to 9 := 0;</p><p> signal shu1
58、 : integer range 0 to 9 := 0;</p><p> signal shu2 : integer range 0 to 9 := 0;</p><p> signal shu3 : integer range 0 to 9 := 0;</p><p> signal shu4 : integer range 0 to 9 := 0;&l
59、t;/p><p><b> begin</b></p><p> process(rst_p)</p><p><b> begin</b></p><p> rst_n <= not rst_p;</p><p> end process;</p>
60、<p> --產(chǎn)生10khz的時鐘,用于useg7display</p><p> uclk_10khz : div_clk generic map (5000) port map(clk, '1', clk_10khz);</p><p> --產(chǎn)生200hz的時鐘,用于button和counter</p><p> uclk
61、_100hz : div_clk generic map (500000) port map(clk, rst_n, clk_100hz);</p><p><b> --掃面按鍵</b></p><p> u1button : button port map(clk_100hz, rst_n, start_stop, record_button, key1,
62、 mode, key2, time_sel, en_counter, en_recorder, transfer, recorder_sel);</p><p> --計數(shù)器,可輸出天數(shù)、小時、分鐘、秒以及10毫秒</p><p> u1counter : counter port map(clk_100hz, rst_n, en_counter, dayten_cr, dayge_
63、cr, hourten_cr, hourge_cr, minten_cr, minge_cr, secten_cr, secge_cr, msecten_cr, msecge_cr);</p><p> --記錄器,可記錄最新4次</p><p> u1recorder : recorder port map(clk_100hz, en_recorder, transfer, rec
64、order_sel, dayten_cr, dayge_cr, hourten_cr, hourge_cr, minten_cr, minge_cr, secten_cr, secge_cr, msecten_cr, msecge_cr, dayten, dayge, hourten, hourge, minten, minge, secten, secge, msecten, msecge);</p><p>
65、 --因為只有四個數(shù)碼管,所以要選擇顯示什么時間</p><p> u1mux10_4 : mux10_4 port map(dayten, dayge, hourten, hourge, minten, minge, secten, secge, msecten, msecge, time_sel, shu1, shu2, shu3, shu4);</p><p><b>
66、; --數(shù)碼管的顯示</b></p><p> useg7display : seg7display port map(clk_10khz, rst_n, shu1, shu2, shu3, shu4, seg7, an);</p><p> end Behavioral;</p><p><b> RTL原理圖為:</b>
67、;</p><p> 圖5.1.1 頂層RTL原理圖</p><p> 打開之后可以看到有七個子模塊:</p><p> 圖5.1.2 頂層RTL原理圖</p><p><b> button模塊</b></p><p> 此模塊是按鍵和撥動開關(guān)掃描,用來緩存和解析I/O輸入的數(shù)據(jù),即是
68、按鍵和撥動開關(guān)的數(shù)據(jù),還可以有一定程度的消抖。</p><p><b> 代碼為:</b></p><p> ibrary IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> entity button is</p><p><b
69、> port(</b></p><p> clk : in std_logic;</p><p> rst_n : in std_logic;</p><p> start_stop : in std_logic;--繼續(xù)/暫停鍵</p><p> record_button : in std_logic;--
70、記錄鍵</p><p> key1 : in std_logic_vector (1 downto 0);--時間切換選擇</p><p> mode : in std_logic;--選擇秒表時間還是看記錄時間</p><p> key2 : in std_logic_vector (1 downto 0);--可記錄4次,查看第幾次記錄</p&
71、gt;<p> time_sel : out std_logic_vector (1 downto 0);--等于key1</p><p> en_counter : out std_logic;--使能計數(shù)器,可使計數(shù)器繼續(xù)或暫停</p><p> en_recorder : out std_logic;--記錄的使能,每按一次,就記錄當(dāng)下時間</p>
72、;<p> transfer : out std_logic;--選擇秒表時間還是看記錄時間</p><p> record_sel : out std_logic_vector (1 downto 0)--可記錄4次,查看第幾次記錄</p><p><b> );</b></p><p> end button;&l
73、t;/p><p> architecture Behavioral of button is</p><p><b> begin</b></p><p> process(clk, rst_n)</p><p> variable start_stop1 : std_logic := '0';<
74、;/p><p> variable start_stop2 : std_logic := '0';</p><p> variable start_stop3 : std_logic := '0';</p><p> variable recordbutton1 : std_logic := '0';</p&g
75、t;<p> variable recordbutton2 : std_logic := '0';</p><p> variable recordbutton3 : std_logic := '0';</p><p><b> begin</b></p><p> if(rst_n = &
76、#39;0') then</p><p> start_stop1 := '0';</p><p> start_stop2 := '0';</p><p> start_stop3 := '0';</p><p> recordbutton1 := '0';&l
77、t;/p><p> recordbutton2 := '0';</p><p> recordbutton3 := '0';</p><p><b> else</b></p><p> if(clk' event and clk = '1') then<
78、/p><p> start_stop2 := start_stop1;</p><p> start_stop1 := start_stop;</p><p> recordbutton2 := recordbutton1;</p><p> recordbutton1 := record_button;</p><p
79、> if((start_stop1 = '0') and (start_stop2 = '1')) then--下降沿</p><p> start_stop3 := not start_stop3;</p><p><b> end if;</b></p><p> if((recordbutt
80、on1 = '1') and (recordbutton2 = '0')) then</p><p> recordbutton3 := '1';</p><p><b> else</b></p><p> recordbutton3 := '0';</p>
81、<p><b> end if;</b></p><p> time_sel <= key1;</p><p> transfer <= mode;</p><p> record_sel <= key2;</p><p><b> end if;</b><
82、;/p><p><b> end if;</b></p><p> en_counter <= start_stop3;</p><p> en_recorder <= recordbutton3;</p><p> end process;</p><p> end Behav
83、ioral;</p><p><b> RTL原理圖為</b></p><p> 圖5.2.1 button RTL原理圖</p><p> button的測試模塊button_tb代碼為:</p><p> LIBRARY ieee;</p><p> USE ieee.std_log
84、ic_1164.ALL;</p><p> ENTITY button_tb IS</p><p> END button_tb;</p><p> ARCHITECTURE behavior OF button_tb IS </p><p> -- Component Declaration for the Unit Under T
85、est (UUT)</p><p> COMPONENT button</p><p><b> PORT(</b></p><p> clk : IN std_logic;</p><p> rst_n : IN std_logic;</p><p> start_stop : I
86、N std_logic;</p><p> record_button : IN std_logic;</p><p> key1 : IN std_logic_vector(1 downto 0);</p><p> mode : IN std_logic;</p><p> key2 : IN std_logic_vec
87、tor(1 downto 0);</p><p> time_sel : OUT std_logic_vector(1 downto 0);</p><p> en_counter : OUT std_logic;</p><p> en_recorder : OUT std_logic;</p><p> transfer :
88、 OUT std_logic;</p><p> record_sel : OUT std_logic_vector(1 downto 0)</p><p><b> );</b></p><p> END COMPONENT;</p><p><b> --Inputs</b><
89、/p><p> signal clk : std_logic := '0';</p><p> signal rst_n : std_logic := '0';</p><p> signal start_stop : std_logic := '0';</p><p> signal re
90、cord_button : std_logic := '0';</p><p> signal key1 : std_logic_vector(1 downto 0) := (others => '0');</p><p> signal mode : std_logic := '0';</p><p>
91、signal key2 : std_logic_vector(1 downto 0) := (others => '0');</p><p><b> --Outputs</b></p><p> signal time_sel : std_logic_vector(1 downto 0);</p><p> sig
92、nal en_counter : std_logic;</p><p> signal en_recorder : std_logic;</p><p> signal transfer : std_logic;</p><p> signal record_sel : std_logic_vector(1 downto 0);</p><
93、p> -- Clock period definitions</p><p> constant clk_period : time := 10 ns;</p><p><b> BEGIN</b></p><p> -- Instantiate the Unit Under Test (UUT)</p><p
94、> uut: button PORT MAP (</p><p> clk => clk,</p><p> rst_n => rst_n,</p><p> start_stop => start_stop,</p><p> record_button => record_button,</p
95、><p> key1 => key1,</p><p> mode => mode,</p><p> key2 => key2,</p><p> time_sel => time_sel,</p><p> en_counter => en_counter,</p>
96、<p> en_recorder => en_recorder,</p><p> transfer => transfer,</p><p> record_sel => record_sel</p><p><b> );</b></p><p> -- Clock proce
97、ss definitions</p><p> clk_process :process</p><p><b> begin</b></p><p> clk <= '0';</p><p> wait for clk_period/2;</p><p> clk
98、 <= '1';</p><p> wait for clk_period/2;</p><p> end process;</p><p> -- Stimulus process</p><p> stim_proc1: process</p><p><b> begin
99、</b></p><p> -- hold reset state for 100 ns.</p><p> rst_n <= '1';</p><p> start_stop <= '0';</p><p> record_button <= '0';
100、</p><p> wait for 30 ns;</p><p> start_stop <= '1';</p><p> wait for 30 ns;</p><p> start_stop <= '0';</p><p> wait for 100 ns;&
101、lt;/p><p> record_button <= '1';</p><p> wait for 30 ns;</p><p> record_button <= '0';</p><p> wait for 100 ns;</p><p> start_stop
102、<= '1';</p><p> wait for 30 ns;</p><p> start_stop <= '0';</p><p> -- insert stimulus here </p><p><b> wait;</b></p><p&
103、gt; end process;</p><p> stim_proc2: process</p><p><b> begin</b></p><p> -- hold reset state for 100 ns.</p><p> key1 <= "00";</p>
104、;<p> mode <= '0';</p><p> key2 <= "10";</p><p> wait for 50 ns;</p><p> key1 <= "01";</p><p> mode <= not mode;<
105、/p><p> key2 <= "11";</p><p> wait for 50 ns;</p><p> key1 <= "10";</p><p> mode <= not mode;</p><p> key2 <= "00&qu
106、ot;;</p><p> wait for 50 ns;</p><p> key1 <= "11";</p><p> mode <= not mode;</p><p> key2 <= "01";</p><p> wait for 50 ns
107、;</p><p> key1 <= "00";</p><p> mode <= not mode;</p><p> key2 <= "10";</p><p> wait for 50 ns;</p><p> key1 <= "
108、00";</p><p> mode <= not mode;</p><p> key2 <= "11";</p><p> -- insert stimulus here </p><p><b> wait;</b></p><p> en
109、d process;</p><p><b> END;</b></p><p><b> 仿真結(jié)果為</b></p><p> 圖5.2.2 button仿真結(jié)果</p><p> 由圖5.2.2分析,當(dāng)start_stop按鍵按下,然后松開之后的下一個時鐘沿到來時,en_counter就
110、取反,從而控制counter模塊的計數(shù);而每按下record_button之后,en_recordeer就會產(chǎn)生一個脈沖,給recorder模塊一個記錄的信號;其余的都是緩存作用,transfer對應(yīng)mode撥動開關(guān)的輸入,time_sel對應(yīng)key1撥動開關(guān)的輸入,recorder_sel對應(yīng)key2的輸入。</p><p> 計數(shù)counter模塊</p><p> 此模塊是用來計
111、數(shù)時間的,可輸出天、時、分、秒、百分秒,可由en來開始/暫停計數(shù)。</p><p><b> VHDL代碼為:</b></p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> entity counter is</p>
112、<p><b> port(</b></p><p> clk : in std_logic;--100hz</p><p> rst_n : in std_logic;</p><p> en : in std_logic;--開始/暫停計數(shù)</p><p> dayten : out
113、 integer range 0 to 3;--天數(shù)十位</p><p> dayge : out integer range 0 to 9;--天數(shù)個位</p><p> hourten : out integer range 0 to 2;--小時十位</p><p> hourge : out integer range 0 to 9;--小時個
114、位</p><p> minten :out integer range 0 to 5;--分鐘十位</p><p> minge :out integer range 0 to 9;--分鐘個位</p><p> secten :out integer range 0 to 5;--秒十位</p><p> secge
115、:out integer range 0 to 9;--秒個位</p><p> msecten : out integer range 0 to 9;--為100ms</p><p> msecge : out integer range 0 to 9--為10ms</p><p><b> );</b></p>
116、<p> end counter;</p><p> architecture Behavioral of counter is</p><p><b> begin</b></p><p> process(clk,rst_n,en)</p><p> variable vdayten : inte
117、ger range 0 to 3 := 3;</p><p> variable vdayge : integer range 0 to 10 := 10;</p><p> variable vhourten : integer range 0 to 3 := 3;</p><p> variable vhourge : integer range 0 to
118、 10 := 10;</p><p> variable vminten : integer range 0 to 6 := 6;</p><p> variable vminge : integer range 0 to 10 := 10;</p><p> variable vsecten : integer range 0 to 6 := 6;</
119、p><p> variable vsecge : integer range 0 to 10 := 10;</p><p> variable vmsecten : integer range 0 to 10 := 10;</p><p> variable vmsecge : integer range 0 to 10 := 10;</p><
120、;p><b> begin</b></p><p> if(rst_n = '0') then</p><p> vdayten := 3;</p><p> vdayge := 10;</p><p> vhourten := 3;</p><p> vhour
121、ge := 10;</p><p> vminten := 6;</p><p> vminge := 10;</p><p> vsecten := 6;</p><p> vsecge := 10;</p><p> vmsecten := 10;</p><p> vmsecg
122、e := 10;</p><p><b> else </b></p><p> if(en = '1') then</p><p> if(clk' event and clk = '1') then</p><p> vmsecge := vmsecge - 1;<
123、;/p><p> if(vmsecge = 0) then</p><p> vmsecge := 10;</p><p> vmsecten := vmsecten - 1;</p><p> if(vmsecten = 0) then</p><p> vmsecten := 10;</p>&
124、lt;p> vsecge := vsecge - 1;</p><p> if(vsecge = 0) then</p><p> vsecge := 10;</p><p> vsecten := vsecten - 1;</p><p> if(vsecten = 0) then</p><p>
125、 vsecten := 6;</p><p> vminge := vminge - 1;</p><p> if((vminge = 0)) then</p><p> vminge := 10;</p><p> vminten := vminten - 1;</p><p> if(vminten =
溫馨提示
- 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è)計
- 課程設(shè)計-- 數(shù)字秒表
- 課程設(shè)計---數(shù)字秒表設(shè)計
- 電子技術(shù)課程設(shè)計 --電子秒表
- 單片機技術(shù)課程設(shè)計--電子秒表設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計-數(shù)字式秒表
- eda課程設(shè)計--數(shù)字秒表設(shè)計
- 課程設(shè)計報告---數(shù)字秒表設(shè)計
- eda課程設(shè)計--數(shù)字秒表設(shè)計
- 數(shù)字秒表課程設(shè)計報告
- 簡易數(shù)字秒表課程設(shè)計
評論
0/150
提交評論