eda課程設(shè)計(jì)--秒表設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  題目:秒表設(shè)計(jì)</b></p><p><b>  內(nèi)容</b></p><p><b>  一:設(shè)計(jì)任務(wù)與要求</b></p><p>  秒表的邏輯結(jié)構(gòu)比較簡(jiǎn)單,它主要由、顯示譯碼器、分頻器、十進(jìn)制計(jì)數(shù)器、報(bào)警器和六進(jìn)制計(jì)數(shù)器組成。在整個(gè)秒表中最關(guān)鍵是如何獲得一個(gè)精確

2、的100Hz計(jì)時(shí)脈沖,除此之外,整個(gè)秒表還需要一個(gè)啟動(dòng)信號(hào)和一個(gè)歸零信號(hào),以便能夠隨時(shí)啟動(dòng)及停止。秒表有六個(gè)輸出顯示,分別為百分之一秒,十分之一秒、秒、十秒、分、十分,所以共有6個(gè)計(jì)數(shù)器與之對(duì)應(yīng),6個(gè)個(gè)計(jì)數(shù)器全為BCD碼輸出,這樣便于同時(shí)顯示譯碼器的連接。當(dāng)計(jì)時(shí)達(dá)60分鐘后,蜂鳴器鳴響3聲。</p><p><b>  二:設(shè)計(jì)原理</b></p><p>  本系

3、統(tǒng)采用自上向下的設(shè)計(jì)方案,系統(tǒng)的整體設(shè)計(jì)組裝原理圖如圖2-1所示,它主要由控制模塊,時(shí)基分屏模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊分別完成控制,分屏,計(jì)時(shí)和顯示的功能</p><p><b>  設(shè)計(jì)原理圖</b></p><p><b>  程序模塊</b></p><p><b>  1、控制模塊程序&l

4、t;/b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all; </p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity ctrl is</p>&l

5、t;p>  port(clr,clk,sp:in std_logic; </p><p>  en:out std_logic);</p><p><b>  end ctrl;</b></p><p>  architecture behave of ctrl is</p><p>  ty

6、pe states is (s0,s1,s2,s3);</p><p>  signal current_state,next_state:states;</p><p><b>  begin</b></p><p>  com:process(sp,current_state)</p><p><b>  

7、begin</b></p><p>  case current_state is</p><p>  when s0=>en<='0';if sp='1' then next_state<=s1;else next_state<=s0;end if;</p><p>  when s1=>e

8、n<='1';if sp='1' then next_state<=s1;else next_state<=s2;end if;</p><p>  when s2=>en<='1';if sp='1' then next_state<=s3;else next_state<=s2;end if;</p

9、><p>  when s3=>en<='0';if sp='1' then next_state<=s3;else next_state<=s0;end if;</p><p><b>  end case;</b></p><p>  end process;</p><

10、;p>  synch:process(clk)</p><p><b>  begin</b></p><p>  if clr='1' then </p><p>  current_state<=s0;</p><p>  elsif clk'event and clk='

11、1' then</p><p>  current_state<=next_state;</p><p><b>  end if;</b></p><p>  end process;</p><p>  end behave;</p><p>  2、時(shí)基分頻模塊程序</p

12、><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity cb10 is</p><p>  port(clk: in std_logic;</p><p>  co: buffer std_logic);</p>

13、<p><b>  end cb10;</b></p><p>  architecture art of cb10 is</p><p>  signal counter:integer range 0 to 49999;</p><p><b>  begin</b></p><p>

14、;  process(clk)</p><p><b>  begin</b></p><p>  if (clk='1' and clk'event) then</p><p>  if counter=49999 then</p><p>  counter<=0;</p>

15、<p>  co<= not co;</p><p><b>  else</b></p><p>  counter<=counter+1;</p><p><b>  end if;</b></p><p><b>  end if;</b><

16、/p><p>  end process;</p><p><b>  end art;</b></p><p><b>  3、計(jì)時(shí)模塊的程序</b></p><p><b>  1)、十進(jìn)制計(jì)數(shù)器</b></p><p>  library ieee;

17、</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cdu10 is</p><p>  port(clk,clr,en: in std_logic;</p><p>  

18、cn: out std_logic;</p><p>  count10: out std_logic_vector(3 downto 0));</p><p>  end cdu10;</p><p>  architecture art of cdu10 is</p><p>  signal temp:std_logic_vector(

19、3 downto 0);</p><p><b>  begin</b></p><p>  process(clk,clr)</p><p><b>  begin</b></p><p>  if clr='1' then </p><p>  temp&

