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

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  一.總體設(shè)計(jì)思路1</p><p><b>  1. 設(shè)計(jì)目的1</b></p><p>  2.系統(tǒng)原理框圖1</p><p>  二.功能模塊設(shè)計(jì)2</p><p><b>  1. 計(jì)費(fèi)模

2、塊2</b></p><p>  2. 數(shù)據(jù)轉(zhuǎn)換模塊2</p><p>  3. 片選信號(hào)產(chǎn)生模塊3</p><p><b>  4. 顯示模塊3</b></p><p>  5. 數(shù)碼管控制模塊4</p><p><b>  6. 分頻模塊4</b>

3、</p><p>  7. 數(shù)碼管選擇模塊4</p><p>  三.各個(gè)模塊設(shè)計(jì)及仿真5</p><p><b>  1.計(jì)費(fèi)模塊5</b></p><p>  2.?dāng)?shù)據(jù)轉(zhuǎn)換模塊8</p><p>  3.片選信號(hào)產(chǎn)生模塊11</p><p><b>

4、  4.顯示模塊12</b></p><p>  5.?dāng)?shù)碼管控制模塊14</p><p><b>  6.分頻模塊15</b></p><p>  7. 數(shù)碼管選擇模塊17</p><p>  四.總體設(shè)計(jì)電路圖18</p><p>  五. 硬件實(shí)現(xiàn)19</p>

5、;<p><b>  六.心得體會(huì)21</b></p><p><b>  七.程序清單22</b></p><p><b>  八.參考文獻(xiàn)32</b></p><p><b>  一.總體設(shè)計(jì)思路</b></p><p><b

6、>  1. 設(shè)計(jì)目的</b></p><p>  隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計(jì)技術(shù)發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷﨏OLD/FPGA的出現(xiàn),給設(shè)計(jì)人員帶來了諸多方便,利用它進(jìn)行產(chǎn)品開發(fā),不僅成本低,周期、可靠性高,而且具有完全的知識(shí)產(chǎn)權(quán)。隨著社會(huì)的不斷進(jìn)步,人們生活水平的不斷提高,出租車逐漸成為人們?nèi)粘I畈豢扇鄙俚慕煌üぞ?。而?jì)價(jià)器作為出租車的一個(gè)重要組成部分,關(guān)系著出租車司

7、機(jī)和乘客雙方利益,起著重要的作用,因而出租車司機(jī)和乘客雙方利益,起著重要的作用,因而出租車計(jì)價(jià)器的發(fā)展非常迅猛。</p><p><b>  2.系統(tǒng)原理框圖</b></p><p>  基于CPLD的出租車計(jì)費(fèi)器的組成如圖1所示。各部分主要功能包括:信號(hào)輸入模塊對(duì)車輪傳感器的脈沖信號(hào)進(jìn)行計(jì)數(shù),并以高低電平模擬出租車啟動(dòng)、停止、暫停、加速按鈕,具有輸入信號(hào)作用;數(shù)據(jù)轉(zhuǎn)

8、換模塊將計(jì)費(fèi)模塊輸出的車費(fèi)和路程換成4位的十進(jìn)制數(shù)據(jù);譯碼/動(dòng)態(tài)掃描模塊將路程與費(fèi)用的數(shù)值譯碼后用動(dòng)態(tài)掃描的方式驅(qū)動(dòng)數(shù)碼管;數(shù)碼管顯示模塊將公里和計(jì)費(fèi)金額用4位LED數(shù)碼管顯示。</p><p>  圖1.1 系統(tǒng)總體框圖</p><p><b>  二.功能模塊設(shè)計(jì)</b></p><p><b>  1. 計(jì)費(fèi)模塊</b&

9、gt;</p><p>  此模塊為計(jì)費(fèi)模塊(即總體結(jié)構(gòu)中的信號(hào)輸入模塊),實(shí)現(xiàn)計(jì)費(fèi)功能,計(jì)費(fèi)標(biāo)準(zhǔn)為:按行駛里程計(jì)費(fèi),起步價(jià)為7.00元,并在車行3公里后按2.20元/km計(jì)費(fèi),當(dāng)計(jì)數(shù)器達(dá)到或超過20元時(shí),每公里加收50%的車費(fèi),即按3.30元/km計(jì)費(fèi)。CLK、START、STOP、PAUSE、JS為輸入信號(hào),分別代表汽車的起動(dòng)、停止、暫停和加速,CLK為掃描時(shí)鐘,硬件實(shí)現(xiàn)時(shí)加入時(shí)鐘信號(hào),另有兩個(gè)輸出,即CHE

10、FEI和LUC,分別代表車費(fèi)和路程,當(dāng)車處于行駛狀態(tài)時(shí),此模塊會(huì)自動(dòng)記錄下路程與車費(fèi)狀況并作為轉(zhuǎn)換模塊的輸入。其模塊生成圖如下:</p><p><b>  圖2.1 計(jì)費(fèi)模塊</b></p><p><b>  2. 數(shù)據(jù)轉(zhuǎn)換模塊</b></p><p>  此模塊功能是將計(jì)費(fèi)模塊產(chǎn)生的車費(fèi)與路程的模擬量轉(zhuǎn)換成數(shù)字量并輸

