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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計說明書</b></p><p>  課程:EDA技術(shù)基礎(chǔ)</p><p>  題目:微波爐定時控制器的設(shè)置</p><p><b>  學(xué)生姓名: </b></p><p>  學(xué) 號: </p><p>  班 級:

2、 </p><p>  專 業(yè): 物理學(xué)</p><p><b>  指導(dǎo)教師: </b></p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  課程名稱 EDA技術(shù)基礎(chǔ) </p><p

3、>  題 目 微波爐定時控制器的設(shè)計 </p><p><b>  目 錄</b></p><p>  1 設(shè)計題目與要求2</p><p><b>  2 硬件描述5</b></p><p>  3 軟件設(shè)計

4、思路... ..... .................................................................................................7</p><p>  3程序調(diào)試過程及問題分析10</p><p>  4課程設(shè)計中的感想及結(jié)論11</p><p><b>  參考

5、文獻(xiàn)13</b></p><p><b>  附件13</b></p><p><b>  1,硬件描述</b></p><p>  拿到題目后,我們仔細(xì)看了我們所需要用到的ALTERA公司的CYCLONE III系列的芯片EP3C16F484C6,FPGA開發(fā)板,這是開發(fā)板的全圖</p>&

6、lt;p>  從圖以及查資料得知這塊開發(fā)板包括以下硬件資源</p><p>  ?Altera Cyclone® III 3C16 FPGA device</p><p>  ??Altera Serial Configuration device – EPCS4</p><p>  ??USB Blaster (on board) for prog

7、ramming and user API control; both JTAG and Active Serial</p><p>  (AS) programming modes are supported</p><p>  ??8-Mbyte SDRAM</p><p>  ??4-Mbyte Flash memory</p><p>

8、  ??SD Card socket</p><p>  ??3 pushbutton switches</p><p>  ??10 toggle switches</p><p>  ??10 green user LEDs</p><p>  ??50-MHz oscillator for clock sources</p>

9、<p>  ??VGA DAC (4-bit resistor network) with VGA-out connector</p><p>  ??RS-232 transceiver</p><p>  ??PS/2 mouse/keyboard connector</p><p>  ??Two 40-pin Expansion Headers

10、</p><p>  這里我們要用到的主要就是Cyclone® III 3C16芯片,以及green user LED,pushbutton switchs,toggle switchs等控制顯示部分的硬件資源。</p><p>  這是整個開發(fā)板的Block diagram</p><p>  我們用VHDL硬件描述語言寫好程序,然后燒錄進開發(fā)板,利用u

11、ser LED,pushbutton switchs等硬件資源來實現(xiàn)整個的微波爐定時控制器的設(shè)計。</p><p>  這是開發(fā)板的引腳圖:</p><p>  通過設(shè)置引腳,我們能控制開發(fā)板上的按鍵讓LED上顯示我們所需要的東西從而實現(xiàn)啟動復(fù)位等任務(wù)書里面的提到的基本要求。</p><p><b>  2,軟件設(shè)計思路</b></p&g

12、t;<p>  題目要求設(shè)計一個微波爐定時控制器,要求有啟動復(fù)位開關(guān)以及亨調(diào)時間的設(shè)置,火力設(shè)置高中低檔,七段碼測試,按下測試鍵后顯示四個8,啟動輸出和”火力”輸出; 設(shè)定時間后,按啟動鍵開始烹調(diào),同時顯示剩余時間,時間為0時,顯示烹調(diào)完成信息“End”,并輸出提示音;故障信號有效時,停止輸出,顯示信息“Err”,輸出間歇報警聲音。根據(jù)題目要求,經(jīng)過我們的討論,我們做了以下方案:用VHDL語言寫,設(shè)定時間采用兩個按鈕分別提

13、供一個移位信號和一個加信號(這與實際比較相符),管腳綁定簡單(特別是數(shù)碼管),這里采用的是動態(tài)掃描位選輸出數(shù)據(jù),不需對四個數(shù)碼管都進行綁定。</p><p>  通過我們的討論,形成了一個初步的思路,如下圖所示:</p><p>  預(yù)設(shè)初值 倒計時減計數(shù) 輸出數(shù)據(jù)</p><p>  然后增加復(fù)位端和測試端:</p&g

