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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  電 子 信 息 科 學(xué) 與 技 術(shù) </p><p><b>  EDA課程設(shè)計報告</b></p><p>  設(shè)計題目: 數(shù)字時鐘的設(shè)計 </p><p>  班 級 : 電子1201 </p><p><b>  實(shí)驗(yàn)?zāi)康?lt;/b>

2、;</p><p>  學(xué)習(xí)并掌握數(shù)字鐘的原理、設(shè)計方法。</p><p><b>  實(shí)驗(yàn)內(nèi)容</b></p><p>  計數(shù)始終由模60秒計數(shù)器、模60分計數(shù)器、模24小時計數(shù)器、報時模塊、分,時校定模塊及輸出顯示組成,可以采用同步計數(shù)器或異步計數(shù)器設(shè)計方法。</p><p><b>  實(shí)驗(yàn)要求<

3、/b></p><p>  計時范圍為0小時0分0秒至23小時59分59秒。</p><p>  采用6個8段數(shù)碼管分別顯示小時十位,小時個位,分鐘十位,分鐘個位,秒十位,秒個位。</p><p>  整點(diǎn)報時,蜂鳴器響5聲,每秒響一聲。</p><p>  校時功能能夠單獨(dú)校分,校時,校秒,用按鍵控制。</p><

4、p>  具有清零,啟動,停止計數(shù)功能,用按鍵控制。</p><p>  采用靜態(tài)掃描方式顯示。</p><p><b>  系統(tǒng)設(shè)計方案</b></p><p>  整個模塊采用一個時鐘,時鐘的頻率為一秒,用于程序秒的輸入。</p><p>  時分秒皆采用兩個位的計數(shù),一位代表十位,一位代表個位。分秒為60進(jìn)制,

5、時為24進(jìn)制。個位逢九向十位進(jìn)一,秒逢59向分進(jìn)一,分逢59向時進(jìn)一。 </p><p>  在小時的子程序里把兩位小時數(shù)轉(zhuǎn)換成一位數(shù)作為報時程序的輸入。</p><p><b>  主要VHDL源程序</b></p><p>  主程序:主要將建好的模60秒計數(shù)器、模60分計數(shù)器、模24小時計數(shù)器、報時模塊、分,時校定模塊,譯碼模塊連接起來。

6、用的是端口映射方式。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><

7、p>  entity time1 is</p><p>  --generic(N: integer :=60 );</p><p><b>  port(</b></p><p>  clk:in std_logic;</p><p>  reset:in std_logic;</p><p

8、>  stop:in std_logic;</p><p>  clock_out:out std_logic;</p><p>  min_add:in std_logic;</p><p>  hour_add:in std_logic;</p><p>  secout_1:out std_logic_vector(6 d

9、ownto 0);</p><p>  secout_2:out std_logic_vector(6 downto 0); </p><p>  min_out_1:out std_logic_vector(6 downto 0); </p><p>  min_out_2:out std_logic_vector(6 downto 0);</p>

10、<p>  hour_cout_1:out std_logic_vector(6 downto 0);</p><p>  hour_cout_2:out std_logic_vector(6 downto 0)</p><p><b>  );</b></p><p>  end entity time1;</p>&

11、lt;p>  architecture xtime1 of time1 is</p><p>  --60s </p><p>  component secoud is</p><p><b>  port(</b></p><p>  clk:in std_logic;</p><p

12、>  reset:in std_logic;</p><p>  secout1:out integer range 0 to 9;</p><p>  secout2:out integer range 0 to 9; --0 to 5</p><p>  en_min:out std_logic</p><p><b&g

13、t;  ); </b></p><p>  end component secoud;</p><p>  --60min </p><p>  component minute is</p><p><b>  port(</b></p><p>  en_min:in s

14、td_logic;</p><p>  reset:in std_logic;</p><p>  min_out1:out integer range 0 to 9;</p><p>  min_out2:out integer range 0 to 9; --0 to 5</p><p>  en_hour:out std_logic

15、</p><p><b>  ); </b></p><p>  end component minute; </p><p><b>  --24hour</b></p><p>  component hour is</p><p><b>  port(

16、</b></p><p>  en_hour:in std_logic;</p><p>  reset:in std_logic;</p><p>  hour_cout1:out integer range 0 to 9;</p><p>  hour_cout2:out integer range 0 to 9 --0

17、to 2</p><p><b>  ); </b></p><p>  end component hour; </p><p><b>  --yima </b></p><p>  component decode_dis is</p><p><b>

