eda課程設計--出租車計費器_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  課程名稱:VHDL語言與EDA課程設計</p><p>  設計題目: 出租車計費器 </p><p>  系 別: 通信與控制工程系 </p><p>  專 業(yè):

2、 電子信息工程 </p><p>  班 級: </p><p>  學生姓名: </p><p>  學 號: </

3、p><p>  起止日期: </p><p>  指導教師: </p><p>  教研室主任: </p><p><b>  摘 要&l

4、t;/b></p><p>  本文介紹了一種采用單片F(xiàn)PGA芯片進行出租車計費器的設計方法,主要闡述如何使用新興的EDA器件取代傳統(tǒng)的電子設計方法,利用FPGA的可編程性,簡潔而又多變的設計方法,縮短了研發(fā)周期,同時使出租車計費器體積更小功能更強大。本設計實現(xiàn)了出租車計費器所需的一些基本功能,計費包括起步價、行車里程計費、等待時間計費,同時考慮到出租車行業(yè)的一些特殊性,更注重了把一些新的思路加入到設計中。

5、主要包括采用了FPGA芯片,使用VHDL語言進行編程,使其具有了更強的移植性,更加利于產(chǎn)品升級。</p><p>  關鍵詞:VHDL;計費器;QuartusⅡ;FPGA</p><p><b>  目 錄</b></p><p><b>  設計要求1</b></p><p>  1、方案論證

6、與對比1</p><p><b>  1.1、方案一1</b></p><p><b>  1.2、方案二2</b></p><p>  1.3、方案對比與選擇3</p><p>  2、主要模塊設計3</p><p>  2.1、速度模塊3</p>

7、<p>  2.2、計程模塊3</p><p>  2.3、計時模塊4</p><p>  2.4、計費模塊4</p><p>  2.5、整體框圖5</p><p><b>  3、仿真結果5</b></p><p>  3.1、速度模塊仿真5</p>&l

8、t;p>  3.2計程模塊仿真6</p><p>  3.3計時模塊仿真6</p><p>  3.4 計費模塊仿真7</p><p>  3.5、整體仿真7</p><p>  4、 整體電路圖8</p><p>  5、引腳鎖定及測試8</p><p><b> 

9、 6、致謝9</b></p><p>  7、詳細儀器清單10</p><p><b>  參考文獻11</b></p><p><b>  附錄12</b></p><p><b>  出租車計費器</b></p><p><

10、b>  設計要求</b></p><p>  計費標準為武漢起步3元,車行3公里后為1.4元/公里,當計費達到20元后,每公里加收50%的車費,車停止每3分鐘增加0.7元。車費顯示出來,有一位小數(shù)。</p><p><b>  1、方案論證與對比</b></p><p><b>  1.1、方案一</b>

11、</p><p>  如圖1所示,方案一包含運算控制模塊、分頻器、顯示模塊這三大部分。</p><p>  圖1 方案一系統(tǒng)框圖</p><p>  運算控制器模塊將其他兩個進行連接,是本次設計的核心。它包含計程器、計時器、計價器,同時還有讀取外部的撥碼開關控制信號,提供當前顯示信號與顯示位選信號,從而周期性交替顯示計價/計時信息、等時信息。</p>

12、<p>  計程器、計時器、計價器根據(jù)位選信號,輸出相應數(shù)據(jù)的當前選中數(shù)字,由頂層模塊根據(jù)顯示數(shù)據(jù)類型變換信號進行選擇,傳輸給顯示模塊。</p><p>  實驗箱的時鐘信號為20MHz方波,由分頻器分為10Hz的計時信號(一個周期代表現(xiàn)實中的1s)、10Hz的計程信號(一個周期代表現(xiàn)實中的10m)、500Hz的數(shù)碼管掃描信號(掃描頻率62.5Hz)、0.2Hz的顯示數(shù)據(jù)類型變換信號(變化周期5s)。&