14、t;<p><b>  復(fù)位輸出數(shù)據(jù)</b></p><p>  預(yù)設(shè) 倒計時 實現(xiàn)閃爍</p><p>  初值 減計數(shù)</p><p><b>  測試</b></p><p>  在整個程序的設(shè)計思路上,我們將程序分成了5個單元模塊,以及一個綜合的

15、ZONGHE頂層模塊,這五個模塊分別為初始化模塊(FIRST),分頻模塊(FENPIN),減計數(shù)模塊(JIANJISHU),顯示模塊(VIEW),位選模塊(CHOICE)。</p><p>  經(jīng)過我們組的討論,決定將每個單元模塊分工到人,然后每個人負(fù)責(zé)一個模塊,我分到的模塊是減計數(shù)模塊。</p><p>  減計數(shù)(JIANJISHU)模塊的設(shè)計:</p><p>

16、;  JIANJISHU模塊的主要用于對FIRST模塊的數(shù)據(jù)進行選擇性的處理和輸出:</p><p> ?。?)、當(dāng)JIANJISHU模塊中的res=0時,由于res作為輸入同樣也連接這FRIST模塊中的res,他們是由一個輸入共同控制的,所以此時輸出的就是“0000”;</p><p>  (2)、當(dāng)JIANJISHU模塊中的test=0時,同res一樣的道理,此時輸出為“8888”;&

17、lt;/p><p> ?。?)、當(dāng)q4=15(輸出為F)或start=0時,LED就不會亮了,表示工作完成或處于等待狀態(tài),此時不對FIRST模塊中的數(shù)據(jù)進行任何處理就直接輸出;</p><p>  (4)、在以上條件都不滿足的情況下,若此時start=1,那么JIANJISHU模塊才開始了真正的工作狀態(tài),即配合FENPIN模塊中時鐘outclk開始每秒減一的記時計數(shù);</p>&

18、lt;p>  本程序中復(fù)位鍵res和test的詳細(xì)說明:</p><p>  這里的res和test和模塊FRIST中的res和test是用同一個控制端,而且JIANJISHU的res和test是必不可少的。因為每次進行計數(shù)完后由于是利用信號進行減計數(shù),在記完一次數(shù)之后q1,q2,q3和q4都會保持最后一次的狀態(tài),如果不及時清零的話,那么下一次的res,test以及加計數(shù)就是只能對前一級的輸入進行復(fù)位和測試

19、,輸出的將是前一級的各個位數(shù)減去q1,q2,q3和q4的值,所以在JIANJISHU模塊中進行清零是十分重要的。</p><p>  經(jīng)過上面的分析,大致程序如下:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_log

20、ic_unsigned.all;</p><p>  entity jianjishu is</p><p>  port(clks,start,res,test:in std_logic;</p><p>  in1,in2,in3,in4:in std_logic_vector(3 downto 0);</p><p>  light:o

21、ut std_logic;</p><p>  out1,out2,out3,out4:out std_logic_vector(3 downto 0));</p><p><b>  end;</b></p><p>  architecture one of jianjishu is</p><p>  signal

22、 q1,q2,q3,q4:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  process(start,clks,res,test,q4)</p><p>  variable a:std_logic_vector(1 downto 0);</p>

23、<p><b>  begin</b></p><p>  if res='0' or test='0' then </p><p>  q1<="0000";q2<="0000";q3<="0000";q4<="0000&qu

24、ot;; --對信號都清零設(shè)置</p><p>  elsif q4=(in4-15) or start='0' then a:="00";light<='0'; </p><p>  --當(dāng)q4=15或start=0時不進行減計數(shù),同時LED不亮

25、</p><p>  elsif start='1' then a:="11";light<='1';</p><p>  --當(dāng)start=1時LED點亮同時開始倒計時</p><p><b>  case a is</b></p><p>  when &qu

26、ot;11"=>if clks'event and clks='1' then</p><p>  if (in1-q1)=0 then q1<=(in1-9);q2<=q2+1;</p><p>  else q1<=q1+1;</p><p><b>  end if;</b><