18、;  port(</b></p><p>  din:in integer range 0 to 9; </p><p>  dout:out std_logic_vector(6 downto 0) </p><p><b>  ); </b></p><p>  end component

19、decode_dis; </p><p><b>  --huomen </b></p><p>  component or_2 is</p><p><b>  port(</b></p><p>  a:in std_logic;</p><p>  b:in std

20、_logic;</p><p>  c:out std_logic </p><p><b>  ); </b></p><p>  end component or_2; </p><p>  --div_stop </p><p>  component div_stop is</

21、p><p><b>  port(</b></p><p>  clk:in std_logic; </p><p>  stop:in std_logic;</p><p>  clk_out:out std_logic </p><p><b>  ); </b>&

22、lt;/p><p>  end component div_stop; </p><p>  --clock_bit </p><p>  component clock_bit is</p><p><b>  port(</b></p><p>  min_in1:in integer range

23、 0 to 9;</p><p>  min_in2:in integer range 0 to 9;</p><p>  sec_in1:in integer range 0 to 9;</p><p>  sec_in2:in integer range 0 to 9;</p><p>  clock_out:out std_logic

24、</p><p><b>  ); </b></p><p>  end component clock_bit; </p><p>  signal s1:std_logic;</p><p>  signal s2:std_logic;</p><p>  signal s3:std_l

25、ogic;</p><p>  signal s4:std_logic;</p><p>  signal clk_out:std_logic;</p><p>  signal secout1:integer range 0 to 9;</p><p>  signal secout2:integer range 0 to 9;-- 0 t

26、o 5;</p><p>  signal min_out1:integer range 0 to 9; </p><p>  signal min_out2:integer range 0 to 9;-- 0 to 5;</p><p>  signal hour_cout1:integer range 0 to 9;</p><p> 

27、 signal hour_cout2:integer range 0 to 9;-- 0 to 2;</p><p><b>  begin</b></p><p>  g1:for i in 0 to 12 generate</p><p>  g2:if i=0 generate</p><p>  hourx: h

28、our port map (s4,reset,hour_cout1,hour_cout2); --24hour</p><p>  end generate;</p><p>  g3:if i=1 generate</p><p>  minutex: minute port map (s2,reset,min_out1,min_out2,s3);

29、 --60min</p><p>  end generate;</p><p>  g4:if i=2 generate</p><p>  secoudx: secoud port map (clk_out,reset,secout1,secout2,s1); --60s</p><p>  end generate;&

30、lt;/p><p>  g5:if i=3 generate</p><p>  decode_dis1: decode_dis port map (hour_cout1,hour_cout_1); ----24hour yima1</p><p>  end generate;</p><p>  g6:if i=4 generate&l

31、t;/p><p>  decode_dis1: decode_dis port map (hour_cout2,hour_cout_2); ----24hour yima2</p><p>  end generate;</p><p>  g7:if i=5 generate</p><p>  decode_dis2: decode_

32、dis port map (min_out1,min_out_1); ----60min yima1</p><p>  end generate;</p><p>  g8:if i=6 generate</p><p>  decode_dis2: decode_dis port map (min_out2,min_out_2); -

33、---60min yima2</p><p>  end generate;</p><p>  g9:if i=7 generate</p><p>  decode_dis3: decode_dis port map (secout1,secout_1); ----60s yima1</p><p>  end gener

34、ate;</p><p>  g10:if i=8 generate</p><p>  decode_dis3: decode_dis port map (secout2,secout_2); ----60s yima2</p><p>  end generate;</p><p>  g11:if i=9 generat

35、e</p><p>  xxor_2: or_2 port map (min_add,s1,s2); ----huomen min add</p><p>  end generate; </p><p>  g12:if i=10 generate</p><p>  xxor_2: or_2 po

36、rt map (hour_add,s3,s4); ----huomen hour add</p><p>  end generate; </p><p>  g13:if i=11 generate</p><p>  div_stop1: div_stop port map (clk,stop,clk_out);