13、lt;/p><p>  顯示模塊由實驗箱上的3/8譯碼器、五個LED燈構成狀態(tài)的指示燈、程序編寫的一個七段數(shù)碼管譯碼器(因顯示需要,原有字形“E”征用改為“—”,字形"F"改為“ ”)組成。</p><p><b>  1.2、方案二</b></p><p>  方案二流程介紹:分析系統(tǒng)設計要求不難得知,整個出租車計費系統(tǒng)按功能

14、主要分為速度模塊、計程模塊、計時模塊和計費模塊,其系統(tǒng)結構圖如圖2所示。</p><p>  圖2 方案二系統(tǒng)結構圖</p><p>  系統(tǒng)接收到reset信號后,總費用變?yōu)?元,同時其他計數(shù)器、寄存器等全部清零。</p><p>  系統(tǒng)接收到start信號后,首先把部分寄存器賦值,總費用不變,單價price寄存器通過對總費用的判斷后賦為3元。其他寄存器和計數(shù)器

15、等繼續(xù)保持為0。</p><p>  速度模塊:通過對速度信號sp的判斷,決定變量kinside的值。Kinside即是行進100m所需要的時鐘周期數(shù),然后每行進100m,則產(chǎn)生一個脈沖clkout。</p><p>  計程模塊:由于一個clkout信號代表行進100m,故通過對clkout計數(shù),可以獲得共行進的距離kmcount。</p><p>  計時模塊:

16、在汽車啟動后,當遇到顧客等人或紅燈時,出租車采用計時收費的方式。通過對速度信號sp的判斷決定是否開始記錄時間。當sp=0時,開始記錄時間。當時間達到足夠長時產(chǎn)生timecount脈沖,并重新計時。一個timecount脈沖相當于等待的時間達到了時間計費的長度。這里選擇系統(tǒng)時鐘頻率為500Hz,180s即計數(shù)值為9000。</p><p>  計費模塊由兩個進程組成。其中,一個進程根據(jù)條件對enable和price

17、賦值:當記錄的距離達到3公里后enable變?yōu)?,開始進行每公里收費,當總費用大于20元后,則單價price由原來的1.4元每公里變成2.1元每公里;第二個進程在每個時鐘周期判斷timeout和clkout的值。當其為1時,則在總費用上加上相應的費用。</p><p>  1.3、方案對比與選擇</p><p>  方案一和方案二雖然基本上都能實現(xiàn)本次課程設計的要求,但方案一通過分頻器分成

18、的數(shù)個輸入信號來進行出租車計費器的仿真,使系統(tǒng)變得復雜且對費用的計算不能達到課程設計對價格變化的要求。而方案二則通過一個速度模塊和一個時間模塊達到對速度和時間控制,從而使速度可調且實現(xiàn)等待計費。再通過計費模塊的反饋使公里單價隨總費用變化從而達到總體的要求。通過比較可知方案二簡單明了且調節(jié)速度控制里程的變化快慢,易于控制顯示,再結合實驗室的設備。綜合考慮,最終選擇了方案二。</p><p><b>  2

19、、主要模塊設計</b></p><p><b>  2.1、速度模塊</b></p><p>  速度模塊首先根據(jù)start信號判斷是否開始計費,然后根據(jù)輸入的速度檔位sp[2..0]的判斷,確定行駛100m所需要的時鐘數(shù),每前進100m,輸出一個clkout信號。同時由cnt對clk進行計數(shù),當cnt等于kinside時,把clkout信號置1,cnt清

20、0。其模塊框圖如圖3。</p><p><b>  圖3 速度模塊框圖</b></p><p><b>  2.2、計程模塊</b></p><p>  此模塊主要用于記錄行進的距離,其模塊框圖如圖4所示。通過對clkout信號的計數(shù),可以計算行駛的距離kmcount。一個clkout脈沖相當于行進100m所以只要記錄cl