11、出,它是一個(gè)模為10的加法計(jì)數(shù)器,可將計(jì)費(fèi)模塊輸出的車費(fèi)和路程轉(zhuǎn)換成4位的十進(jìn)制數(shù)。其中DACLK為時(shí)鐘信號(hào),ASCORE、BSCORE連接計(jì)費(fèi)模塊的CHEFEI和LUC,輸出為2個(gè)4位的十進(jìn)制數(shù),可以分別表示路程和車費(fèi)情況。當(dāng)車運(yùn)行于不同狀況時(shí),此模塊會(huì)將不同的車費(fèi)與路程狀況轉(zhuǎn)換為數(shù)字量并輸出。其模塊生成圖如下:</p><p>  圖2.2 數(shù)據(jù)轉(zhuǎn)換模塊</p><p>  3. 片選

12、信號(hào)產(chǎn)生模塊</p><p>  此模塊功能是選擇八段數(shù)碼管按照設(shè)計(jì)要求進(jìn)行正確的顯示。</p><p><b>  其模塊生成圖如下:</b></p><p>  圖2.3 片選信號(hào)產(chǎn)生模塊</p><p><b>  4. 顯示模塊</b></p><p>  此模塊為顯

13、示模塊中的動(dòng)態(tài)掃描/譯碼/數(shù)碼管顯示模塊,功能是將已轉(zhuǎn)換好的數(shù)字量加載到兩個(gè)4位七段數(shù)碼管上并加以顯示。C[2..0]為片選端,用來連接片選模塊的片選輸出端A[2..0],A1、A2、A3、A4、B1、B2、B3、B4分別連接數(shù)據(jù)轉(zhuǎn)換模塊的八個(gè)轉(zhuǎn)換輸出端,因?yàn)樵O(shè)計(jì)要求路程和車費(fèi)都要用2位小數(shù)點(diǎn)來表示,所以須設(shè)置一個(gè)控制小數(shù)點(diǎn)的變量,即程序中的DP端,D[3..0]連接數(shù)碼管控制模塊的輸入端。</p><p>&l

14、t;b>  其模塊生成圖如下:</b></p><p><b>  圖2.4 顯示模塊</b></p><p>  5. 數(shù)碼管控制模塊 </p><p>  此模塊功能是控制七段數(shù)碼管對(duì)轉(zhuǎn)換后的數(shù)字量進(jìn)行顯示,使其完成路程和車費(fèi)的顯示。其中D[3..0]連接動(dòng)態(tài)掃描/譯碼/數(shù)碼管顯示模塊的D[3..0]端,Q[6..0]連接

15、七段數(shù)碼管,利用其控制特性在數(shù)碼管上顯示出車費(fèi)和路程。</p><p><b>  其模塊生成圖如下:</b></p><p>  圖2.5數(shù)碼管控制模塊</p><p><b>  6. 分頻模塊</b></p><p>  div模塊將實(shí)驗(yàn)箱上50Mhz脈沖信號(hào)分頻為500hz。</p&g

16、t;<p><b>  div生成模塊圖:</b></p><p><b>  圖2.6 分頻模塊</b></p><p>  7. 數(shù)碼管選擇模塊</p><p>  sel通過decode3_8模塊選擇數(shù)碼管</p><p>  decode3_8生成模塊圖:</p>

17、<p>  圖2.7 數(shù)碼管選擇模塊</p><p>  三.各個(gè)模塊設(shè)計(jì)及仿真</p><p><b>  1.計(jì)費(fèi)模塊</b></p><p><b>  計(jì)費(fèi)模塊源程序:</b></p><p>  library ieee;</p><p>  use

18、ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity jfmk is</p><p>  port(clk,start,stop,pause,js:in std_logic;</p><p>  chefei,luc:out i

19、nteger range 0 to 8000);</p><p><b>  end jfmk;</b></p><p>  architecture one of jfmk is</p><p><b>  begin</b></p><p>  process(clk,start,stop,pa

20、use,js)</p><p>  variable a,b:std_logic;</p><p>  variable aa:integer range 0 to 100;</p><p>  variable chf,lc:integer range 0 to 8000;</p><p>  variable num:integer ra