37、 ----div_stop</p><p>  end generate;</p><p>  g14:if i=12 generate</p><p>  clock_bit1:clock_bit port map (min_out1,min_out2,secout1,secout2,clock_out);----clock_bit</p>

38、<p>  end generate; </p><p>  end generate;</p><p>  end architecture xtime1;</p><p>  模60秒 秒個位逢9進(jìn)一并歸零,秒十位逢5進(jìn)一并歸零,完成60秒的計時。</p><p>  library ieee;</p><

39、p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p><b>  --60s</b></p><p>  entity s

40、ecoud is</p><p>  generic(N: integer :=10 );</p><p><b>  port(</b></p><p>  clk:in std_logic;</p><p>  reset:in std_logic;</p><p>  secout1:ou

41、t integer range 0 to 9;</p><p>  secout2:out integer range 0 to 9;--0 to 5</p><p>  en_min:out std_logic</p><p><b>  );</b></p><p>  end entity secoud;</

42、p><p>  architecture xsecoud of secoud is</p><p>  signal emin:std_logic;</p><p><b>  begin</b></p><p>  process(reset,clk) is</p><p>  variable s

43、ec0:integer range 0 to 9;</p><p>  variable sec1:integer range 0 to 9;</p><p>  --signal emin:std_logic;</p><p><b>  begin</b></p><p>  if reset='1'

44、 then</p><p>  emin<='0';</p><p><b>  sec0:=0;</b></p><p><b>  sec1:=0;</b></p><p>  elsif clk'event and clk='1' then<

45、/p><p>  if sec0=N-1 then --10-1</p><p><b>  sec0:=0;</b></p><p>  sec1:=sec1+1;</p><p>  if sec1=N-4 then --10-4</p><p><b>  sec1:=0;

46、</b></p><p>  emin<='1';</p><p><b>  else</b></p><p>  emin<='0';</p><p><b>  end if;</b></p><p><b&

47、gt;  else</b></p><p>  sec0:=sec0+1;</p><p>  sec1:=sec1;</p><p>  emin<='0';</p><p><b>  end if;</b></p><p><b>  end if

48、;</b></p><p>  secout1<=sec0;</p><p>  secout2<=sec1;</p><p>  en_min<=emin;</p><p>  end process;</p><p>  end architecture xsecoud; <

49、/p><p>  模60分 分個位逢9進(jìn)一并歸零,分十位逢5進(jìn)一并歸零,完成60分的計時。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p> 

50、 use ieee.std_logic_arith.all;</p><p>  --60 minute</p><p>  entity minute is</p><p>  generic(N: integer :=10 );</p><p><b>  port(</b></p><p>

51、  en_min:in std_logic;</p><p>  reset:in std_logic;</p><p>  min_out1:out integer range 0 to 9;</p><p>  min_out2:out integer range 0 to 9;--0 to 5</p><p>  en_hour:ou

52、t std_logic</p><p><b>  );</b></p><p>  end entity minute;</p><p>  architecture xminute of minute is</p><p>  signal ehour:std_logic;</p><p>&

53、lt;b>  begin</b></p><p>  process(reset,en_min) is</p><p>  variable min0:integer range 0 to N-1;--10-1</p><p>  variable min1:integer range 0 to N-1;</p><p> 

54、 --variable ehour:integer range 0 to 1;</p><p><b>  begin</b></p><p>  if reset='1' then</p><p>  ehour<='0';</p><p><b>  min0:=0;&

55、lt;/b></p><p><b>  min1:=0;</b></p><p>  elsif en_min'event and en_min='1' then</p><p>  if min0=N-1 then --10-1</p><p><b>  min0:=

56、0;</b></p><p>  min1:=min1+1;</p><p>  if min1=N-4 then --10-4</p><p><b>  min1:=0;</b></p><p>  ehour<='1';</p><p><b>

57、  else</b></p><p>  ehour<='0';</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  min0:=min0+1;</p><p>  min1:

58、=min1;</p><p>  ehour<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  min_out1<=min0;</p><p>  min_out

59、2<=min1;</p><p>  en_hour<=ehour;</p><p>  end process;</p><p>  end architecture xminute; </p><p>  模24小時,先小時個位逢十進(jìn)一給小時十位,再每次判斷是否大于24,大于就都清零。</p><p&g

