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

下載本文檔

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

文檔簡介

1、<p>  數(shù)字電路課程設(shè)計報告</p><p><b>  交 通 燈 設(shè) 計</b></p><p><b>  目 錄</b></p><p>  序言············

2、3;····································&#

3、183;····3</p><p>  第一章 設(shè)計任務(wù)和要求··························

4、;···············4</p><p>  1.1 設(shè)計任務(wù)················&

5、#183;····································

6、;···4</p><p>  1. 2 設(shè)計要求····························

7、····························4</p><p>  第二章 電路工作原理及方案設(shè)計··&

8、#183;··························4</p><p>  第三章 單元電路設(shè)計與仿真···

9、3;·····························6</p><p>  3.1 軟件原理圖··

10、;····································

11、83;···············6</p><p>  3.2 各模塊的原理及其程序···············

12、;·····························6</p><p>  3.2.1 分頻模塊的設(shè)計及仿真圖

13、3;····································&#

14、183;··6</p><p>  3.2.2 計數(shù)模塊的設(shè)計及仿真圖···························&

15、#183;············7</p><p>  3.2.3 控制模塊的設(shè)計及仿真圖·················

16、·······················9</p><p>  3.2.4 分位模塊的設(shè)計及仿真圖·······

17、;·································10</p><p&g

18、t;  3.2.5 譯碼模塊的設(shè)計及仿真圖·································&

19、#183;······11</p><p>  第四章 系統(tǒng)設(shè)計························&#

20、183;·················12</p><p>  4.1 頂層電路設(shè)計·············&

21、#183;····································

22、;·12</p><p>  4.2整體電路波形仿真圖·····························&#

23、183;················13</p><p>  第五章 總結(jié)···············

24、;·······························13</p><p>  參考文獻

25、3;····································&#

26、183;···········14</p><p>  附錄····················

27、83;································14</p><p>&l

28、t;b>  序言</b></p><p>  CPLD(Complex Programmable Logic Device)是Complex PLD的簡稱,一種較PLD為復(fù)雜的邏輯元件。CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標(biāo)芯片中,實現(xiàn)設(shè)

29、計的數(shù)字系統(tǒng)。 20世紀(jì)70年代,最早的可編程邏輯器件--PLD誕生了。其輸出結(jié)構(gòu)是可編程的邏輯宏單元,因為它的硬件結(jié)構(gòu)設(shè)計可由軟件完成,因而它的設(shè)計比純硬件的數(shù)字電路具有很強的靈活性,但其過于簡單的結(jié)構(gòu)也使它們只能實現(xiàn)規(guī)模較小的電路。為彌補PLD只能設(shè)計小規(guī)模電路這一缺陷,20世紀(jì)80年代中期,推出了復(fù)雜可編程邏輯器件--CPLD。目前應(yīng)用已深入網(wǎng)絡(luò)、儀器儀表、汽車電子、數(shù)控機床、航天測控設(shè)備等方面。 它具有編程靈活

30、、集成度高、設(shè)計開發(fā)周期短、適用范圍寬、開發(fā)工具先進、設(shè)計制造成本低、對設(shè)計者的硬件經(jīng)驗要求低、標(biāo)準(zhǔn)產(chǎn)品無需測試、保密性強、價格大眾化等特點,可實現(xiàn)較大規(guī)模的電路設(shè)計,因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計和產(chǎn)品生產(chǎn)</p><p>  在一個交通繁忙的十字路口,沒有交通燈來控制來往車輛和行人的通行,假設(shè)也沒有交警,那會發(fā)生什么事情呢?后果是難以想象的,可能會陷入一片混亂,甚至癱瘓。當(dāng)然我們每個人都不希望這樣。我們作為社

31、會的一員,每人都有責(zé)任為它的更加先進和快捷做出力所能及的事情。我們設(shè)計的這個信號控制系統(tǒng)可以通過交通燈控制東西方向車道和南北方向車道兩條交叉道路上的車輛交替運行,每次通行時間都可以根據(jù)實際情況預(yù)設(shè),用以減少交通事故的發(fā)生概率。并且經(jīng)過些次實驗使得我們對電子技術(shù)課程內(nèi)容的理解和掌握有了更深一層的認識,也學(xué)會使用半導(dǎo)體元件和集成電路,掌握電子電路的基本分析方法和設(shè)計方法,進一步提高分析解決實際問題的綜合能力,也為將來的就業(yè)或繼續(xù)深造做好準(zhǔn)備