21、nge 0 to 9;</p><p><b>  begin</b></p><p>  if(clk'event and clk='1')then</p><p>  if(stop='0') then</p><p><b>  chf:=0;</b>&

22、lt;/p><p><b>  num:=0;</b></p><p><b>  b:='1';</b></p><p><b>  aa:=0;</b></p><p><b>  lc:=0;</b></p><p&g

23、t;  elsif(start='0') then</p><p><b>  b:='0';</b></p><p><b>  chf:=700;</b></p><p><b>  lc:=0;</b></p><p>  elsif(st

24、art='1' and js='1' and pause='1') then</p><p>  if(b='0')then</p><p>  num:=num+1;</p><p><b>  end if;</b></p><p>  if(num=9

25、)then</p><p><b>  lc:=lc+5;</b></p><p><b>  num:=0;</b></p><p><b>  aa:=aa+5;</b></p><p><b>  end if;</b></p><

26、;p>  elsif(start='1' and js='0' and pause='1')then</p><p><b>  lc:=lc+1;</b></p><p><b>  aa:=aa+1;</b></p><p><b>  end if;&l

27、t;/b></p><p>  if(aa>=100)then</p><p><b>  a:='1';</b></p><p><b>  aa:=0;</b></p><p><b>  else</b></p><p>

28、;<b>  a:='0';</b></p><p><b>  end if;</b></p><p>  if(lc<300)then</p><p><b>  null;</b></p><p>  elsif(chf<2000 and a=

29、'1') then</p><p>  chf:=chf+220;</p><p>  elsif(chf>=2000 and a='1')then</p><p>  chf:=chf+330;</p><p><b>  end if;</b></p><p&

30、gt;<b>  end if;</b></p><p>  chefei<=chf;</p><p><b>  luc<=lc;</b></p><p>  end process;</p><p><b>  end one;</b></p>&

31、lt;p>  jifei模塊的時(shí)序仿真圖:</p><p>  圖3.1 計(jì)費(fèi)模塊時(shí)序仿真圖</p><p>  圖3.2 計(jì)費(fèi)模塊時(shí)序仿真圖</p><p><b>  時(shí)序仿真圖分析: </b></p><p>  圖中的stop為汽車停止輸入端,上升沿有效;start為汽車啟動(dòng)輸入端,上升沿有效;pause為

32、汽車暫停輸入端,上升沿有效;js為汽車加速輸入端,上升沿有效。CLK為時(shí)鐘源信號(hào);chefei為汽車車費(fèi)輸出端,luc為汽車路程輸出端。</p><p>  由圖3.1可知:當(dāng)stop,Start,pause,js全為高電平時(shí)路程按5的速度增加,起車車價(jià)為700.由圖3.2可知,當(dāng)路程增加到300時(shí),車費(fèi)變?yōu)?20,以后路程每增加100,車費(fèi)增加220</p><p><b> 

33、 2.?dāng)?shù)據(jù)轉(zhuǎn)換模塊</b></p><p><b>  x模塊的源程序:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p>

34、;<p>  entity x is</p><p>  port(daclk:in std_logic;</p><p>  ascore,bscore:in integer range 0 to 8000;</p><p>  age,ashi,abai,aqian,bge,bshi,bbai,bqian:out std_logic_vector(

35、3 downto 0));</p><p><b>  end x;</b></p><p>  architecture rt1 of x is</p><p><b>  begin</b></p><p>  process(daclk,ascore)</p><p>

36、  variable comb1:integer range 0 to 8000;</p><p>  variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  if (daclk'event

37、and daclk='1')then</p><p>  if(comb1<ascore)then</p><p>  if(comb1a=9 and comb1b=9 and comb1c=9)then</p><p>  comb1a:="0000";</p><p>  comb1b:=&quo

38、t;0000";</p><p>  comb1c:="0000";</p><p>  comb1d:=comb1d+1;</p><p>  comb1:=comb1+1;</p><p>  elsif(comb1a=9 and comb1b=9)then</p><p>  com

39、b1a:="0000";</p><p>  comb1b:="0000";</p><p>  comb1:=comb1+1;</p><p>  comb1c:=comb1c+1;</p><p>  elsif(comb1a=9)then</p><p>  comb1a:

40、="0000";</p><p>  comb1b:=comb1b+1;</p><p>  comb1:=comb1+1;</p><p><b>  else</b></p><p>  comb1a:=comb1a+1;</p><p>  comb1:=comb1+1;

41、</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  ashi<=comb1b;</p><p>  age<=comb1a;</p><p>  abai<=comb1c;</p>

42、;<p>  aqian<=comb1d;</p><p><b>  comb1:=0;</b></p><p>  comb1a:="0000";</p><p>  comb1b:="0000";</p><p>  comb1c:="0000&

43、quot;;</p><p>  comb1d:="0000";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(da

44、clk,bscore)</p><p>  variable comb2:integer range 0 to 8000;</p><p>  variable comb2a,comb2b,comb2c,comb2d:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p>