20、lt;="0000";</p><p><b>  cn<='0'; </b></p><p>  elsif (clk'event and clk='1') then</p><p>  if en='1' then </p><p> 

21、 if temp>="1001" then </p><p>  temp<="0000";</p><p><b>  cn<='1'; </b></p><p><b>  else </b></p><p>  temp

22、<=temp+1;</p><p><b>  cn<='0'; </b></p><p><b>  end if; </b></p><p><b>  end if; </b></p><p><b>  end if; </b

23、></p><p>  count10<=temp;</p><p>  end process;</p><p><b>  end art;</b></p><p><b>  2)、六進(jìn)制計(jì)數(shù)器</b></p><p>  library ieee;<

24、/p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cdu6 is</p><p>  port(clk,clr,en: in std_logic;</p><p>  cn: o

25、ut std_logic;</p><p>  count6: out std_logic_vector(3 downto 0));</p><p><b>  end cdu6;</b></p><p>  architecture art of cdu6 is</p><p>  signal temp:std_lo

26、gic_vector(3 downto 0);</p><p><b>  begin </b></p><p>  process(clk,clr)</p><p><b>  begin</b></p><p>  if clr='1' then </p><

27、p>  temp<="0000";</p><p><b>  cn<='0'; </b></p><p>  elsif (clk'event and clk='1') then</p><p>  if en='1' then </p>

28、<p>  if temp="0110" then </p><p>  temp<="0000";</p><p><b>  cn<='1'; </b></p><p><b>  else </b></p><p&g

29、t;  temp<=temp+1;</p><p><b>  cn<='0'; </b></p><p><b>  end if; </b></p><p><b>  end if; </b></p><p><b>  end if

30、; </b></p><p>  count6<=temp; </p><p>  end process; </p><p><b>  end art;</b></p><p><b>  3)計(jì)時(shí)器程序</b></p><p>  library ie

31、ee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity count is</p><p>  port(clk:in std_logic;</p><p>  clr:in std_logic;</p><p>  en:in std_logic;<

32、/p><p>  S_10ms:out std_logic_vector(3 downto 0);</p><p>  S_100ms:out std_logic_vector(3 downto 0);</p><p>  S_1s:out std_logic_vector(3 downto 0);</p><p>  S_10s:out std

33、_logic_vector(3 downto 0);</p><p>  M_1min:out std_logic_vector(3 downto 0);</p><p>  M_10min:out std_logic_vector(3 downto 0));</p><p>  end count;</p><p>  architectu

34、re art of count is</p><p>  component cdu10</p><p>  port(clk,clr,en: in std_logic;</p><p>  cn: out std_logic;</p><p>  count10: out std_logic_vector(3 downto 0));<

35、/p><p>  end component cdu10;</p><p>  component cdu6</p><p>  port(clk,clr,en: in std_logic;</p><p>  cn: out std_logic;</p><p>  count6: out std_logic_vecto

36、r(3 downto 0));</p><p>  end component cdu6;</p><p>  signal A,B,C,D,E,F:std_logic;</p><p><b>  begin </b></p><p>  U1:cdu10 port map (clk,clr,en,A,S_10ms);

37、</p><p>  U2:cdu10 port map (A,clr,en,B,S_100ms);</p><p>  U3:cdu10 port map (B,clr,en,C,S_1s);</p><p>  U4:cdu6 port map (C,clr,en,D,S_10s);</p><p>  U5:cdu10 port map

38、 (D,clr,en,E,M_1min);</p><p>  U6:cdu10 port map (E,clr,en,F,M_10min);</p><p><b>  end art;</b></p><p><b>  4、顯示模塊程序</b></p><p>  1)七段譯碼驅(qū)動(dòng)器程序<

39、;/p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned; </p><p>  entity bcd7 is </p><p>  port(bcd:in std_logic_

40、vector(3 downto 0); </p><p>  led:out std_logic_vector(6 downto 0)); </p><p>  end bcd7 ; </p><p>  architecture art of bcd7 is </p><p><b>  begin </b><

41、/p><p>  led<= "0111111" when bcd="0000"else</p><p>  "0000110" when bcd="0001"else</p><p>  "1011011" when bcd="0010"

42、else</p><p>  "1001111" when bcd="0011"else</p><p>  "1100110" when bcd="0100"else</p><p>  "1101101" when bcd="0101"e

43、lse</p><p>  "1111101" when bcd="0110"else</p><p>  "0000111" when bcd="0111"else</p><p>  "1111111" when bcd="1000"el

