2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論