45、<p>  if(daclk'event and daclk='1')then</p><p>  if(comb2<bscore)then</p><p>  if(comb2a=9 and comb2b=9 and comb2c=9)then</p><p>  comb2a:="0000";<

46、/p><p>  comb2b:="0000";</p><p>  comb2c:="0000";</p><p>  comb2d:=comb2d+1;</p><p>  comb2:=comb2+1;</p><p>  elsif(comb2a=9 and comb2b=9

47、)then</p><p>  comb2a:="0000";</p><p>  comb2b:="0000";</p><p>  comb2:=comb2+1;</p><p>  comb2c:=comb2c+1;</p><p>  elsif(comb2a=9)the

48、n</p><p>  comb2a:="0000";</p><p>  comb2b:=comb2b+1;</p><p>  comb2:=comb2+1;</p><p><b>  else</b></p><p>  comb2a:=comb2a+1;</p&

49、gt;<p>  comb2:=comb2+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  bshi<=comb2b;</p><p>  bge<=comb2a;</p><p

50、>  bbai<=comb2c;</p><p>  bqian<=comb2d;</p><p><b>  comb2:=0;</b></p><p>  comb2a:="0000";</p><p>  comb2b:="0000";</p>

51、<p>  comb2c:="0000";</p><p>  comb2d:="0000";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;&l

52、t;/p><p><b>  end rt1;</b></p><p>  圖3.3 數(shù)據(jù)轉(zhuǎn)換模塊時(shí)序仿真圖</p><p>  圖3.4 數(shù)據(jù)轉(zhuǎn)換模塊時(shí)序仿真圖</p><p>  圖3.5 數(shù)據(jù)轉(zhuǎn)換模塊時(shí)序仿真圖</p><p>  3.片選信號(hào)產(chǎn)生模塊</p><p> 

53、 se模塊的源程序如下:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sel is</p><p>  port(cl

54、k:in std_logic;</p><p>  a:out std_logic_vector(2 downto 0));</p><p><b>  end sel;</b></p><p>  architecture rt1 of sel is</p><p><b>  begin</b>

55、</p><p>  process(clk)</p><p>  variable b:std_logic_vector(2 downto 0);</p><p><b>  begin</b></p><p>  if(clk'event and clk='1')then</p>

56、<p>  if(b="111")then</p><p><b>  b:="000";</b></p><p><b>  else</b></p><p><b>  b:=b+1;</b></p><p><b&

57、gt;  end if;</b></p><p><b>  end if;</b></p><p><b>  a<=b;</b></p><p>  end process;</p><p><b>  end rt1; </b></p>&

58、lt;p>  圖3.6片選信號(hào)產(chǎn)生模塊時(shí)序仿真圖</p><p>  由圖可以看出,當(dāng)CLK加入時(shí)鐘信號(hào)時(shí),a從000到111逐個(gè)變化,該模塊可將模擬信號(hào)進(jìn)行片選并有對(duì)應(yīng)的數(shù)碼管進(jìn)行顯示。</p><p><b>  4.顯示模塊</b></p><p>  xxx1模塊的源程序:</p><p>  librar

59、y ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity xxxl is</p><p>  port(c:in std_logic_vector(2 downto 0);</p&g

60、t;<p>  dp:out std_logic;</p><p>  a1,a2,a3,a4,b1,b2,b3,b4:in std_logic_vector(3 downto 0);</p><p>  d:out std_logic_vector(3 downto 0));</p><p><b>  end xxxl;</b>

61、;</p><p>  architecture rtl of xxxl is</p><p><b>  begin</b></p><p>  process(c,a1,a2,a3,a4,b1,b2,b3,b4)</p><p>  variable comb:std_logic_vector(2 downto 0)

62、;</p><p><b>  begin </b></p><p><b>  comb:=c;</b></p><p>  case comb is</p><p>  when"000"=>d<=a1;</p><p><b>

63、  dp<='0';</b></p><p>  when"001"=>d<=a2;</p><p><b>  dp<='0';</b></p><p>  when"010"=>d<=a3;</p><

64、p><b>  dp<='1';</b></p><p>  when"011"=>d<=a4;</p><p><b>  dp<='0';</b></p><p>  when"100"=>d<=b1;&l

65、t;/p><p><b>  dp<='0';</b></p><p>  when"101"=>d<=b2;</p><p><b>  dp<='0';</b></p><p>  when"110"=&

66、gt;d<=b3;</p><p><b>  dp<='1';</b></p><p>  when"111"=>d<=b4;</p><p><b>  dp<='0';</b></p><p>  when ot

67、hers=>null;</p><p><b>  end case;</b></p><p>  end process;</p><p><b>  end rtl;</b></p><p>  圖3.7 顯示模塊時(shí)序仿真圖</p><p>  由上圖可知,輸入信號(hào)

68、C為3位片選信號(hào)其變化范圍為0到7,輸入信號(hào)c從0到7逐個(gè)變化時(shí),輸出d逐個(gè)輸a1,a2,a3,a4,b1,b2,b3,b4的輸入信號(hào)。</p><p><b>  5.?dāng)?shù)碼管控制模塊</b></p><p><b>  di模塊的源程序:</b></p><p>  library ieee;</p>&l

69、t;p>  use ieee.std_logic_1164.all;</p><p>  entity di is</p><p>  port(d:in std_logic _vector(3 downto 0);</p><p>  q:out std_logic_vector(6 downto 0));</p><p><b