44、se</p><p>  "1101111" when bcd="1001"else</p><p>  "0000000";</p><p><b>  end art; </b></p><p><b>  2)數(shù)據(jù)選擇器程序</b>

45、</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_UNSIGNED.all;</p><p>  entity mulx is</p><p>  port(clk:in std_lo

46、gic;</p><p>  clr:in std_logic;</p><p>  en:in std_logic;</p><p>  S_10ms:in std_logic_vector(3 downto 0);</p><p>  S_100ms:in std_logic_vector(3 downto 0);</p>

47、<p>  S_1s:in std_logic_vector(3 downto 0);</p><p>  S_10s:in std_logic_vector(3 downto 0);</p><p>  M_1min:in std_logic_vector(3 downto 0);</p><p>  M_10min:in std_logic_vecto

48、r(3 downto 0);</p><p>  outbcd:out std_logic_vector(3 downto 0);</p><p>  seg:out std_logic_vector(2 downto 0));</p><p><b>  end mulx;</b></p><p>  architec

49、ture art of mulx is</p><p>  signal count:std_logic_vector(2 downto 0);</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  begin</b></p&

50、gt;<p>  if (clr='1') then </p><p>  count<="111";</p><p>  elsif (clk='1'and clk'event) then</p><p>  if en='1' then</p><

51、p>  if count="101" then</p><p>  count<="000"; </p><p>  else count<=count+1;</p><p><b>  end if;</b></p><p><b>  end if

52、;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clk)</p><p><b>  begin</b></p><p>  if clk'event and

53、 clk='1'then</p><p>  case count is</p><p>  when "000"=>outbcd<=S_10ms; seg<="000";</p><p>  when "001"=>outbcd<=S_100ms; se

54、g<="001";</p><p>  when "010"=>outbcd<=S_1s; seg<="010";</p><p>  when "011"=>outbcd<=S_10s; seg<="011";</p>

55、<p>  when "100"=>outbcd<=M_1min; seg<="100";</p><p>  when "101"=>outbcd<=M_10min; seg<="101";</p><p>  when others=>null;&l

56、t;/p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end art;</b></p><p><b>  頂層設(shè)計(jì)源

57、程序</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity stopwatch is </p><p>  port (sp:in std_logic ;</p><p>  clr:in st

58、d_logic;</p><p>  clk:in std_logic;</p><p>  led:out std_logic_vector(6 downto 0);</p><p>  seg:out std_logic_vector(2 downto 0));</p><p>  end stopwatch;</p>&l

59、t;p>  architecture art of stopwatch is </p><p>  component ctrl</p><p>  port(clr:in std_logic ;</p><p>  clk:in std_logic ;</p><p>  sp:in std_logic ;</p>&l

60、t;p>  en:out std_logic );</p><p>  end component;</p><p>  component cb10</p><p>  port(clk:in std_logic;</p><p>  co:out std_logic);</p><p>  end compo

61、nent;</p><p>  component count</p><p>  port (clk:in std_logic;</p><p>  clr:in std_logic;</p><p>  en:in std_logic;</p><p>  S_10ms:out std_logic_vector(3

62、 downto 0);</p><p>  S_100ms:out std_logic_vector(3 downto 0);</p><p>  S_1s:out std_logic_vector(3 downto 0);</p><p>  S_10s:out std_logic_vector(3 downto 0);</p><p> 

63、 M_1min:out std_logic_vector(3 downto 0);</p><p>  M_10min:out std_logic_vector(3 downto 0));</p><p>  end component;</p><p>  component bcd7</p><p>  port(bcd:in std_l

64、ogic_vector(3 downto 0);</p><p>  led:out std_logic_vector(6 downto 0));</p><p>  end component;</p><p>  component mulx</p><p>  port (clr:in std_logic;</p><

65、;p>  clk:in std_logic;</p><p>  en:in std_logic;</p><p>  S_10ms:in std_logic_vector(3 downto 0);</p><p>  S_100ms:in std_logic_vector(3 downto 0);</p><p>  S_1s:in

66、std_logic_vector(3 downto 0);</p><p>  S_10s:in std_logic_vector(3 downto 0);</p><p>  M_1min:in std_logic_vector(3 downto 0);</p><p>  M_10min:in std_logic_vector(3 downto 0);</

67、p><p>  outbcd:out std_logic_vector(3 downto 0);</p><p>  seg:out std_logic_vector(2 downto 0));</p><p>  end component;</p><p>  signal c,e:std_logic;</p><p>

68、;  signal ms10_s,ms100_s:std_logic_vector(3 downto 0);</p><p>  signal s1_s,s10_s:std_logic_vector(3 downto 0);</p><p>  signal min1_s,min10_s:std_logic_vector(3 downto 0);</p><p> 