27、;/p><p>  if (in2-q2)=0 and (in1-q1)=0 then </p><p>  q3<=q3+1;q2<=(in2-5);q1<=(in1-9);</p><p>  end if; --當(dāng)輸出out1=0和out2=0時進位減1,同時out1=9,out2=5;</p><p>  if (i

28、n3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 then</p><p>  q4<=q4+1;q3<=(in3-9);q2<=(in2-5);q1<=(in1-9);</p><p><b>  end if;</b></p><p>  if (in4-q4)=0 and (in3-q3

29、)=0 and (in2-q2)=0 and (in1-q1)=0 </p><p>  then q4<=(in4-15);q3<=(in3-14);q2<=(in2-13);q1<=(in1-12);</p><p>  end if; --當(dāng)所有計數(shù)完畢(都為0)時,實現(xiàn)輸出End;</p><p><b>  end if

30、;</b></p><p>  when others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  out1<

31、;=(in1-q1);</p><p>  out2<=(in2-q2);</p><p>  out3<=(in3-q3);</p><p>  out4<=(in4-q4);</p><p><b>  end;</b></p><p><b>  波形圖仿真:&l

32、t;/b></p><p>  輸入初值為“0015”</p><p>  當(dāng)start=1時開始配合clks的始終上升沿開始減計數(shù)</p><p>  在各位都記到0時,就數(shù)碼管就會顯示 “End”同時LED熄滅</p><p>  這就是上次提到的復(fù)位是清零了所有的中間信號,這樣輸出為FIRST中提供原始數(shù)據(jù)</p>

33、<p>  至此,我負(fù)責(zé)的減計數(shù)模塊算是基本上寫出來了,從程序到仿真,到和組員的討論與FIRST模塊,F(xiàn)ENPIN模塊的溝通結(jié)合,都能很好的協(xié)調(diào)工作。</p><p>  3,程序調(diào)試過程及問題分析:</p><p>  在程序的調(diào)試過程中出現(xiàn)過各種問題,往往剛解決完一個問題,做仿真的時候又出現(xiàn)了另一個問題,并且在將程序?qū)戇M開發(fā)板中運行時,也出現(xiàn)了各種問題,比如顯示的數(shù)值莫名其妙

34、的不對,或者干脆是亂碼。</p><p>  在調(diào)試過程中有兩個最主要的問題:</p><p>  一是輸出值錯誤,經(jīng)過調(diào)試發(fā)現(xiàn),產(chǎn)生這個問題的主要原因是沒有對q1,q2,q3,q4的數(shù)值進行及時的清零,導(dǎo)致上次計數(shù)后保存的數(shù)值又參與到下次的計數(shù)中,所以最后會導(dǎo)致輸出的錯誤。</p><p>  二是LED燈不能點亮,剛開始一直以為這個錯誤是因為引腳沒有配置好,導(dǎo)致

35、輸出信號沒有被輸送到LED上面去,經(jīng)過仔細(xì)的研究引腳配置圖發(fā)現(xiàn)引腳沒有設(shè)置錯,然后就鎖定在程序本身,經(jīng)過調(diào)試,發(fā)現(xiàn)是start值設(shè)置錯誤,只有當(dāng)start設(shè)置為1的時候LED才會被點亮。</p><p>  4,課程設(shè)計過程中的感想及結(jié)論:</p><p>  這兩個星期,我們基本上將精力都放在這次的課程設(shè)計上,從最開始的分析題目找資料,到后面的任務(wù)分工以及寫好自己的模塊,最后綜合調(diào)試,這

36、整個過程中我們了解了團隊開發(fā)合作的意義,加深了自己的動手設(shè)計能力,以及大概了解了整個FPGA開發(fā)項目的過程,雖然我們更多的是停留在課程設(shè)計的層面上,但多多少少對以后做開發(fā)有了一定的認(rèn)識。剛開始我們可能一直沒有進入狀態(tài),可能是大家誰都對這個FPGA的開發(fā)不怎么了解,大家都是摸著石頭過河,然后走了很多彎路吃了很多苦,甚至最開始的三天,基本上任務(wù)都沒有進展,直到老師一直強調(diào)要將每組的任務(wù)分工分出來,要對每個小組成員所做的任務(wù)都細(xì)分下來,每個人