70、>  end di;</b></p><p>  architecture rtl of di is</p><p><b>  begin</b></p><p>  process(d)</p><p><b>  begin</b></p><p>&

71、lt;b>  case d is</b></p><p>  when"0000"=>q<="0111111";</p><p>  when"0001"=>q<="0000110";</p><p>  when"0010"

72、=>q<="1011011";</p><p>  when"0011"=>q<="1001111";</p><p>  when"0100"=>q<="1100110";</p><p>  when"0101&quo

73、t;=>q<="1101101";</p><p>  when"0110"=>q<="1111101";</p><p>  when"0111"=>q<="0100111";</p><p>  when"1000&q

74、uot;=>q<="1111111";</p><p>  when others=>q<="1101111";</p><p><b>  end case;</b></p><p>  end process;</p><p><b>  en

75、d rtl;</b></p><p>  圖3.8 數(shù)碼管控制模塊時(shí)序仿真圖</p><p>  圖3.9 數(shù)碼管控制模塊時(shí)序仿真圖</p><p>  從波形圖中可看出,此模塊可控制數(shù)碼管完成對(duì)數(shù)字量的顯示。當(dāng)輸入為0000-1000時(shí)數(shù)碼管分別顯示0,1,2,3,4,5,6,7,8。當(dāng)輸入為其他時(shí)數(shù)碼管顯示9。</p><p>

76、;<b>  6.分頻模塊</b></p><p><b>  div模塊源程序:</b></p><p>  LIBRARY ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all

77、;</p><p>  ENTITY div IS</p><p>  port(clk:IN std_logic;</p><p>  clkout:OUT std_logic</p><p><b>  );</b></p><p><b>  end div;</b>&

78、lt;/p><p>  ARCHITECTURE one OF div IS</p><p><b>  BEGIN</b></p><p>  process(clk)</p><p>  variable cnt:integer range 0 to 100000;</p><p>  varia

79、ble tmp:std_logic;</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then</p><p>  if cnt>=99999 then</p><p><b>  cnt:=0;</b&g

80、t;</p><p>  tmp:=not tmp;</p><p><b>  else</b></p><p>  cnt:=cnt+1;</p><p><b>  end if;</b></p><p><b>  end if;</b><

81、/p><p>  clkout<=tmp;</p><p>  end process;</p><p><b>  end one;</b></p><p>  圖3.10 分頻模塊時(shí)序仿真圖</p><p>  7. 數(shù)碼管選擇模塊</p><p><b>

82、  其源程序:</b></p><p>  LIBRARY ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  ENTITY decode3_8 IS</p><p&g

83、t;  PORT(SEL:IN std_logic_vector(2 downto 0);</p><p>  Q:OUT std_logic_vector(7 downto 0));</p><p>  END decode3_8;</p><p>  ARCHITECTURE a OF decode3_8 IS</p><p><b

84、>  BEGIN</b></p><p>  Q<="11111110"when sel=0 else</p><p>  "11111101"when sel=1 else</p><p>  "11111011"when sel=2 else</p><p&g

85、t;  "11110111"when sel=3 else</p><p>  "11101111"when sel=4 else</p><p>  "11011111"when sel=5 else</p><p>  "10111111"when sel=6 else</p&

86、gt;<p>  "01111111"when sel=7 else</p><p>  "11111111";</p><p><b>  END a;</b></p><p>  圖3.11數(shù)碼管選擇模塊時(shí)序仿真圖</p><p><b>  四.總體設(shè)

87、計(jì)電路圖</b></p><p><b>  圖4.1 總原理圖</b></p><p><b>  五. 硬件實(shí)現(xiàn)</b></p><p>  通過硬件下載,該電路可以完成硬件實(shí)現(xiàn),芯片管腳定義可以直接用編輯.pin文件。完成管腳定義后選擇器件,編譯后生成.sof、.pof文件。選擇sof文件進(jìn)行下載。<

88、;/p><p>  通過對(duì)每一模塊的仿真和下載,可以實(shí)現(xiàn)各個(gè)模塊的邏輯功能,驗(yàn)證了各個(gè)模塊的正確性。在出租車計(jì)費(fèi)系統(tǒng)的5個(gè)模塊中 ,重點(diǎn)在于jifei模塊,x(轉(zhuǎn)化)模塊,顯示模塊。jifei模塊主要有汽車的啟動(dòng)、停止、暫停、加速按鍵;轉(zhuǎn)化模塊主要是把車費(fèi)和路程轉(zhuǎn)化為4位十進(jìn)制;顯示模塊是將車費(fèi)和路程顯示出來。各模塊完成后,在將它們組合成完整的出租車系統(tǒng),在設(shè)計(jì)過程中還需要改進(jìn)的是控制系統(tǒng)的糾錯(cuò)功能。</p&g