69、 signal bcd_s,s:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  u0:ctrl port map(clr,clk,sp,e);</p><p>  u1:cb10 port map(clk,c);</p><p>  u2:c

70、ount port map(c,clr,e,ms10_s,ms100_s,s1_s,s10_s,min1_s,min10_s);</p><p>  u3:mulx port map(clr,clk,e,ms10_s,ms100_s,s1_s,s10_s,min1_s,min10_s,bcd_s,seg);</p><p>  u4:bcd7 port map (bcd_s,led);&l

71、t;/p><p><b>  end art;</b></p><p><b>  設(shè)計(jì)解決的關(guān)鍵問(wèn)題</b></p><p>  本次設(shè)計(jì)的關(guān)鍵性問(wèn)題是分頻和頂層文件的設(shè)計(jì),在分頻代碼段中可以看出我們本次采用的主頻率是5MHZ。1/100秒的頻率為100HZ所以只需要用5MHZ乘以1/50000即可得到100HZ的分頻信號(hào),

72、即1/100秒。數(shù)碼管顯示部分的關(guān)鍵就是弄清楚每個(gè)數(shù)字對(duì)應(yīng)的二進(jìn)制代碼,剛開(kāi)始我們用畫(huà)原理圖的方法進(jìn)行頂層文件設(shè)計(jì),完成了實(shí)驗(yàn),而后又嘗試用VHDL語(yǔ)言進(jìn)行程序設(shè)計(jì),雖然程序復(fù)雜而且老出編譯錯(cuò)誤,期間反復(fù)看書(shū),和上網(wǎng)查找資料,經(jīng)過(guò)幾天的修改終于將此頂層程序的設(shè)計(jì)工作完成。</p><p><b>  五:設(shè)計(jì)分工說(shuō)明</b></p><p>  主程序設(shè)計(jì),編寫(xiě)實(shí)驗(yàn)報(bào)

73、告——易新會(huì)</p><p>  程序修改,用VHDL語(yǔ)言頂層文件設(shè)計(jì)——陳虹余</p><p>  上機(jī)硬件調(diào)試,用原理圖的方法設(shè)計(jì)頂層文件——王偉</p><p>  收集相關(guān)資料、拍照——迪拉熱</p><p><b>  仿真結(jié)果與分析</b></p><p><b>  一:測(cè)

74、試數(shù)據(jù)選擇</b></p><p>  測(cè)試數(shù)據(jù)選擇為00:00:00——03:56:38</p><p><b>  二:波形分析</b></p><p><b>  三:?jiǎn)栴}說(shuō)明</b></p><p>  數(shù)碼管的顯示由sel片選信號(hào)來(lái)控制。硬件調(diào)試功能正常。</p>

75、<p><b>  總結(jié)</b></p><p>  開(kāi)始VHDL語(yǔ)言不是很熟練,做設(shè)計(jì)時(shí)總是會(huì)犯一些錯(cuò)誤且花費(fèi)的時(shí)間比較多,例如在做頂層文件設(shè)計(jì)的時(shí)候總是會(huì)出現(xiàn)一些編譯錯(cuò)誤,其中有些錯(cuò)誤是因?yàn)橐粋€(gè)字母沒(méi)寫(xiě)對(duì)而導(dǎo)致,相比較來(lái)說(shuō)在此次設(shè)計(jì)中用原理圖做頂層設(shè)計(jì)似乎更容易,當(dāng)然這主要是我們做的這個(gè)小設(shè)計(jì)不是一個(gè)大型的系統(tǒng),當(dāng)系統(tǒng)復(fù)雜時(shí)用VHDL語(yǔ)言更省事,在編程時(shí),我們使用了自頂向下的

76、設(shè)計(jì)思想,這樣程序檢查起來(lái)也比較方便,也便于小組分工,做EDA設(shè)計(jì)考驗(yàn)我們的耐心、毅力和細(xì)心,而對(duì)錯(cuò)誤的檢查要求我們要有足夠的耐心,通過(guò)這次實(shí)戰(zhàn),我們對(duì)VHDL語(yǔ)言了解的更深了,也積累了一定的解決問(wèn)題的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作會(huì)有一定的幫助。在設(shè)計(jì)工作中,分工很重要,即使你一個(gè)人能夠把整個(gè)程序?qū)懗鰜?lái),但與分工良好的組相比較,分工不好的組效率更低</p><p>  在應(yīng)用VHDL的過(guò)程中我們領(lǐng)會(huì)到了其并行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論