【正文】
。// 總的時鐘是 50M output clk0。 分頻模塊: 計數(shù)器的分頻模塊 : 計數(shù)器的分頻模塊 具體框圖: cl k _ 5 0 Mr e se tcl k 0d i v 0 :u 0 此模塊的功能是對總的時鐘進(jìn)行分頻,分出的頻率是讓計數(shù)器用的,因為總的時鐘是 50M的。其中行駛路程計數(shù)模塊、等待時間計數(shù)模塊和計費模塊,用來統(tǒng)計路程、等待時間和總費用,控制模塊是用來控制計費模塊,數(shù)碼管顯示模塊用來顯示行駛的公里數(shù)、等待累計時間和總費用等信息。若在行駛狀態(tài),則計程器開始 累 加計數(shù),當(dāng)路程超過 3公里后,計費器以每公里 1元累加。 秒的顯示范圍是 0— 59。而計價器作為出租車的一個重要組成部分,關(guān)系著出租車司機和乘客雙方利益,起著重要的 作用,因而出租車計價器的發(fā)展非常迅猛。 1.引言 : 隨著 EDA 技術(shù)的高速發(fā)展 ,電子系統(tǒng)的設(shè)計技術(shù)發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷?CPLD/ FPGA 的出現(xiàn),給設(shè)計人員帶來了諸多方便。 實 習(xí) 報 告 院 系: 電氣信息工程系 專 業(yè): 電子科學(xué)與技術(shù) 姓 名: 學(xué) 號: 年 月 日 實習(xí)報告評語 等 級: 評閱人: 職 稱: 年 月 日 實習(xí)報告 實習(xí)目的(內(nèi)容): EDA課程設(shè)計 基于 FPGA設(shè)計的出租車計價器 實習(xí)時間: 自 5 月 7 日 至 5 月 20 日 共 14 天。利用它進(jìn)行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。 2.系統(tǒng) 設(shè)計 : : 1) 行程 3公里內(nèi)(包括 3公里),且等待累計時間 2分鐘內(nèi)(包括 2分鐘),起步費為 ; 2) 3公里外(不包括 3公里)以每公里 ,等待累計時間 2分鐘外(不包括 2分鐘)以每分鐘以 。分 辨率為 1秒。若出租車停止等待狀態(tài),則計時器開始 累 加計數(shù),當(dāng)時間超過 2分鐘后,計費器以每分鐘 1元累加。系統(tǒng) 原理圖 如下所示: V C Cres et IN P U TV C Cs t art IN P U Tdig[ 7. . 0]O U T P U Ts eg [ 7. . 0]O U T P U Tc lk _5 0Mres etc lk 0div 0ins tc lk _50Mres etc lk 1div 1ins t 1c lk 0s t artres etdis t anc e[ 7. . 0]dis t anc e_en abledis t anc eins t 2c lk 0res ets t arts [ 7. . 0]m [ 7. . 0]t im e_en abletmins t 3s t artdis t an c e_ en ab let im e_ en ab les ele c t _c lkc on t rolins t 4s elec t _c lkres etc lk 0m oney [ 7. . 0]m oneyins t 5c lk 1dis t an c e[ 7. . 0]s [ 7. . 0]m [ 7. . 0]m on ey [ 7. . 0]dig [ 7. . 0]s eg [ 7. . 0]ledins t 6V C CC LK _5 0M IN P U T 3 .各模塊設(shè)計: 本系統(tǒng)采用層次化、模塊化的設(shè)計方法,設(shè)計順序為自下向上。設(shè)計該模塊的時候用了一個 32位的計數(shù)器,當(dāng)計數(shù)器計到。//分頻后輸出的時鐘 reg clk0。 count=3239。d0。// 沒計到 25000000計數(shù)器加一 end//end always endmodule // 結(jié)束分頻模塊 數(shù)碼管 的分頻模塊: 具體框圖: c l k _ 5 0 Mr e s e tc l k 1d i v 1 :u 1 此模塊的功能是對總的時鐘進(jìn)行分頻,分出的頻率是讓數(shù)碼管用的,因為總的時鐘是 50M的。// 總的時鐘是 50M output clk1。d0。d50_000)// 判斷計時器記到了 50_000嗎 begin count=3239。d1。//端口定義 input clk0 ,start,reset。// 控制計費的公里信號 reg distance_enable。d0。d1。d0。//輸出 distance_enable信號 end end//end always endmodule//結(jié)束計程模塊 計程模塊的仿真結(jié)果: 從波形圖可以看出在時鐘的控制下,當(dāng) reset 為高電平且 start 為高電平的時候 distance 開始計數(shù),當(dāng)計到大于三的時候輸出了 distancedistance_enable為高電平。// 端口的定義 input clk0,reset,start。//輸出的控制計費的信號 reg [7:0] s。d0。d0。d0。d1。d1。d2)amp。d1:139。 兩分鐘之外(不包括兩分鐘)的仿真結(jié)果如下所示: 從波形圖可以看出在 clk的控制下當(dāng) start為低電平 reset為高電平的時候時間計數(shù),當(dāng)時間大于二分鐘的時候, time_enable為輸出高電平。 output select_clk。 ( 2)時間計費的仿真結(jié)果如下所示: 從波形圖可以看出當(dāng) start為低電平的 時候輸出的信號是 time_enable。 input select_clk,reset, clk0)。//起步為六元 end else if(select_clk==1’ d1) begin if(money [3:0]==439。d9)// 費用的高四位是不是計到了 9 money [7:4]=439。// 費用的高四位沒有計到 9加 1 end else money [3:0]= money [3:0]+139。 input clk1。//輸入的秒 input[7:0] m。 // 數(shù)碼管的選擇。 reg [3:0] disp_dat。 always(posedge clk1) begin a=a+139。//公里的高四位用第一個數(shù)碼管顯示。 439。d3: disp_dat=m[3:0]。 439。d6: disp_dat=fee[7:4]。 //費用的低四位用第八個數(shù)碼管顯示。d0:r_dig=839。b10111111。 // 選擇第三個數(shù)碼管 439。d4:r_dig=839。b11111011。 // 選擇第七個數(shù)碼管 439。b11111111。// 顯示 0