37、都要知道自己是做哪一塊的,然后我們開始試著在組內(nèi)進行分工,分工也不是一帆風(fēng)順,剛開始是按著任務(wù)要求書來分配任務(wù),每個人負(fù)責(zé)一個任務(wù),剛剛好,后來發(fā)現(xiàn)這樣分配,程序不好協(xié)調(diào)最后不好綜合調(diào)試,在老師的指導(dǎo)下以及我們對任務(wù)的做了詳細(xì)的分析后我們才將程序分成了五個模塊,分好模塊后,我們這才算是真正進入狀態(tài),因為每個人都知道自己是要做什么的了,所以經(jīng)過幾天的討論以及自己的努力后,我們終于將所有的模塊都寫完了,然后就是程序的綜合調(diào)試,這花</

38、p><p>  在整個的設(shè)計過程中現(xiàn)在回頭好好回想一下我覺得還是有很多不足的,做任何事情起步的時候就應(yīng)該有一個全局觀,但是剛開始由于我沒有考慮完全,在FIRST模塊種設(shè)計了有四個按鍵控制的初始化程序,之后發(fā)現(xiàn)這樣不僅程序非常的繁瑣,而且這種課設(shè)應(yīng)該和實際好好聯(lián)系一下,有誰家的微波爐就光是剛開始設(shè)定初值都有這么多按鈕,那么不僅難看而且比較耗資源,使用也不是最方便的,所以之后經(jīng)過分析后選擇了現(xiàn)在使用的由兩個按鈕就能事先數(shù)

39、據(jù)初始化的功能。因此在以后的設(shè)計工作中也要學(xué)會有大局觀。</p><p>  同是在編寫復(fù)位和測試兩個按鍵的功能是遇到了比較大的麻煩,總是輸出一些莫名其妙的數(shù)據(jù),之后發(fā)現(xiàn)是由于在JIANJISHU模塊的中的中間信號沒有清零而導(dǎo)致的,這樣的一個遇到困難然后去解決這個問題的過程讓我對中間信號有了比較深刻的理解。</p><p>  當(dāng)今電子設(shè)計技術(shù)獲得了飛速的發(fā)展,而其核心已日趨轉(zhuǎn)向基于計算機

40、的電子設(shè)計自動化技術(shù),即EDA技術(shù),所以學(xué)好EDA對我們來說更加重要。這次課程設(shè)計給我們提供了一個學(xué)習(xí)和拓展的平臺。</p><p>  總的來說這次的課程設(shè)計真的收獲挺大的,不但讓我將課堂上的知識轉(zhuǎn)化為了實際所能做出來的東西,也大大加深了自己的動手設(shè)計能了,讓子有了設(shè)計東西的最基本所要具備的素質(zhì),非常感謝學(xué)校能提供給我們這個課程設(shè)計的機會。感謝老師讓我明白了很多設(shè)計過程中應(yīng)該注意是事項,以及我們組的組員在設(shè)計過

41、程中給我提供的幫助,謝謝你們!</p><p><b>  參考文獻(xiàn):</b></p><p>  [1] 楊恢先,黃輝先. 單片機原理及應(yīng)用[M] .人民郵電出版社,2006,19-23</p><p>  [2] 潘松,黃繼業(yè) EDA技術(shù)與VHDL(第三版).清華大學(xué)出版社,2009,9-1</p><p><

42、b>  附件</b></p><p>  附件1:微波爐定時控制器完整程序代碼</p><p>  第一部分:ZONGHE(頂層文件)</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.s

43、td_logic_unsigned.all;</p><p>  entity zonghe is</p><p>  port(rest,clk1,clk2,move,startt,testt:in std_logic;</p><p>  lighto:out std_logic;</p><p>  sel:out std_logic_

44、vector(2 downto 0);</p><p>  seg:out std_logic_vector(7 downto 0));</p><p><b>  end;</b></p><p><b>  --分頻部分</b></p><p>  architecture three of t