32、。</p><p>  第一章 設(shè)計任務(wù)與要求</p><p><b>  1.1 設(shè)計任務(wù)</b></p><p>  設(shè)計一個基于FPGA的十字路口交通控制器,分為手動操作、自動操作和復(fù)位系統(tǒng),假設(shè)南北方向和東西方向,兩個方向分別設(shè)置紅燈、綠燈、黃燈和左拐四盞燈,每個方向設(shè)置一組倒計時顯示器,用以指揮車輛和行人有序的通行。紅燈亮表示左轉(zhuǎn)和直

33、行車輛禁行;綠燈亮表示直行車輛可以通行;黃燈亮表示左轉(zhuǎn)或直行車輛即將禁行;左拐燈亮表示左轉(zhuǎn)車輛可以通行;倒計時顯示器用來顯示允許通行或禁止通行的時間 。</p><p><b>  1.2 設(shè)計要求</b></p><p>  在十字路口南北和東西兩個方向各設(shè)一組紅燈、綠燈、黃燈和左拐燈。顯示順序:綠燈→ 黃燈→ 紅燈→ 左拐→ 黃燈→ 紅燈。在南北和東西兩個方向各設(shè)

34、一組倒計時顯示器。</p><p>  自動控制:設(shè)置一組數(shù)碼管,以倒計時的方式顯示允許通行或禁止通行的時間,南北方向為主干道,左拐、綠燈、黃燈和紅燈顯示時間分別是20s、20s、5s和20s。東西方向為次干道,左拐、綠燈、黃燈和紅燈顯示時間分別為15s、15s、5s和25s。</p><p>  手動控制:按按鈕依次執(zhí)行以上顯示狀態(tài),綠燈→ 黃燈→ 紅燈→ 左拐→ 黃燈→ 紅燈,倒計時顯

35、示為“0”。</p><p>  系統(tǒng)設(shè)有總復(fù)位開關(guān),可在任意時間內(nèi)對系統(tǒng)進行復(fù)位。</p><p>  通過開關(guān)按鈕切換交通燈的工作狀態(tài)。</p><p>  第二章 電路工作原理及方案設(shè)計</p><p><b>  交通燈的顯示狀態(tài):</b></p><p><b>  總體框圖:

36、</b></p><p>  在VHDL設(shè)計描述中,采用自頂向下的設(shè)計思路,該思路,首先要描述頂層的接口,上面的描述已經(jīng)規(guī)定了交通燈控制的輸入輸出信號:輸入信號:復(fù)位開關(guān)信號reset;外部時鐘信號clk。LED七段顯示數(shù)碼管的輸出信號count1(6 downto 0),count2(6 downto 0),count3(6 downto 0),count4(6 downto 0);在自頂向下的VH

37、DL設(shè)計描述中,通常把整個設(shè)計的系統(tǒng)劃分為幾個模塊,然后采用結(jié)構(gòu)描述方式對整個系統(tǒng)進行描述。根據(jù)實驗設(shè)計的結(jié)構(gòu)功能,來確定使用哪些模塊以及這些模塊之間的關(guān)系。通過上面的分析,不難得知可以把交通燈控制系統(tǒng)劃分為4個模塊:時鐘分頻模塊,計數(shù)模塊,控制模塊,分位譯碼模塊。</p><p>  分頻電路:把555多諧振蕩器發(fā)出的較高頻率脈沖用分頻電路的到較第頻率的時鐘信號,本電路通過三次10分平分別得到10Hz、1Hz的