60、t;  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p><b>  --24 hour<

61、/b></p><p>  entity hour is</p><p>  generic(N: integer :=10 );</p><p><b>  port(</b></p><p>  en_hour:in std_logic;</p><p>  reset:in std_

62、logic;</p><p>  hour_cout1:out integer range 0 to 9;</p><p>  hour_cout2:out integer range 0 to 9 --0 to 2</p><p><b>  );</b></p><p>  end entity hour;</

63、p><p>  architecture xhour of hour is</p><p><b>  begin</b></p><p>  process(reset,en_hour) is</p><p>  variable hour1:integer range 0 to N-1;</p><p

64、>  variable hour2:integer range 0 to N-1;</p><p><b>  begin</b></p><p>  if reset='1' then</p><p><b>  hour1:=0;</b></p><p><b>

65、  hour2:=0;</b></p><p>  elsif en_hour'event and en_hour='1' then</p><p>  if hour1=N-1 then --10-1</p><p><b>  hour1:=0;</b></p><p>  h

66、our2:=hour2+1;</p><p><b>  else</b></p><p>  hour1:=hour1+1;</p><p>  hour2:=hour2;</p><p><b>  end if;</b></p><p>  if hour2*10+ho

67、ur1>=24 then</p><p><b>  hour1:=0;</b></p><p><b>  hour2:=0;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></

68、p><p>  hour_cout1<=hour1;</p><p>  hour_cout2<=hour2;</p><p>  end process;</p><p>  end architecture xhour; </p><p>  譯碼部分,將123456789譯成二進(jìn)制碼,并能在數(shù)碼管上顯示。

69、</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  --use ieee.std_logic_unsigned.all;</p><p>  --use ieee.std_logic_arith.all;</p><p>&

70、lt;b>  --yima</b></p><p>  entity decode_dis is</p><p>  --generic(N: integer :=60 );</p><p><b>  port(</b></p><p>  din:in integer range 0 to 9;

71、 </p><p>  dout:out std_logic_vector(6 downto 0) </p><p><b>  );</b></p><p>  end entity decode_dis;</p><p>  architecture xdecode_dis of decode_dis is<

72、;/p><p><b>  begin</b></p><p>  process(din) is</p><p><b>  begin</b></p><p>  case din is</p><p>  when 0 => dout<="111111

73、0";</p><p>  when 1 => dout<="0110000";</p><p>  when 2 => dout<="1101101";</p><p>  when 3 => dout<="1111001";</p><p

74、>  when 4 => dout<="0110011";</p><p>  when 5 => dout<="1011011";</p><p>  when 6 => dout<="1011111";</p><p>  when 7 => dout&l

75、t;="1110000";</p><p>  when 8 => dout<="1111111";</p><p>  when 9 => dout<="1111011";</p><p>  when others => dout<="0000000&quo

76、t;;</p><p><b>  end case;</b></p><p>  end process;</p><p>  end architecture xdecode_dis; </p><p>  暫停,開始,分頻部分,加一個按鍵,按鍵按一次開始,再按一次就停止,同時輸出的二分頻的時鐘信號。

77、</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  ent

78、ity div_stop is</p><p>  generic(N: integer :=2 );</p><p><b>  port(</b></p><p>  clk:in std_logic; </p><p>  stop:in std_logic;</p><p>  clk

79、_out:out std_logic</p><p><b>  );</b></p><p>  end entity div_stop;</p><p>  architecture xdiv_stop of div_stop is</p><p>  shared variable en_stop:integer

80、range 0 to 2;</p><p>  --signal temp:std_logic;</p><p><b>  begin</b></p><p>  process(stop) is</p><p><b>  begin</b></p><p>  if

81、stop'event and stop='1'then </p><p>  en_stop:=en_stop + 1;</p><p><b>  end if;</b></p><p>  if en_stop=N then</p><p>  en_stop:=0;</p>&

82、lt;p><b>  end if;</b></p><p>  end process;</p><p>  process(clk) is</p><p>  variable counter:integer range 0 to N-1;</p><p><b>  begin</b>&