89、t;<p>  出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已全部完成,能按預(yù)期的效果進(jìn)行模擬汽車啟動(dòng)、停止、暫停等功能,并設(shè)計(jì)動(dòng)態(tài)掃描電路顯示車費(fèi)數(shù)目,由動(dòng)態(tài)掃描電路來完成。車暫時(shí)停止不計(jì)費(fèi),車費(fèi)保持不變。若停止則車費(fèi)清零,等待下一次計(jì)費(fèi)的開始。出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)中體現(xiàn)了VHDL覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語言及PLD器件速度快,使用方便,便于修改等特點(diǎn),本設(shè)計(jì)在實(shí)用方面具有一定的價(jià)值。</p><p&g

90、t;<b>  實(shí)驗(yàn)表明:</b></p><p>  該計(jì)費(fèi)器實(shí)現(xiàn)了按預(yù)置參數(shù)自動(dòng)計(jì)費(fèi)(最大計(jì)費(fèi)金額為99.99元)、自動(dòng)計(jì)程(最大計(jì)程公里數(shù)為99.99 km)等功能;能夠?qū)崿F(xiàn)起步價(jià)、每公里收費(fèi)、車型及加費(fèi)里程的參數(shù)預(yù)置(如:起步價(jià)7.00元;3 km后,2.20元/km;計(jì)費(fèi)超過20.00元,每公里加收50%的車費(fèi)等),且預(yù)置參數(shù)可調(diào)范圍廣。由于采用CPLD大規(guī)??删幊踢壿嬈骷?,整機(jī)功

91、耗小、抗干擾能力強(qiáng)、系統(tǒng)穩(wěn)定、工作可靠、升級(jí)方便。</p><p>  其調(diào)試結(jié)果如下圖所示:</p><p><b>  圖5.1調(diào)試結(jié)果</b></p><p>  由圖5.1可知,起步價(jià)為7元。</p><p><b>  圖5.2 調(diào)試結(jié)果</b></p><p> 

92、 由圖5.2可知,當(dāng)每增加半公里時(shí),價(jià)格增加1.2元</p><p><b>  六.心得體會(huì)</b></p><p>  短短兩周的EDA課程設(shè)計(jì)已經(jīng)接近尾聲了,我們從挑選課設(shè)題目,查閱資料,到研究出總體設(shè)計(jì),詳細(xì)設(shè)計(jì),然后分工合作,再到最后的編程上機(jī)調(diào)試,修改程序,完善程序,收獲頗多。出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已全部完成,能按預(yù)期的效果進(jìn)行模擬汽車啟動(dòng),停止、暫停等功

93、能,并設(shè)計(jì)動(dòng)態(tài)掃描電路顯示車費(fèi)數(shù)目。車暫停時(shí)停止計(jì)費(fèi)。若停止清零,等待下一次計(jì)費(fèi)的開始。出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)中體現(xiàn)了VHDL覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語言及PLD器件速度快,使用方便,便于修改等特點(diǎn)。本設(shè)計(jì)在使用方面居庸一點(diǎn)的價(jià)值。由于時(shí)間有限和經(jīng)驗(yàn)是平的欠缺,不足之處還望老師予以指正。</p><p>  在這輛周里我們?cè)俅问煜ず驮鰪?qiáng)了對(duì)VHDL語言的基本知識(shí),熟悉利用VHDL語言對(duì)常用的組合邏

94、輯電路和時(shí)序邏輯電路編程,把編程和實(shí)際結(jié)合起來。VHDL硬件描述語言打破了硬件和軟件設(shè)計(jì)人員之間互不干涉的界限,可以使用語言的形式來進(jìn)行數(shù)字系統(tǒng)的硬件結(jié)構(gòu)、行為的描述,直接設(shè)計(jì)數(shù)字電路硬件系統(tǒng)。通過編程、下載后,該芯片已經(jīng)具備了原來需要使用復(fù)雜的數(shù)字電路實(shí)現(xiàn)的功能;更加了解和加深了對(duì)編制和調(diào)試程序的技巧,進(jìn)一步提高了上機(jī)動(dòng)手能力,培養(yǎng)了使用設(shè)計(jì)綜合電路的能力,養(yǎng)成了提供文檔資料的習(xí)慣和規(guī)范編程的思想。</p><p&

95、gt;  本次的課程設(shè)計(jì)將各個(gè)單一的模塊實(shí)現(xiàn)其功能后,學(xué)會(huì)通過原理圖或頂層文件把各模塊連接,從而實(shí)現(xiàn)對(duì)出租車自動(dòng)計(jì)費(fèi)。課設(shè)注重的不僅是把理論知識(shí)鞏固,而且應(yīng)把理論和實(shí)際相結(jié)合,把知識(shí)應(yīng)用到生活中。在課設(shè)過程中,遇到了不少問題,數(shù)碼管無法正常顯示,計(jì)費(fèi)不按要求等。通過的對(duì)源代碼的修改,發(fā)現(xiàn)了一些易忽略的細(xì)節(jié)。課設(shè)考驗(yàn)的是思維邏輯能力,對(duì)知識(shí)的靈活應(yīng)用,當(dāng)然,合作精神是不可或缺的。課設(shè)時(shí)間不長,要在短時(shí)間內(nèi)完成絕不是個(gè)人力量能達(dá)到的,要學(xué)會(huì)