45、op is</p><p>  component fenpin is</p><p>  port(clk:in std_logic; </p><p>  outclk,screen:out std_logic);</p><p>  end component;</p><p>&

46、lt;b>  --初始化部分</b></p><p>  component first is</p><p>  port(clk,able,res,test:in std_logic; </p><p>  o1,o2,o3,o4,o5:out std_logic_vector(3 downto 0)

47、);</p><p>  end component;</p><p><b>  --減計數(shù)部分</b></p><p>  component jianjishu is</p><p>  port(clks,start,res,test:in std_logic;</p><p>  in1

48、,in2,in3,in4:in std_logic_vector(3 downto 0); </p><p>  light:out std_logic;</p><p>  out1,out2,out3,out4:out std_logic_vector(3 downto 0));</p><p>  end component;</p&g

49、t;<p><b>  --位選部分</b></p><p>  component choice is</p><p>  port(clk:std_logic;</p><p>  f1,f2,f3,f4:in std_logic_vector(3 downto 0);</p><p>  o1:out

50、 std_logic_vector(1 downto 0); </p><p>  o2:out std_logic_vector(3 downto 0));</p><p>  end component;</p><p><b>  --顯示輸出部分</b></p><p>  compone

51、nt view is</p><p>  port(screen:in std_logic;</p><p>  f1:in std_logic_vector(1 downto 0);</p><p>  f2,able:in std_logic_vector(3 downto 0); </p><p>  segout:ou

52、t std_logic_vector(7 downto 0);</p><p>  selout:out std_logic_vector(2 downto 0));</p><p>  end component;</p><p>  signal b,c,d,e,f,g,h,i,j:std_logic_vector(3 downto 0);</p>

53、<p>  signal a,k:std_logic;</p><p>  signal q:std_logic_vector(1 downto 0);</p><p>  signal p:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p&

54、gt;  u1: fenpin port map (clk=>clk1,outclk=>a,screen=>k);</p><p>  u2: first port map (clk=>clk2,res=>rest,test=>testt,able=>move,</p><p>  o1=>b,o2=>c,o3=>d,o4=&g

55、t;e,o5=>j);</p><p>  u3:jianjishu port map (clks=>a,start=>startt,res=>rest,test=>testt,in1=>b,in2=>c,</p><p>  in3=>d,in4=>e,light=>lighto,out1=>f,out2=>g,ou

56、t3=>h,out4=>i);</p><p>  u4:choice port map (clk=>clk1,f1=>f,f2=>g,f3=>h,f4=>i,o1=>q,o2=>p);</p><p>  u5:view port map (able=>j,screen=>k,f1=>q,f2=>p,s

57、egout=>seg,selout=>sel);</p><p><b>  end;</b></p><p>  第二部分:FENPIN(時鐘分頻)</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p

58、>  use ieee.std_logic_unsigned.all;</p><p>  entity fenpin is</p><p>  port(clk:in std_logic;</p><p>  outclk,screen:out std_logic);</p><p><b>  end;</b>

59、</p><p>  architecture first of fenpin is</p><p>  signal Q1,Q2:std_logic;</p><p><b>  begin</b></p><p>  one:process(clk)</p><p>  variable co

60、unt1:integer range 0 to 1002;</p><p><b>  begin</b></p><p><b>  Q1<='0';</b></p><p>  if count1>1000 then Q1<='1';count1:=0;</p&g

61、t;<p>  elsif clk'event and clk='1' then count1:=count1+1; </p><p><b>  end if;</b></p><p>  end process; -- 分出1秒信號</p>

62、<p>  two:process(clk)</p><p>  variable count2:integer range 0 to 500;</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then </p><p

63、>  if count2<250 then Q2<='1';count2:=count2+1;</p><p>  else Q2<='0';count2:=count2+1; </p><p><b>  end if;</b></p><p><b&

64、gt;  end if;</b></p><p>  if count2>499 then count2:=0;</p><p><b>  end if;</b></p><p>  end process; -- 閃爍信號</p><