21、kout的脈沖數(shù)目即可確定共行進的距離。Kmcount1為十分位,kmcount2為個位,kmcount3為十位,分別為十進制數(shù)。</p><p><b>  圖4 計程模塊框圖</b></p><p><b>  2.3、計時模塊</b></p><p>  速度模塊主要用于計時收費,記錄計程車速度為0的時間(如等待紅燈

22、),其模塊框圖如圖5所示。通過對sp信號的判斷,當sp=0,開始記錄時間。當時間達到足夠長時,產(chǎn)生timecount脈沖,并重新計時。</p><p><b>  圖5 計時模塊框圖</b></p><p><b>  2.4、計費模塊</b></p><p>  計費模塊如圖6所示,可分為kmmoney1和kmmoney

23、2兩個進程。</p><p>  Kmmoney1用于產(chǎn)生enable和price信號。當記錄距離達到3km后,enable信號為1,開始進行每公里收費。當總費用大于20元后,單價price由原來的1.4元變成2.1元,用作計時收費。通過對sp信號的判斷,當sp=0,開始記錄時間。當時間達到足夠長時,產(chǎn)生timecount脈沖,并重新計時。</p><p>  Kmmoney2用于判斷ti

24、mecount和clkout的值,當其為1時,總費用加1。最終輸出為總費用。</p><p><b>  圖6 計費模塊框圖</b></p><p><b>  2.5、整體框圖</b></p><p>  從上述設計方案中我們可以大致得到出租車計費器的系統(tǒng)框圖,如圖7所示。其中clk為輸入時鐘脈沖,時鐘上升沿有效;res

25、et為復位信號,start為開始計費信號,stop為停止計費信號,均高電平有效;SP[2..0]表示出租車狀態(tài)(停止或不同形式速度);kmcnt和count信號則分別輸出出租車行駛的里程和花費。</p><p>  圖7 出租車計費器系統(tǒng)框圖</p><p><b>  3、仿真結果</b></p><p>  3.1、速度模塊仿真</p

26、><p>  速度模塊的仿真波形圖如圖8所示。該模塊根據(jù)出租車所處的運行狀態(tài)和不同的形式速度,對相應數(shù)目的時鐘周期進行計數(shù),車每行駛100m時輸出信號clkout輸出高電平。</p><p>  圖8 速度模塊仿真波形圖</p><p><b>  3.2計程模塊仿真</b></p><p>  計程模塊的仿真波形如圖9所示

27、。圖中,當reset信號有效時,系統(tǒng)復位清零;否則,對輸入信號clkout進行十進制計數(shù)。</p><p>  圖9計程模塊仿真波形圖</p><p><b>  3.3計時模塊仿真</b></p><p>  計時模塊的仿真波形圖如圖10所示。預設9000個時鐘周期為180s,對時鐘周期進行計數(shù),每計9000個時鐘周期輸出高電平,指示計時18

28、0秒。</p><p>  圖10 計時模塊仿真波形圖</p><p>  3.4 計費模塊仿真</p><p>  計費模塊的仿真波形圖如圖11所示。當reset信號有效時,系統(tǒng)復位清零;否則,當計時計費信號timecount和計程計費信號clkout為高電平時,按照一定計費規(guī)則進行計費。</p><p>  圖11計費模塊仿真功能圖&l

29、t;/p><p><b>  3.5、整體仿真 </b></p><p>  對電路整體進行仿真,得出如下仿真波形圖12。圖中,當復位信號reset為高電平時,系統(tǒng)所有寄存器、計數(shù)器都清零;當開始計費信號start信號有效時,計費器開始計費,根據(jù)出租車行駛的速度sp[2..0]的取值計算所用花費和行駛里程;當停止計費信號有效時,計費器停止工作。</p>&l

30、t;p><b>  圖12整體仿真圖</b></p><p>  綜上所述,本設計的出租車計費器完全符合系統(tǒng)設計的要求,實現(xiàn)了出租車計費器所需的各項基本功能。</p><p><b>  4、 整體電路圖</b></p><p>  整體RTL電路如圖13。硬件電路由CycloneⅡ電路板組成,clk為時鐘周期信號,