83、lt;/p><p>  if en_stop= 0 then </p><p>  clk_out<='0';</p><p>  elsif en_stop= 1 then</p><p>  if clk'event and clk='1' then</p><p>  i

84、f counter=N-1 then</p><p>  counter:=0;</p><p><b>  else</b></p><p>  counter:=counter+1;</p><p><b>  end if;</b></p><p>  if count

85、er<N/2 then</p><p>  clk_out<='0';</p><p><b>  else</b></p><p>  clk_out<='1';</p><p><b>  end if;</b></p><p

86、><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  end architecture xdiv_stop;</p><p>  一個或門,加上按鍵,按鍵按下就產(chǎn)生高電平,或上其他信號就變成高

87、電平,用來教時分加或十加。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p>&

88、lt;p>  entity or_2 is</p><p>  --generic(N: integer :=60 );</p><p><b>  port(</b></p><p>  a:in std_logic;</p><p>  b:in std_logic;</p><p>

89、  c:out std_logic</p><p><b>  );</b></p><p>  end entity or_2;</p><p>  architecture xor_2 of or_2 is</p><p><b>  begin</b></p><p>

90、  c<= a or b;</p><p>  end architecture xor_2;</p><p>  整點(diǎn)報時,判斷分十位,分個位都為0,秒十位也為0,在判斷秒個位在0~9的情況,02468秒就響,13579秒不響。</p><p>  library ieee;</p><p>  use ieee.std_logic_

91、1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity clock_bit is</p><p>  --generic(N: integer :=2 );</p>

92、<p><b>  port(</b></p><p>  --clk:in std_logic;</p><p>  min_in1:in integer range 0 to 9;</p><p>  min_in2:in integer range 0 to 9;</p><p>  sec_in1:in

93、 integer range 0 to 9;</p><p>  sec_in2:in integer range 0 to 9;</p><p>  clock_out:out std_logic</p><p><b>  );</b></p><p>  end entity clock_bit;</p>

94、;<p>  architecture xclock_bit of clock_bit is</p><p><b>  begin</b></p><p>  process(min_in1,min_in2,sec_in1,sec_in2) is</p><p><b>  begin</b></p&

95、gt;<p>  if min_in1= 0 and min_in2= 0 and sec_in2= 0 then</p><p>  if sec_in1>= 0 and sec_in1<=9 then</p><p>  if sec_in1=0 then</p><p>  clock_out<='1';

96、</p><p>  elsif sec_in1= 1 then</p><p>  clock_out<='0';</p><p>  elsif sec_in1= 2 then</p><p>  clock_out<='1';</p><p>  elsif sec_i

97、n1= 3 then</p><p>  clock_out<='0';</p><p>  elsif sec_in1= 4 then</p><p>  clock_out<='1';</p><p>  elsif sec_in1= 5 then</p><p>  c

98、lock_out<='0';</p><p>  elsif sec_in1= 6 then</p><p>  clock_out<='1';</p><p>  elsif sec_in1= 7 then</p><p>  clock_out<='0';</p>

99、;<p>  elsif sec_in1= 8 then</p><p>  clock_out<='1';</p><p><b>  else</b></p><p>  clock_out<='0';</p><p><b>  end if;&l

100、t;/b></p><p><b>  else</b></p><p>  clock_out<='0';</p><p><b>  end if;</b></p><p><b>  else</b></p><p> 

101、 clock_out<='0';</p><p><b>  end if;</b></p><p>  end process;</p><p>  end architecture xclock_bit;</p><p>  設(shè)計中遇到的問題與體會 </p><p>

102、  首先是第一次用這種硬件描述語言來實(shí)際做一個時鐘,當(dāng)然會遇到好多的問題,比如實(shí)驗(yàn)開發(fā)板是怎樣的,能怎樣接起來,比如數(shù)碼管怎樣接,還有按鍵是怎樣的一種觸發(fā)機(jī)制,這是比較讓我們?yōu)殡y的。</p><p>  其次不知道怎樣實(shí)現(xiàn)所要求的功能,沒有一種實(shí)現(xiàn)的思路。</p><p>  最后還有遇到下載不了程序到開發(fā)板的問題。</p><p>  隨著我們一步步的進(jìn)行也就開始

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論