65、;p>  outclk<=Q1;</p><p>  screen<=Q2;</p><p><b>  end; </b></p><p>  第三部分:FIRST(數(shù)據(jù)初始化)</p><p>  library ieee;</p><p>  use ieee.std_

66、logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity first is</p><p>  port(clk,able,res,test:in std_logic;</p><p>  o1,o2,o3,o4,o5:out std_logic_v

67、ector(3 downto 0));</p><p><b>  end;</b></p><p>  architecture two of first is</p><p>  signal q1,q2,q3,q4,q5:std_logic_vector(3 downto 0);</p><p><b>

68、  begin</b></p><p>  process(able)</p><p><b>  begin</b></p><p>  if able'event and able='1' then </p><p>  if q5<4 then q5<=q5+1;

69、 </p><p>  else q5<="0000"; </p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process; --位選信號,選

70、擇相應(yīng)的位進行初始化,其中“0000”為空位。</p><p>  process(clk,res,test,q4)</p><p><b>  begin</b></p><p>  if res='0' then q1<="0000";q2<="0000";q3<=&

71、quot;0000";q4<="0000"; --復(fù)位鍵</p><p>  elsif test='0' then q1<="1000";q2<="1000";q3<="1000";q4<="1000"; --測試鍵</p><p&

72、gt;  elsif clk'event and clk='1' then </p><p>  case q5 is</p><p>  when "0001"=> if q1<9 then q1<=q1+1;</p><p>  else q1<="0000";

73、 </p><p>  end if; -- 秒位加數(shù)</p><p>  when "0010"=> if q2<5 then q2<=q2+1;</p><p>  else q2<="0000"; </p><p>  end

74、if; -- 十秒位加數(shù)</p><p>  when "0011"=> if q3<9 then q3<=q3+1;</p><p>  else q3<="0000"; </p><p>  end if; -- 分位加數(shù)&l

75、t;/p><p>  when "0100"=> if q4<5 then q4<=q4+1;</p><p>  else q4<="0000"; </p><p>  end if; -- 十分位加數(shù)</p><p>  when o

76、thers=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  o1<=q1;</b></p><p&

77、gt;<b>  o2<=q2;</b></p><p><b>  o3<=q3;</b></p><p><b>  o4<=q4;</b></p><p>  o5<=q5; --在VIEW模塊中選擇閃爍位&

78、lt;/p><p><b>  end;</b></p><p>  ————————————————————————————————————</p><p>  第四部分:JIANJISHU(數(shù)據(jù)按秒倒計時)</p><p>  library ieee;</p><p>  use ieee.st

79、d_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity jianjishu is</p><p>  port(clks,start,res,test:in std_logic;</p><p>  in1,in2,in3,in4:in std

80、_logic_vector(3 downto 0);</p><p>  light:out std_logic;</p><p>  out1,out2,out3,out4:out std_logic_vector(3 downto 0));</p><p><b>  end;</b></p><p>  archi

81、tecture one of jianjishu is</p><p>  signal q1,q2,q3,q4:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  process(start,clks,res,test,q4)</p><p&g

82、t;  variable a:std_logic_vector(1 downto 0);</p><p><b>  begin</b></p><p>  if res='0' or test='0' then q1<="0000";q2<="0000";q3<=&quo

83、t;0000";q4<="0000";</p><p>  --對信號都清零設(shè)置</p><p>  elsif q4=(in4-15) or start='0' then a:="00";light<='0'; </p><p>  --當(dāng)q4=15或start=0

84、時不進行減計數(shù),同時LED不亮</p><p>  elsif start='1' then a:="11";light<='1';</p><p>  --當(dāng)start=1時LED點亮同時開始倒計時</p><p><b>  case a is</b></p><

85、p>  when "11"=>if clks'event and clks='1' then</p><p>  if (in1-q1)=0 then q1<=(in1-9);q2<=q2+1;</p><p>  else q1<=q1+1;</p><p><b>  end i