31、由試驗箱產(chǎn)生,start/stop是啟動停止按鍵電路,reset為自動清零電路。電源又AD-DC開關電源供電。</p><p>  圖13 整體RTL門電路</p><p><b>  5、引腳鎖定及測試</b></p><p>  如圖14所示,對系統(tǒng)的各個引腳進行鎖定,并在Cyclone型可編程數(shù)字實現(xiàn)系統(tǒng)上實現(xiàn)了該控制。該數(shù)字實現(xiàn)系統(tǒng)分成

32、兩部分,一是FPGA的下載板,它主要包括所使用的芯片、RS-232接頭、接腳轉換插槽等;另一部分是I/O實驗板,它主要包括顯示、脈沖輸出等。出租車計費器的各部分利用數(shù)字實驗系統(tǒng)所附的RS-232連接線將計算機中的VHDL代碼設計的內容燒錄到該實驗系統(tǒng)的EPC2C35F672C8芯片中進行測試,測試結果基本實現(xiàn)了總費用=起費用+(里程-3km)×里程單價+等待時間×等待單價的出租車計費模式。</p>&l

33、t;p><b>  圖14各引腳鎖定</b></p><p><b>  6、致謝</b></p><p>  對于此次課程設計,首先我得誠摯的感謝我的指導老師,從設計、整改及論文的定稿過程中,自始至終都傾注著老師的心血。老師以嚴謹?shù)闹螌W之道、寬厚仁慈的胸懷、積極樂觀的生活態(tài)度,兢兢業(yè)業(yè)的工作作風為我樹立了學習的典范,他們的教誨與鞭策將激勵

34、我在學習和生活的道路上勵精圖治,開拓創(chuàng)新。他們淵博的知識、開闊的視野和敏銳的思維給了我深深的啟迪。我真誠地謝謝老師們的指導和關懷。</p><p><b>  7、詳細儀器清單</b></p><p><b>  參考文獻</b></p><p>  [1] 馮占嶺.數(shù)字電壓表及數(shù)字多用表檢測技術.中國計量出版社.2003

35、.2-47</p><p>  [2] ALTERA公司.VDHL語言[M].北京:清華大學出版社.1998.91-103</p><p>  [3] 宋萬杰,羅豐,吳順君.CPLD技術應用及其應用[M].西安電子科技大學出版社.1999.56-62</p><p>  [4] 張昌凡,龍永紅,彭濤.可編程邏輯器件及VHDL設計技術.廣州:華南工學院出版社,2001

36、.68-92</p><p>  [5] 江國強.EDA技術與應用[M].電子工業(yè)出版社.310-312</p><p>  [6] 潘松,黃繼業(yè).EDA技術與VHDL[M].清華大學出版社.220-228</p><p>  [7] 甘登岱,田富鵬,朱利娜.EDA培訓教程[M].機械工業(yè)出版社.215-220</p><p>  [8] 鄧

37、元慶,關宇,徐志平.數(shù)字電路與邏輯設計[M].電子工業(yè)出版社.189-192</p><p>  [9] 延明,張霖華.數(shù)字電路EDA入門[M].北京郵電大學出版社.195-200</p><p><b>  附錄</b></p><p><b>  VHDL程序</b></p><p><b

38、>  Speed模塊</b></p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity speed is</p>

39、;<p>  port( </p><p>  clk :in std_logic;</p><p>  reset:in std_logic;</p><p>  start:in std_logic;</p><p>  stop :in std_logic;</p><

40、;p>  sp :in std_logic_vector(2 downto 0);</p><p>  clkout:out std_logic</p><p><b>  );</b></p><p>  end speed;</p><p>  architecture rtl of speed is<

41、;/p><p><b>  begin</b></p><p>  process(clk,reset,start,stop,sp) </p><p>  type state_type is(s0,s1); </p><p>  variable s_state:state_type; </p

42、><p>  variable cnt:integer range 0 to 28;</p><p>  variable kinside:integer range 0 to 30;</p><p><b>  begin</b></p><p>  case sp is </p><

43、p>  when"000"=>kinside:=0; </p><p>  when"001"=>kinside:=28; </p><p>  when"010"=>kinside:=24; </p><p>  when"011"