96、集眾人之精華,還要善于利用已有的工具為自己服務(wù),開拓思維。課設(shè)讓我們認(rèn)識(shí)到所學(xué)本科知識(shí)的真正實(shí)用性,只是這門課開始研究的第一步。</p><p>  在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計(jì)課程過程中遇到問題是很正常的,但應(yīng)該將每次遇到

97、的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。課程設(shè)計(jì)結(jié)束了,但是從中學(xué)到的知識(shí)會(huì)讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問題和實(shí)踐能力的提高都會(huì)受益于我在以后的學(xué)習(xí)、工作和生活中。在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。最后,我們衷心的感謝課設(shè)期間一直指導(dǎo)和陪伴著我們的老師。</p><p><b>  七.程序清單</b></p&

98、gt;<p><b>  計(jì)費(fèi)模塊源程序:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity jfmk

99、 is</p><p>  port(clk,start,stop,pause,js:in std_logic;</p><p>  chefei,luc:out integer range 0 to 8000);</p><p><b>  end jfmk;</b></p><p>  architecture on

100、e of jfmk is</p><p><b>  begin</b></p><p>  process(clk,start,stop,pause,js)</p><p>  variable a,b:std_logic;</p><p>  variable aa:integer range 0 to 100;&l

101、t;/p><p>  variable chf,lc:integer range 0 to 8000;</p><p>  variable num:integer range 0 to 9;</p><p><b>  begin</b></p><p>  if(clk'event and clk='1&

102、#39;)then</p><p>  if(stop='0') then</p><p><b>  chf:=0;</b></p><p><b>  num:=0;</b></p><p><b>  b:='1';</b></p&g

103、t;<p><b>  aa:=0;</b></p><p><b>  lc:=0;</b></p><p>  elsif(start='0') then</p><p><b>  b:='0';</b></p><p>&l

104、t;b>  chf:=700;</b></p><p><b>  lc:=0;</b></p><p>  elsif(start='1' and js='1' and pause='1') then</p><p>  if(b='0')then</p&

105、gt;<p>  num:=num+1;</p><p><b>  end if;</b></p><p>  if(num=9)then</p><p><b>  lc:=lc+5;</b></p><p><b>  num:=0;</b></p&g

106、t;<p><b>  aa:=aa+5;</b></p><p><b>  end if;</b></p><p>  elsif(start='1' and js='0' and pause='1')then</p><p><b>  lc:=

107、lc+1;</b></p><p><b>  aa:=aa+1;</b></p><p><b>  end if;</b></p><p>  if(aa>=100)then</p><p><b>  a:='1';</b></p&

108、gt;<p><b>  aa:=0;</b></p><p><b>  else</b></p><p><b>  a:='0';</b></p><p><b>  end if;</b></p><p>  if(l

109、c<300)then</p><p><b>  null;</b></p><p>  elsif(chf<2000 and a='1') then</p><p>  chf:=chf+220;</p><p>  elsif(chf>=2000 and a='1')

110、then</p><p>  chf:=chf+330;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  chefei<=chf;</p><p><b>  luc<=lc;&

111、lt;/b></p><p>  end process;</p><p><b>  end one;</b></p><p>  數(shù)據(jù)轉(zhuǎn)換模塊的源程序:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</

112、p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity x is</p><p>  port(daclk:in std_logic;</p><p>  ascore,bscore:in integer range 0 to 8000;</p><p>  ag

113、e,ashi,abai,aqian,bge,bshi,bbai,bqian:out std_logic_vector(3 downto 0));</p><p><b>  end x;</b></p><p>  architecture rt1 of x is</p><p><b>  begin</b></p

114、><p>  process(daclk,ascore)</p><p>  variable comb1:integer range 0 to 8000;</p><p>  variable comb1a,comb1b,comb1c,comb1d:std_logic_vector(3 downto 0);</p><p><b> 

115、 begin</b></p><p>  if (daclk'event and daclk='1')then</p><p>  if(comb1<ascore)then</p><p>  if(comb1a=9 and comb1b=9 and comb1c=9)then</p><p>  c

116、omb1a:="0000";</p><p>  comb1b:="0000";</p><p>  comb1c:="0000";</p><p>  comb1d:=comb1d+1;</p><p>  comb1:=comb1+1;</p><p> 

117、 elsif(comb1a=9 and comb1b=9)then</p><p>  comb1a:="0000";</p><p>  comb1b:="0000";</p><p>  comb1:=comb1+1;</p><p>  comb1c:=comb1c+1;</p>&

118、lt;p>  elsif(comb1a=9)then</p><p>  comb1a:="0000";</p><p>  comb1b:=comb1b+1;</p><p>  comb1:=comb1+1;</p><p><b>  else</b></p><p&g

119、t;  comb1a:=comb1a+1;</p><p>  comb1:=comb1+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  ashi<=comb1b;</p><p>  age&

120、lt;=comb1a;</p><p>  abai<=comb1c;</p><p>  aqian<=comb1d;</p><p><b>  comb1:=0;</b></p><p>  comb1a:="0000";</p><p>  comb1b:=

121、"0000";</p><p>  comb1c:="0000";</p><p>  comb1d:="0000";</p><p><b>  end if;</b></p><p><b>  end if;</b></p>

122、;<p>  end process;</p><p>  process(daclk,bscore)</p><p>  variable comb2:integer range 0 to 8000;</p><p>  variable comb2a,comb2b,comb2c,comb2d:std_logic_vector(3 downto 0)

123、;</p><p><b>  begin</b></p><p>  if(daclk'event and daclk='1')then</p><p>  if(comb2<bscore)then</p><p>  if(comb2a=9 and comb2b=9 and comb2c

124、=9)then</p><p>  comb2a:="0000";</p><p>  comb2b:="0000";</p><p>  comb2c:="0000";</p><p>  comb2d:=comb2d+1;</p><p>  comb2:

125、=comb2+1;</p><p>  elsif(comb2a=9 and comb2b=9)then</p><p>  comb2a:="0000";</p><p>  comb2b:="0000";</p><p>  comb2:=comb2+1;</p><p> 

126、 comb2c:=comb2c+1;</p><p>  elsif(comb2a=9)then</p><p>  comb2a:="0000";</p><p>  comb2b:=comb2b+1;</p><p>  comb2:=comb2+1;</p><p><b>  el

127、se</b></p><p>  comb2a:=comb2a+1;</p><p>  comb2:=comb2+1;</p><p><b>  end if;</b></p><p><b>  else</b></p><p>  bshi<=com

128、b2b;</p><p>  bge<=comb2a;</p><p>  bbai<=comb2c;</p><p>  bqian<=comb2d;</p><p><b>  comb2:=0;</b></p><p>  comb2a:="0000";

129、</p><p>  comb2b:="0000";</p><p>  comb2c:="0000";</p><p>  comb2d:="0000";</p><p><b>  end if;</b></p><p><b&

130、gt;  end if;</b></p><p>  end process;</p><p><b>  end rt1;</b></p><p>  片選信號(hào)產(chǎn)生模塊的源程序如下:</p><p>  library ieee;</p><p>  use ieee.std_log

131、ic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sel is</p><p>  port(clk:in std_logic;</p><p>  a:out std_logic_vector(2 downto 0));</p>&

132、lt;p><b>  end sel;</b></p><p>  architecture rt1 of sel is</p><p><b>  begin</b></p><p>  process(clk)</p><p>  variable b:std_logic_vector(2

133、 downto 0);</p><p><b>  begin</b></p><p>  if(clk'event and clk='1')then</p><p>  if(b="111")then</p><p><b>  b:="000"

134、;</b></p><p><b>  else</b></p><p><b>  b:=b+1;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><

135、p><b>  a<=b;</b></p><p>  end process;</p><p><b>  end rt1; </b></p><p><b>  顯示模塊的源程序:</b></p><p>  library ieee;</p>&

136、lt;p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity xxxl is</p><p>  port(c:in std_logic_vector(2 downto 0);</p><p>  dp:ou

137、t std_logic;</p><p>  a1,a2,a3,a4,b1,b2,b3,b4:in std_logic_vector(3 downto 0);</p><p>  d:out std_logic_vector(3 downto 0));</p><p><b>  end xxxl;</b></p><p&g

138、t;  architecture rtl of xxxl is</p><p><b>  begin</b></p><p>  process(c,a1,a2,a3,a4,b1,b2,b3,b4)</p><p>  variable comb:std_logic_vector(2 downto 0);</p><p&g

139、t;<b>  begin </b></p><p><b>  comb:=c;</b></p><p>  case comb is</p><p>  when"000"=>d<=a1;</p><p><b>  dp<='0'

140、;</b></p><p>  when"001"=>d<=a2;</p><p><b>  dp<='0';</b></p><p>  when"010"=>d<=a3;</p><p><b>  dp&l

141、t;='1';</b></p><p>  when"011"=>d<=a4;</p><p><b>  dp<='0';</b></p><p>  when"100"=>d<=b1;</p><p>&

142、lt;b>  dp<='0';</b></p><p>  when"101"=>d<=b2;</p><p><b>  dp<='0';</b></p><p>  when"110"=>d<=b3;</p&g

143、t;<p><b>  dp<='1';</b></p><p>  when"111"=>d<=b4;</p><p><b>  dp<='0';</b></p><p>  when others=>null;</p

溫馨提示

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

評(píng)論

0/150

提交評(píng)論