86、f;</b></p><p>  --q1開始為0,當(dāng)q1=in1時,對q1賦值為(in1-9),為負(fù)數(shù),</p><p>  同時對q2進行加1,那么(in2-q2)就可以視線減1,若不是那么q1<=q1+1,可以實現(xiàn)</p><p>  (in1-q1)從9開始的倒計數(shù)</p><p>  if (in2-q2)=0 a

87、nd (in1-q1)=0 then </p><p>  q3<=q3+1;q2<=(in2-5);q1<=(in1-9);</p><p><b>  end if;</b></p><p>  --當(dāng)輸出out1=0和out2=0時進位減1,同時out1=9,out2=5;</p><p>  i

88、f (in3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 then</p><p>  q4<=q4+1;q3<=(in3-9);q2<=(in2-5);q1<=(in1-9);</p><p><b>  end if;</b></p><p>  if (in4-q4)=0 and (in

89、3-q3)=0 and (in2-q2)=0 and (in1-q1)=0 </p><p>  thenq4<=(in4-15);q3<=(in3-14);q2<=(in2-13);q1<=(in1-12);</p><p>  end if;--當(dāng)所有計數(shù)完畢(都為0)時,實現(xiàn)輸出End;</p><p><b>  end

90、if;</b></p><p>  when others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  out1&

91、lt;=(in1-q1);</p><p>  out2<=(in2-q2);</p><p>  out3<=(in3-q3);</p><p>  out4<=(in4-q4);</p><p><b>  end;</b></p><p>  ———————————————

92、—————————————————————</p><p>  第五部分:CHOICE(數(shù)據(jù)選擇模塊)</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><

93、;p>  entity choice is</p><p>  port(clk:std_logic;</p><p>  f1,f2,f3,f4:in std_logic_vector(3 downto 0);</p><p>  o1:out std_logic_vector(1 downto 0);</p><p>  o2:ou

94、t std_logic_vector(3 downto 0));</p><p><b>  end;</b></p><p>  architecture one of choice is</p><p>  signal q:std_logic_vector(1 downto 0);</p><p><b>

95、;  begin</b></p><p>  process(clk)</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then q<=q+1;</p><p><b>  end if;</b

96、></p><p><b>  case q is</b></p><p>  when "00" => o2<=f1; </p><p>  when "01" => o2<=f2;</p><p>  when "10" =&

97、gt; o2<=f3; </p><p>  when "11" => o2<=f4; </p><p>  when others=> null; --選擇輸出數(shù)據(jù)</p><p><b>  end case;</b></p><p>  end

98、 process;</p><p>  o1<=q; --位選信號</p><p><b>  end;</b></p><p>  ————————————————————————————————————</p><p>  第六部分:VIEW(顯示模塊)</p>

99、<p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity view is</p><p>  port(screen:in std_logic;<

100、;/p><p>  f1:in std_logic_vector(1 downto 0);</p><p>  f2,able:in std_logic_vector(3 downto 0);</p><p>  segout:out std_logic_vector(7 downto 0);</p><p>  selout:out std_l

101、ogic_vector(2 downto 0));</p><p><b>  end;</b></p><p>  architecture one of view is</p><p>  signal seg:std_logic_vector(6 downto 0);</p><p>  signal sel:s

102、td_logic_vector(2 downto 0);</p><p><b>  begin</b></p><p>  selout<=sel;</p><p>  segout(6 downto 0)<=seg;</p><p>  sel<="000" when f1=0

103、else</p><p>  "001" when f1=1 else</p><p>  "010" when f1=2 else </p><p>  "011" when f1=3 else</p><p>  "000";

104、 --相應(yīng)的數(shù)據(jù)選擇對應(yīng)的位進行輸出</p><p>  segout(7)<='1' when f1=2 else '0'; --在第三個數(shù)碼管輸出小數(shù)點</p><p>  process(f2,able,sel)</p><p><b>  begin</b></p&

105、gt;<p>  if (able="0001" and sel="000") or (able="0010" and sel="001") or </p><p>  (able="0011" and sel="010") or (able="0100" an

106、d sel="011") then</p><p>  if screen='1' then seg<="0000000"; --無輸出</p><p><b>  else</b></p><p>  case f2 is</p><p>  when

107、"0000" => seg<="0111111";</p><p>  when "0001" => seg<="0000110";</p><p>  when "0010" => seg<="1011011";</p>

108、<p>  when "0011" => seg<="1001111";</p><p>  when "0100" => seg<="1100110";</p><p>  when "0101" => seg<="1101101&

109、quot;;</p><p>  when "0110" => seg<="1111101";</p><p>  when "0111" => seg<="0000111";</p><p>  when "1000" => seg&l

110、t;="1111111";</p><p>  when "1001" => seg<="1101111";</p><p>  when "1010" => seg<="1110111";</p><p>  when "1011&

111、quot; => seg<="1111100";</p><p>  when "1100" => seg<="0111001";</p><p>  when "1101" => seg<="1011110";</p><p> 

112、 when "1110" => seg<="1111001";</p><p>  when "1111" => seg<="1110001";</p><p>  when others=>null;</p><p>  end case;

113、 --有輸出</p><p>  end if; --實現(xiàn)閃爍</p><p><b>  else</b></p><p>  case f2 is</p><p>  when "0000" => seg<="01111

114、11";</p><p>  when "0001" => seg<="0000110";</p><p>  when "0010" => seg<="1011011";</p><p>  when "0011" => se

115、g<="1001111";</p><p>  when "0100" => seg<="1100110";</p><p>  when "0101" => seg<="1101101";</p><p>  when "01

116、10" => seg<="1111101";</p><p>  when "0111" => seg<="0000111";</p><p>  when "1000" => seg<="1111111";</p><p&g

117、t;  when "1001" => seg<="1101111";</p><p>  when "1010" => seg<="1110111";</p><p>  when "1011" => seg<="1111100";&l

118、t;/p><p>  when "1100" => seg<="1111001";</p><p>  when "1101" => seg<="0110111";</p><p>  when "1110" => seg<="

119、;0111111";</p><p>  when "1111" => seg<="1011110";</p><p>  when others=>null;</p><p>  end case; --在沒選中的位正常輸出</p><p><b>  end

120、 if;</b></p><p>  end process;</p><p><b>  end;</b></p><p>  附件2:tcl引腳文件</p><p>  #Setup.tcl

121、 </p><p>  # Setup pin setting for EP1C12 main board </p><p>  set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED" </p>

122、;<p>  set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF </p><p>  set_location_assignment PIN_G21 -to clk</p><p>  set_location_assignment PIN_H5 -to sw1

123、 </p><p>  set_location_assignment PIN_H6 -to sw2 </p><p>  set_location_assignment PIN_G4 -to sw3 </p>

124、;<p>  set_location_assignment PIN_G5 -to sw4</p><p>  set_location_assignment PIN_H2 -to button0 </p><p>  set_location_assignment PIN_G3 -to button1

125、 </p><p>  set_location_assignment PIN_F1 -to button2</p><p>  set_location_assignment PIN_J1 -to led0 </p><p>  set_location_as

126、signment PIN_J2 -to led1 </p><p>  set_location_assignment PIN_C1 -to led6[0]</p><p>  set_location_assignment PIN_C2 -to led6[1] </p>

127、;<p>  set_location_assignment PIN_B2 -to led6[2] </p><p>  set_location_assignment PIN_B1 -to led9</p><p>  set_location_assignment PIN_E11 -to h0\[0\]

128、 </p><p>  set_location_assignment PIN_F11 -to h0\[1\] </p><p>  set_location_assignment PIN_H12 -to h0\[2\] </p><p>  

129、set_location_assignment PIN_H13 -to h0\[3\] </p><p>  set_location_assignment PIN_G12 -to h0\[4\] </p><p>  set_location_assignment PIN_F12 -to h0

130、\[5\] </p><p>  set_location_assignment PIN_F13 -to h0\[6\] </p><p>  set_location_assignment PIN_D13 -to h0\[7\] </p><p>  set_location_

131、assignment PIN_A13 -to h1\[0\] </p><p>  set_location_assignment PIN_B13 -to h1\[1\] </p><p>  set_location_assignment PIN_C13 -to h1\[2\]

溫馨提示

  • 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

提交評論