44、=>kinside:=20;</p><p>  when"100"=>kinside:=16;</p><p>  when"101"=>kinside:=12;</p><p>  when"110"=>kinside:=8;</p><

45、;p>  when"111"=>kinside:=4;</p><p><b>  end case;</b></p><p>  if reset='1'then</p><p>  s_state:=s0;</p><p>  elsif clk'

46、;event and clk='1'then</p><p>  case s_state is</p><p><b>  when s0=></b></p><p><b>  cnt:=0;</b></p><p>  clkout<='0';&

47、lt;/p><p>  if start='1'then</p><p>  s_state:=s1;</p><p><b>  else</b></p><p>  s_state:=s0;</p><p><b>  end if;</b></p>

48、;<p><b>  when s1=></b></p><p>  clkout<='0';</p><p>  if stop='1'then</p><p>  s_state:=s0;</p><p>  elsif sp="000"

49、;then</p><p>  s_state:=s1;</p><p>  elsif cnt=kinside then</p><p><b>  cnt:=0;</b></p><p>  clkout<='1';</p><p>  s_state:=s1;<

50、;/p><p><b>  else</b></p><p>  cnt:=cnt+1;</p><p>  s_state:=s1;</p><p><b>  end if;</b></p><p><b>  end case;</b></p&g

51、t;<p><b>  end if;</b></p><p>  end process;</p><p><b>  end rtl;</b></p><p><b>  Times模塊</b></p><p>  library ieee;

52、</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity times is</p><p>  port( </p><p>  clk

53、 :in std_logic;</p><p>  reset:in std_logic;</p><p>  start:in std_logic;</p><p>  stop :in std_logic;</p><p>  sp :in std_logic_vector(2 downto 0);</p><p&

54、gt;  timecount:out std_logic</p><p><b>  );</b></p><p>  end times;</p><p>  architecture rtl of times is</p><p><b>  begin</b></p><p

55、>  process(reset,clk,sp,stop,start)</p><p>  type state_type is(t0,t1,t2);</p><p>  variable t_state:state_type;</p><p>  variable waittime:integer range 0 to 9000;</p>