38、時鐘信號。</p><p>  控制器電路:根據(jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段譯碼管的分位譯碼電路。當(dāng)檢測到手動控制信號(Con=’1’)時,執(zhí)行手動控制; </p><p>  計數(shù)器電路:這里需要的計數(shù)器的計數(shù)范圍為0~89。計到89后,下一個時鐘沿升為1時,開始下一輪計數(shù),此外當(dāng)系統(tǒng)復(fù)位信號(Reset=’1’)使計數(shù)器異步清‘0’。手動信號(Con=

39、’1’)使系統(tǒng)清‘0’。</p><p>  分位譯碼電路:因為控制器輸出的倒計時數(shù)值可能是1位或者2位十進制數(shù),所以在七段數(shù)碼管的譯碼電路前要加上分位電路(即將其分為2個1位的十進制數(shù),如20分為2和0,7分為0和7)。七段數(shù)碼管的譯碼電路根據(jù)控制電路的控制信號,驅(qū)動交通燈的顯示,通過輸入二進制數(shù)值,輸出信號點亮二極管,我們用的是共陽極數(shù)碼管,因此譯碼電路輸出邏輯數(shù)值‘0’點亮二極管,譯碼電路輸出邏輯數(shù)值‘1’

40、熄滅二極管。</p><p>  第三章 單元電路設(shè)計與仿真</p><p><b>  3.1 軟件原理圖</b></p><p>  3.2 各模塊的原理及其程序</p><p>  3.2.1 分頻模塊的設(shè)計及仿真圖</p><p>  實體:entity clk_10 is</p&g

41、t;<p>  port( clk : in std_logic;</p><p>  clk_div10 : out std_logic);</p><p>  end clk_10;</p><p><b>  功能:實現(xiàn)十分頻</b></p><p>  接口:clk—脈沖輸入</p&

42、gt;<p>  Clk-div10—十分頻后脈沖輸出</p><p><b>  仿真結(jié)果如下:</b></p><p>  3.2.2 計數(shù)模塊的設(shè)計及仿真圖</p><p>  實體:entity counter is</p><p>  port( clk0:in std_logic;</p

43、><p>  con:in std_logic;</p><p>  reset:in std_logic;</p><p>  countnum:buffer integer range 0 to 89);</p><p>  end counter;</p><p>  功能:實現(xiàn)0到89的計數(shù)</p>

44、<p>  clk0—脈沖輸入 </p><p>  con—手動控制信號 </p><p>  reset—復(fù)位信號 </p><p>  countnum—計數(shù)輸出</p><p><b>  仿真波形如下:</b></p><p>  3.2.3 控制模塊的設(shè)計及仿真

45、圖</p><p>  實體:entity controller is</p><p>  Port ( clk1 : in std_logic;</p><p>  con1 : in std_logic;</p><p>  con2 : in std_logic;</p><p>  countnum : in

46、integer range 0 to 89;</p><p>  numa,numb : out integer range 0 to 25;</p><p>  ra,ga,ya,ga1 : out std_logic;</p><p>  rb,gb,yb,gb1: out std_logic);</p><p>  end contro

47、ller;</p><p>  功能:控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段譯碼管的分位譯碼電路。</p><p>  clk1—脈沖信號輸入 </p><p>  con1—手動控制信號 </p><p>  con2—狀態(tài)控制信號 </p><p>  countnum—計數(shù)輸入</p>

48、<p>  numa,numb—兩個方向的倒計時數(shù)值輸出 </p><p>  ra,ga,ya,ga1,rb,gb,yb,gb1—發(fā)光二極管輸出</p><p><b>  仿真波形如下:</b></p><p>  3.2.4 分位模塊的設(shè)計與仿真圖</p><p>  實體:entity fenwe

49、i is</p><p>  port ( numin:in integer range 0 to 25;</p><p>  numa,numb:out integer range 0 to 9 );</p><p>  end fenwei;</p><p>  功能:把倒計時的數(shù)值分成2個1位的十進制數(shù)。</p><

50、;p>  numin:倒計時數(shù)值輸入 </p><p>  numa,numb—將數(shù)值分為2個1位的十進制輸出</p><p><b>  仿真波形如下:</b></p><p>  3.2.5 譯碼模塊的設(shè)計及仿真圖</p><p>  實體:entity display is</p><p

51、><b>  port(</b></p><p>  clk2:in std_logic;</p><p>  bb: in std_logic_vector(3 downto 0);</p><p>  ya:out std_logic;</p><p>  yb:out std_logic;</p>

52、<p>  yc:out std_logic;</p><p>  yd:out std_logic;</p><p>  ye:out std_logic;</p><p>  yf:out std_logic;</p><p>  yg:out std_logic);</p><p>  end di

53、splay;</p><p>  功能:根據(jù)控制電路的控制信號,驅(qū)動交通燈的顯示, 通過輸入二進制數(shù)值,輸出信號點亮二極管。</p><p>  bb[3..0]--BCD碼輸入</p><p>  clk2—脈沖輸入 </p><p>  ya,yb,yc,yd,ye,yf,yg—七段數(shù)碼管顯示輸出</p>

54、<p><b>  仿真波形如下:</b></p><p><b>  第四章 系統(tǒng)設(shè)計</b></p><p>  4.1 頂層文件的設(shè)計</p><p>  entity dingceng is</p><p>  port(clkd,resetd,cond,con1d:in st

55、d_logic;</p><p>  count1:out std_logic_vector(6 downto 0);</p><p>  count2:out std_logic_vector(6 downto 0);</p><p>  count3:out std_logic_vector(6 downto 0);</p><p>  

56、count4:out std_logic_vector(6 downto 0);</p><p>  reda,greena,yellowa,greena1: out std_logic;</p><p>  redb,greenb,yellowb,greenb1: out std_logic);</p><p>  end entity dingceng;<

57、/p><p><b>  clkd—脈沖輸入</b></p><p>  resetd—復(fù)位信號</p><p>  con—手動控制信號</p><p>  con1d—狀態(tài)控制信號</p><p>  count1,count2,count3,count4—七段數(shù)碼管顯示</p>&

58、lt;p>  reda,greena,yellowa,greena1,redb,greenb,yellowb,greenb1—發(fā)光二極管輸出</p><p>  4.2 整體電路波形圖</p><p><b>  第五章 總結(jié)</b></p><p>  課程設(shè)計對學(xué)生而言是其對所學(xué)課程內(nèi)容掌握情況的一次自我驗證,從而有著極其重要的意義。

59、通過課程設(shè)計能提高學(xué)生對所學(xué)知識的綜合應(yīng)用能力,能全面檢查并掌握所學(xué)內(nèi)容,本學(xué)期我們進行了數(shù)字電路課程設(shè)計,老師命題,六人一大組,兩人一小組進行設(shè)計(包括設(shè)計總體方案、硬件電路、軟件設(shè)計、焊接、調(diào)試等工作)。趣味性強,同時也可以學(xué)到很多東西。我們做的是交通燈控制器的設(shè)計。</p><p>  在這學(xué)期的課程設(shè)計中,在收獲知識的同時,還收獲了閱歷,收獲了成熟,在此過程中,我們通過查找大量資料,請教老師,以及不懈的努

60、力,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐。</p><p>  通過這個程序設(shè)計讓我學(xué)會一種新的語言,對數(shù)字系統(tǒng)結(jié)構(gòu)也有了更進一步的了解和認識,對我以后的學(xué)習(xí)有很大的幫助。希望其他人在看再做類似設(shè)計時有所借鑒。</p><p>  通

61、過幾天的課程設(shè)計,我對數(shù)據(jù)庫軟件EDA技術(shù)、VHDL、等系列知識都有了一定的了解。使用EDA技術(shù)開發(fā)頁面的能力也有了很大提高。</p><p>  另外,我還學(xué)到了一個人的力量畢竟有限,但是團隊的力量勢不可擋,我們不能只靠自己,遇到不會的要多多求助同學(xué),</p><p>  這次課程設(shè)計雖然結(jié)束了,也留下了很多遺憾,因為由于時間的緊缺和許多課業(yè)的繁忙,并沒有做到最好,但是,最起碼我們沒有放

62、棄,它是我們的驕傲!相信以后我們會以更加積極地態(tài)度對待我們的學(xué)習(xí)、對待我們的生活。我們的激情永遠不會結(jié)束,相反,我們會更加努力,努力的去彌補自己的缺點,發(fā)展自己的優(yōu)點,去充實自己,只有在了解了自己的長短之后,我們會更加珍惜擁有的,更加努力的去完善它,增進它。只有不斷的測試自己,挑戰(zhàn)自己,才能擁有更多的成功和快樂!快樂至上,享受過程,而不是結(jié)果!認真對待每一個實驗,珍惜每一分一秒,學(xué)到最多的知識和方法,鍛煉自己的能力,這個是我們在實時測量

63、技術(shù)試驗上學(xué)到的最重要的東西,也是以后都將受益匪淺的! </p><p><b>  參考文獻</b></p><p>  1、《VHDL與數(shù)字電路設(shè)計》.盧毅, 賴杰. 科學(xué)出版社</p><p>  2、《VHDL 程序設(shè)計》(第二版). 曾繁泰等. 清華大學(xué)出版社</p><p&

64、gt;  3、《VHDL入門與應(yīng)用》陳雪松, 滕立中 .人民郵電出版社 </p><p>  4、《EDA技術(shù)與VHDL》(第二版).潘松,黃繼業(yè). 清華大學(xué)出版社</p><p>  5、《數(shù)字電路技術(shù)基礎(chǔ)》(第二版). 閻石 .高等教育出版社</p><p><b>  附錄 總程序</b></p>

65、;<p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity dingceng is</p><p>  port(clkd,resetd,cond

66、,con1d:in std_logic;</p><p>  count1:out std_logic_vector(6 downto 0);</p><p>  count2:out std_logic_vector(6 downto 0);</p><p>  count3:out std_logic_vector(6 downto 0);</p>

67、<p>  count4:out std_logic_vector(6 downto 0);</p><p>  reda,greena,yellowa,greena1: out std_logic;</p><p>  redb,greenb,yellowb,greenb1: out std_logic);</p><p>  end entity d

68、ingceng;</p><p>  architecture one of dingceng is</p><p>  component clk_10</p><p>  port(clk:in std_logic;</p><p>  clk_div10 : out std_logic);</p><p>  

69、end component;</p><p>  component counter</p><p><b>  port</b></p><p>  (clk0:in std_logic;</p><p>  con:in std_logic;</p><p>  reset:in std_lo

70、gic;</p><p>  countnum:buffer integer range 0 to 89);</p><p>  end component;</p><p>  component controller</p><p><b>  port</b></p><p>  ( clk

71、1 : in std_logic;</p><p>  con1 : in std_logic;</p><p>  con2: in std_logic;</p><p>  countnum : in integer range 0 to 89;</p><p>  numa,numb : out integer range 0 to 2

72、5;</p><p>  ra,ga,ya,ga1: out std_logic;</p><p>  rb,gb,yb,gb1 : out std_logic);</p><p>  end component;</p><p>  component fenwei </p><p>  port ( numin:i

73、n integer range 0 to 25;</p><p>  numa,numb:out integer range 0 to 9 );</p><p>  end component;</p><p>  component yima</p><p>  port(clk2:in std_logic;</p><

74、p>  bb: in integer range 0 to 9;</p><p>  ya:out std_logic;</p><p>  yb:out std_logic;</p><p>  yc:out std_logic;</p><p>  yd:out std_logic;</p><p>  ye

75、:out std_logic;</p><p>  yf:out std_logic;</p><p>  yg:out std_logic);</p><p>  end component;</p><p>  signal a,b,c:std_logic;</p><p>  signal ww:integer

76、range 0 to 89;</p><p>  signal yy1,yy2:integer range 0 to 25;</p><p>  signal tt1,tt2,tt3,tt4:integer range 0 to 9;</p><p><b>  begin</b></p><p>  u0: clk_1

77、0 port map(clk=>clkd,clk_div10=>a);</p><p>  u1: clk_10 port map(clk=>clkd,clk_div10=>b);</p><p>  u2: clk_10 port map(clk=>b,clk_div10=>c);</p><p>  u3:counter po

78、rt </p><p>  map(clk0=>c,con=>cond,reset=>resetd,countnum=>ww);</p><p>  u4:controller port map </p><p>  (clk1=>c,con1=>cond,con2=>con1d,countnum=>ww,numa=&

79、gt;yy1,numb=>yy2,ra=>reda,ga=>greena,ya=>yellowa,ga1=>greena1,rb=>redb,gb=>greenb,yb=>yellowb,gb1=>greenb1);</p><p>  u5:fenwei port map(numin=>yy1,numa=>tt1,numb=>tt2);&l

80、t;/p><p>  u6:fenwei port map (numin=>yy2,numa=>tt3,numb=>tt4);</p><p><b>  u7:yima</b></p><p>  port map(clk2=>b,bb=>tt1,ya=>count1(0),yb=>count1(1),y

81、c=>count1(2),yd=>count1(3),ye=>count1(4),yf=>count1(5),yg=>count1(6));</p><p>  u8:yima port map (clk2=>b,bb=>tt2,ya=>count2(0),yb=>count2(1),yc=>count2(2),yd=>count2(3),ye=&

82、gt;count2(4),yf=>count2(5),yg=>count2(6));</p><p>  u9:yima port map(clk2=>b,bb=>tt3,ya=>count3(0),yb=>count3(1),yc=>count3(2),yd=>count3(3),ye=>count3(4),yf=>count3(5),yg=>c

83、ount3(6));</p><p>  u10:yima port map(clk2=>b,bb=>tt4,ya=>count4(0),yb=>count4(1),yc=>count4(2),yd=>count4(3),ye=>count4(4),yf=>count4(5),yg=>count4(6));</p><p>  end

84、architecture one;</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>

85、;<p>  entity clk_10 is</p><p>  port( clk : in std_logic;</p><p>  clk_div10 : out std_logic);</p><p>  end clk_10;</p><p>  architecture one of clk_10 is&

86、lt;/p><p>  signal clk_temp : std_logic;</p><p><b>  begin</b></p><p>  process(clk)</p><p>  variable counter : std_logic_vector(2 downto 0);</p><p

87、>  constant md : std_logic_vector(2 downto 0) := "101";</p><p><b>  begin</b></p><p>  if(clk'event and clk='1') then</p><p>  if(counter = md)t

88、hen</p><p>  counter := (others =>'0');</p><p>  clk_temp <= not clk_temp;</p><p><b>  end if;</b></p><p>  counter := counter + 1 ;</p>

89、<p><b>  end if; </b></p><p>  end process;</p><p>  clk_div10 <= clk_temp;</p><p><b>  end one;</b></p><p>  library ieee;</p>

90、<p>  use ieee.std_logic_1164.all;</p><p>  entity counter is</p><p><b>  port</b></p><p>  ( clk0:in std_logic;</p><p>  con:in std_logic;</p>

91、<p>  reset:in std_logic;</p><p>  countnum:buffer integer range 0 to 89);</p><p>  end counter;</p><p>  architecture one of counter is</p><p><b>  begin

92、</b></p><p>  process (reset,clk0)</p><p><b>  begin</b></p><p>  if reset='1' then</p><p>  countnum <= 0;</p><p>  elsif ris

93、ing_edge( clk0 ) then </p><p>  if con='1' then</p><p>  countnum <= 0;</p><p><b>  else</b></p><p>  if countnum=89 then</p><p>  

94、countnum <= 0;</p><p><b>  else</b></p><p>  countnum <= countnum + 1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p&g

95、t;<p><b>  end if;</b></p><p>  end process;</p><p><b>  end one;</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p&

96、gt;<p>  use ieee.std_logic_unsigned.all;</p><p>  entity controller is</p><p><b>  port</b></p><p>  ( clk1 : in std_logic;</p><p>  con1 : in

97、std_logic;</p><p>  con2 : in std_logic;</p><p>  countnum : in integer range 0 to 89;</p><p>  numa,numb : out integer range 0 to 25;</p><p>  ra,ga,ya,ga1 : out std_l

98、ogic;</p><p>  rb,gb,yb,gb1: out std_logic);</p><p>  end controller;</p><p>  architecture one of controller is</p><p>  signal m : integer range 0 to 7;</p>&l

99、t;p><b>  begin</b></p><p>  process ( clk1,con1,con2,countnum )</p><p>  variable aa:std_logic_vector(7 downto 0);</p><p><b>  begin</b></p><p&

100、gt;  if (clk1'event and clk1 = '1' )then</p><p>  if con1 ='0' then</p><p>  if countnum >= 65then</p><p>  numb<=90-countnum;</p><p>  numa &

101、lt;=90-countnum;</p><p>  if countnum >= 70 then </p><p>  aa := "00011000"; </p><p>  else aa := "00101000";</p><p>  numa<= 70-countnum;

102、</p><p><b>  end if;</b></p><p>  elsif countnum >= 45 then </p><p>  numb <= 65-countnum;</p><p>  numa <=65-countnum;</p><p>  if c

103、ountnum >= 50 then</p><p>  aa := "10000100";</p><p>  else aa := "10000010";</p><p>  numb<= 50-countnum; </p><p><b>  end if;</b&

104、gt;</p><p>  elsif countnum >= 20 then </p><p>  numa <= 45-countnum;</p><p>  numb <=45-countnum;</p><p>  if countnum >= 25 then</p><p>  a

105、a := "01001000"; </p><p>  else aa := "00101000";</p><p>  numa <= 25-countnum;</p><p><b>  end if;</b></p><p>  elsif countnum

106、 >= 0 then</p><p>  numa <= 20-countnum;</p><p>  numb <= 20-countnum;</p><p>  if countnum >= 5 then</p><p>  aa := "10000100"; </p><p

107、>  else aa := "10000010";</p><p>  numb <= 5-countnum; </p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  else&

108、lt;/b></p><p>  if con1= '1' then </p><p>  numa <= 0;</p><p>  numb <= 0; </p><p>  if con2 = '1' then</p><p>  if m = 7 then &l

109、t;/p><p><b>  m <= 0;</b></p><p><b>  else</b></p><p>  m <= m + 1;</p><p><b>  end if;</b></p><p><b>  end if

110、;</b></p><p>  if m = 0 then</p><p>  aa := "01001000";</p><p>  elsif m= 1 then</p><p>  aa := "00101000"; </p><p>  elsif m=2

111、then</p><p>  aa :="10000100"; </p><p>  elsif m=3 then</p><p>  aa := "10000010"; </p><p>  elsif m=4 then</p><p>  aa := "000110

112、00"; </p><p>  elsif m=5 then</p><p>  aa := "00101000"; </p><p>  elsif m=6 then</p><p>  aa := "10000001"; </p><p>  elsif m=7

113、then</p><p>  aa := "10000010";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p&g

114、t;<b>  end if;</b></p><p>  ra <= aa(7);</p><p>  ga <= aa(6);</p><p>  ya <= aa(5); </p><p>  ga1 <= aa(4);</p><p>  rb <= aa(3

115、);</p><p>  gb <= aa(2);</p><p>  yb <= aa(1);</p><p>  gb1 <= aa(0); </p><p>  end process;</p><p><b>  end one;</b></p><p

116、>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity fenwei is</p><p>  port ( numin:in integer range 0 to 25;</p><p>  numa,numb:out integer r

117、ange 0 to 9 );</p><p>  end fenwei;</p><p>  architecture one of fenwei is</p><p><b>  begin </b></p><p>  process( numin )</p><p>  variable n

118、uma1,numb1: integer range 0 to 9; </p><p><b>  begin</b></p><p>  if numin >= 20 then</p><p>  numa1 :=2;</p><p>  numb1 := numin - 20;</p><p&

119、gt;  elsif numin >= 10 then</p><p>  numa1 := 1;</p><p>  numb1 := numin - 10;</p><p><b>  else </b></p><p>  numa1 := 0 ;</p><p>  numb1 :=

120、 numin ;</p><p><b>  end if ;</b></p><p>  numa <= numa1; </p><p>  numb <= numb1;</p><p>  end process ;</p><p><b>  end one ;<

121、/b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity display is</p><p><b>  port(</b></p><p>  clk2:in std_logic

122、;</p><p>  bb: in std_logic_vector(3 downto 0);</p><p>  ya:out std_logic;</p><p>  yb:out std_logic;</p><p>  yc:out std_logic;</p><p>  yd:out std_logic;

123、</p><p>  ye:out std_logic;</p><p>  yf:out std_logic;</p><p>  yg:out std_logic);</p><p>  end display;</p><p>  architecture one of display is</p>

124、<p>  signal temp: std_logic_vector(6 downto 0);</p><p><b>  begin</b></p><p>  process(bb)</p><p><b>  begin</b></p><p>  case bb is</

125、p><p>  when "0000" => temp <= "1000000";</p><p>  when "0001" => temp <= "1111001";</p><p>  when "0010" => temp <=

126、 "0100100";</p><p>  when "0011" => temp <= "0110000";</p><p>  when "0100" => temp <= "0011001";</p><p>  when "0

127、101" => temp <= "0010010";</p><p>  when "0110" => temp <= "0000010";</p><p>  when "0111" => temp <= "1011000";</p>

128、;<p>  when "1000" => temp <= "0000000";</p><p>  when "1001" => temp <= "0010000";</p><p>  when others => temp <= "1111111

129、";</p><p><b>  end case;</b></p><p>  end process;</p><p>  ya<=temp(0);</p><p>  yb<=temp(1); </p><p>  yc<=temp(2);</p>

溫馨提示

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

評論

0/150

提交評論