56、;<p><b>  begin</b></p><p>  if reset='1'then </p><p>  t_state:=t0;</p><p>  elsif(clk'event and clk='1')then</p><p>  

57、case t_state is</p><p><b>  when t0=></b></p><p>  waittime:=0;</p><p>  timecount<='0';</p><p>  if start='1'then</p>&l

58、t;p>  t_state:=t1;</p><p><b>  else</b></p><p>  t_state:=t0;</p><p><b>  end if;</b></p><p><b>  when t1=></b></p><

59、;p>  if sp="000"then</p><p>  t_state:=t2;</p><p><b>  else</b></p><p>  waittime:=0;</p><p>  t_state:=t1;</p><p><b>  end

60、if;</b></p><p><b>  when t2=></b></p><p>  waittime:=waittime+1;</p><p>  timecount<='0';</p><p>  if waittime=9000 then</p>&l

61、t;p>  timecount<='1'; </p><p>  waittime:=0;</p><p>  elsif stop='1'then</p><p>  t_state:=t0;</p><p>  elsif sp="000"then</p>

62、<p>  t_state:=t2;</p><p><b>  else</b></p><p>  timecount<='0';</p><p>  t_state:=t1;</p><p><b>  end if;</b></p><p

63、><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end rtl;</b></p><p>  Kilometers模塊</p><p

64、>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity kilometers is</p><p>  port(<

65、/p><p>  clkout,reset:in std_logic;</p><p>  kmcnt1:out std_logic_vector(3 downto 0);</p><p>  kmcnt2:out std_logic_vector(3 downto 0);</p><p>  kmcnt3:out std_logic_vecto

66、r(3 downto 0)</p><p><b>  );</b></p><p>  end kilometers;</p><p>  architecture rtl of kilometers is</p><p><b>  begin</b></p><p> 

67、 process(clkout,reset)</p><p>  variablekm_reg:std_logic_vector(11 downto 0);</p><p><b>  begin</b></p><p>  if reset='1'then</p><p> 

68、 km_reg:="000000000000";</p><p>  elsif clkout'event and clkout='1'then</p><p>  if km_reg(3 downto 0)="1001"then</p><p>  km_reg:=km_reg+"0

69、111";</p><p><b>  else</b></p><p>  km_reg(3 downto 0):=km_reg(3 downto 0)+"0001";</p><p><b>  end if;</b></p><p><b>  

70、end if;</b></p><p>  kmcnt1<=km_reg(3 downto 0);</p><p>  kmcnt2<=km_reg(7 downto 4);</p><p>  kmcnt3<=km_reg(11 downto 8);</p><p>  end process;</p&g

71、t;<p><b>  end rtl;</b></p><p><b>  Kmmoney模塊</b></p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee

72、.std_logic_unsigned.all;</p><p>  entity kmmoney is</p><p>  port( </p><p>  clk :in std_logic;</p><p>  reset :in std_logic;</p><p>

73、  timecount:in std_logic;</p><p>  clkout :in std_logic;</p><p>  kmcnt2 :in std_logic_vector(3 downto 0);</p><p>  kmcnt3 :in std_logic_vector(3 downto 0);</p><p>

74、  count1 :out std_logic_vector(3 downto 0);</p><p>  count2 :out std_logic_vector(3 downto 0);</p><p>  count3 :out std_logic_vector(3 downto 0)</p><p><b>  );</b><

75、;/p><p>  end kmmoney;</p><p>  architecture rtl of kmmoney is</p><p>  signal cash:std_logic_vector(11 downto 0);</p><p>  signal price:std_logic_vector(7downto 0);</p

76、><p>  signal enable:std_logic;</p><p><b>  begin</b></p><p>  kmmoney1:PROCESS(cash,kmcnt2)</p><p><b>  begin</b></p><p>  if cas

77、h>="001000000000"then</p><p>  price<="00100001";</p><p><b>  else</b></p><p>  price<="00010100";</p><p><b>  

78、end if;</b></p><p>  if(kmcnt2>="0011")OR(kmcnt3>="0001")then</p><p>  enable<='1';</p><p><b>  else</b></p><p> 

79、 enable<='0';</p><p><b>  end if;</b></p><p>  end process;</p><p>  kmmoney2:process(reset,clkout,clk,enable,price,kmcnt2)</p><p>  variable reg

80、2:std_logic_vector(11 downto 0);</p><p>  variable clkout_cnt:integer range 0 to 10;</p><p><b>  begin</b></p><p>  ifreset='1'then</p><p>  cash&l

81、t;="000000000011";</p><p>  elsif clk'event and clk='1'then</p><p>  if timecount='1'then</p><p>  reg2:=cash;</p><p>  if reg2(

82、3 downto 0)+"0111">"1001"then</p><p>  reg2(7 downto 0):=reg2(7 downto 0)+"00000111"+"00000110";</p><p>  if reg2(7 downto 4)>"1001"then&

83、lt;/p><p>  cash<=reg2+"000001100000";</p><p><b>  else</b></p><p>  cash<=reg2;</p><p><b>  end if;</b></p><p><b&

84、gt;  else</b></p><p>  cash<=reg2+"0111";</p><p><b>  end if;</b></p><p>  elsif clkout='1' and enable='1'then</p><p>  i

85、f clkout_cnt=9 then</p><p>  clkout_cnt:=0;</p><p>  reg2:=cash;</p><p>  if "0000"&reg2(3 downto 0)+price(3 downto 0)>"00001001"then</p><p>

86、  reg2(7 downto 0):=</p><p>  reg2(7 downto 0)+"00000110"+price;</p><p>  if reg2(7 downto 4)>"1001"then</p><p>  cash<=reg2+"000001100000"

87、;;</p><p><b>  else</b></p><p>  cash<=reg2;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  cash<=reg2+pri

88、ce;</p><p><b>  end if;</b></p><p>  else--對時鐘計數(shù)</p><p>  clkout_cnt:=clkout_cnt+1;</p><p><b>  end if;</b></p><p><b>  end

89、if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  count1<=cash(3 downto 0);</p><p>  count2<=cash(7 downto 4); </p><

90、p>  count3<=cash(11 downto 8);</p><p>  end rtl;</p><p><b>  TOP模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p>&

91、lt;p>  entity top is</p><p><b>  port(</b></p><p>  clk :in std_logic;</p><p>  reset :in std_logic;</p><p>  start :in std_logic;</p><p&

92、gt;  stop :in std_logic;</p><p>  sp :in std_logic_vector(2 downto 0);</p><p>  kmcnt1:out std_logic_vector(3 downto 0);</p><p>  kmcnt2:out std_logic_vector(3 downto 0);</p&g

93、t;<p>  kmcnt3:out std_logic_vector(3 downto 0);</p><p>  count1:out std_logic_vector(3 downto 0);</p><p>  count2:out std_logic_vector(3 downto 0);</p><p>  count3:out std_l

94、ogic_vector(3 downto 0)</p><p><b>  );</b></p><p><b>  end top;</b></p><p>  architecture rtl of top is</p><p>  component speed is</p>

95、<p><b>  port(</b></p><p>  clk :in std_logic;</p><p>  reset:in std_logic;</p><p>  start:in std_logic;</p><p>  stop :in std_logic;</p><

96、;p>  sp :in std_logic_vector(2 downto 0);</p><p>  clkout:out std_logic</p><p><b>  );</b></p><p>  end component speed;</p><p>  component times is

97、</p><p><b>  port(</b></p><p>  clk :in std_logic;</p><p>  reset:in std_logic;</p><p>  start:in std_logic;</p><p>  stop :in std_logic;<

98、/p><p>  sp :in std_logic_vector(2 downto 0);</p><p>  timecount:out std_logic</p><p><b>  );</b></p><p>  end component times;</p><p>  compone

99、nt kilometers is</p><p><b>  port(</b></p><p>  clkout,reset:in std_logic;</p><p>  kmcnt1:out std_logic_vector(3 downto 0);</p><p>  kmcnt2:out std_logic

100、_vector(3 downto 0);</p><p>  kmcnt3:out std_logic_vector(3 downto 0)</p><p><b>  );</b></p><p>  end component kilometers;</p><p>  component kmmoney is&

101、lt;/p><p><b>  port(</b></p><p>  clk :in std_logic;</p><p>  reset :in std_logic;</p><p>  timecount:in std_logic;</p><p>  clkout :in std_

102、logic;</p><p>  kmcnt2 :in std_logic_vector(3 downto 0);</p><p>  kmcnt3 :in std_logic_vector(3 downto 0);</p><p>  count1 :out std_logic_vector(3 downto 0);</p><p>

103、  count2 :out std_logic_vector(3 downto 0);</p><p>  count3 :out std_logic_vector(3 downto 0)</p><p><b>  );</b></p><p>  end component kmmoney;</p><p>  

104、signal clktmp :std_logic;</p><p>  signal timetmp:std_logic;</p><p>  signal kmtmp2 :std_logic_vector(3 downto 0);</p><p>  signal kmtmp3 :std_logic_vector(3 downto 0);</p>&

105、lt;p><b>  begin</b></p><p>  U1:speed PORT MAP(clk,reset,start,stop,sp,clktmp);</p><p>  U2:times PORT MAP(clk,reset,start,stop,sp,timetmp);</p><p>  U3:kilometers PO

106、RT MAP(clktmp,reset,kmcnt1,kmtmp2,kmtmp3);</p><p>  U4:kmmoney PORT MAP(clk,reset,timetmp,clktmp,kmtmp2,kmtmp3,count1,count2,count3);</p><p>  kmcnt2<=kmtmp2;</p><p>  kmcnt3<

溫馨提示

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

評論

0/150

提交評論