• 方案介紹
  • 附件下載
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

EDA程序設計-出租車計費器

2024/08/27
1298
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

有需要資料的可了解一下.docx

共1個文件

1? 系統設計

1.1 設計要求

1.1.1 設計任務

設計并制作一臺出租車計費器。

1.1.2 性能指標要求

① 用EDA實訓儀的I/O設備和FPGA實現出租車計費器的設計。

② 出租車起步開始計程和計費,計程系統按實際公里數計程,計費系統首先顯示起步價(如7.0),車行駛2km以內,只收起步價7元。

③ 出租車行駛超過2km后,按每公里1.6元在7.0元的基礎上增加。

④ 出租車行駛超過10km后(或超過20元路費),每公里加收50%的車費,即車費變?yōu)槊抗?.4元。

⑤ 出租車達到目的地后,(用一個按鈕)計程和計費數據清零,為下一次計費開始。

1.2 設計思路及設計框圖

1.2.1設計思路

計程和計費都是十進制位的輸入,通過脈沖實現計數。計程通過分頻器的輸出作為輸入,產生的秒脈沖以實現計數功能。計費在LED數碼管上分為個位十位(例如起步價為7元,顯示器上顯示70,三公里時為86......),計程器和計費器在一個程序內完成,分頻器用另一個程序完成,并將程序都生成一個元器件,用圖形法級聯在一起。上硬件仿真后,打開開關輸入脈沖,通過上升沿觸發(fā)使路程計算加一,并使總路計算模塊加一,到達相應的公里數后沒每公里收費也隨之改變。

1.2.2總體設計框圖

2.1 總體電路圖

2.2 分頻器模塊

module? fpq_(clk,KS,clk_1s);

input? clk,KS;

output? reg? clk_1s;

reg[26:0]? qs;

always??? @(posedge?? clk)

if(KS==1)

begin

if(qs==49999999)????? qs=0;

else?? qs=qs+1;

if(qs==24999999)?? clk_1s=0;

else? clk_1s=1;

end

endmodule

分頻器

2.3計程計費器模塊

module CZCJFQ(clk,clrn,clk2,L1,L2,L3,L4,L5,L6);

input? clk,clrn,clk2;

output L1,L2,L3,L4,L5,L6;

wire[15:0] Q;

reg[7:0]? km;

reg[11:0]? ZJ;

reg? clk1;

reg [6:0] L1,L2,L3,L4,L5,L6;

initial??? clk1=1;

always? @(posedge?? clk^clk2?? or? negedge?? clrn)

begin

if(~clrn)?? km[3:0]=0;

else?? begin

if(km[3:0]==9)?? km[3:0]=0;

else? km[3:0]=km[3:0]+1;

if(km[3:0]==9)? clk1=0;

else?? clk1=1;

end

end

always? @(posedge? clk1 or? negedge? clrn)

begin

if(~clrn)???? km[7:4]=0;

else? begin

if( km[7:4]==9)?? km[7:4]=0;

else? km[7:4]= km[7:4]+1;

end

end

initial?? ZJ[11:0]=70;

always?? @(posedge? clk^clk2? or? negedge?? clrn)

begin

if(~clrn) ZJ[11:0]=70;

else?? begin

if(ZJ[11:0]>9999)?? ZJ[11:0]=70;

else? if(km[7:0]>'h9)?? ZJ[11:0]=ZJ[11:0]+24;

else? if(km[7:0]>'h1)?? ZJ[11:0]=ZJ[11:0]+16;

else? ZJ[11:0]=ZJ[11:0];

end

end

assign{Q[3:0]}={ZJ[11:0]}%10;

assign{Q[7:4]}={ZJ[11:0]}/10%10;

assign{Q[11:8]}={ZJ[11:0]}/100%10;

assign{Q[15:12]}={ZJ[11:0]}/1000;

路程計費器模塊

2.4 組合邏輯模塊(部分)

always@ (Q[0],Q[1],Q[2],Q[3])

begin

case ({Q[3],Q[2],Q[1],Q[0]})

4'B0000:L1=7'B1000000;

4'B0001:L1=7'B1111001;

4'B0010:L1=7'B0100100;

4'B0011:L1=7'B0110000;

4'B0100:L1=7'B0011001;

4'B0101:L1=7'B0010010;

4'B0110:L1=7'B0000010;

4'B0111:L1=7'B1111000;

4'B1000:L1=7'B0000000;

4'B1001:L1=7'B0010000;

4'B1010:L1=7'B0001000;

4'B1011:L1=7'B0000011;

4'B1100:L1=7'B1000110;

4'B1101:L1=7'B0100001;

4'B1110:L1=7'B0000110;

4'B1111:L1=7'B0001110;

endcase

end

always@ (Q[4],Q[5],Q[6],Q[7])

begin

case ({Q[7],Q[6],Q[5],Q[4]})

4'B0000:L2=7'B1000000;

4'B0001:L2=7'B1111001;

4'B0010:L2=7'B0100100;

4'B0011:L2=7'B0110000;

4'B0100:L2=7'B0011001;

4'B0101:L2=7'B0010010;

4'B0110:L2=7'B0000010;

4'B0111:L2=7'B1111000;

4'B1000:L2=7'B0000000;

4'B1001:L2=7'B0010000;

4'B1010:L2=7'B0001000;

4'B1011:L2=7'B0000011;

4'B1100:L2=7'B1000110;

4'B1101:L2=7'B0100001;

4'B1110:L2=7'B0000110;

4'B1111:L2=7'B0001110;

endcase

end

.......

3? 調試過程

在編程代碼和編譯過程經常出現問題,尤其是always@(*)語句上經常出錯,以及在下載到硬件仿真的時候LED數碼管沒有反應,在向老師求助答疑后加入了些組合邏輯模塊,修改過后的程序能正常編譯,之后將程序下載到硬件中,打開開關檢查路程計算能正常運行,路程計費計算功能正常,可以達到驗收標準。

4? 功能測試

4.1 測試儀器與設備

計算機一臺

EDA實訓儀

4.2 性能指標測試

打開開關后輸入脈沖可產生路程計算,隨著路程的遞增費用也按要求遞增,按下按鍵后數據可清零,也可以通過按下按鍵自行增加路程。

仿真波形圖(部分模塊)

需要全部資料可在我的資源里下載,包括程序文檔、源程序。

需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網盤下載地址及提取碼。

紛傳?點擊用微信打開即可,過程有點繁瑣請見諒

  • 有需要資料的可了解一下.docx
    下載

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
TLP187 1 Toshiba America Electronic Components Optocoupler - Transistor Output, DARLINGTON OUTPUT OPTOCOUPLER
$0.82 查看
H11G2SR2M 1 Fairchild Semiconductor Corporation Darlington Output Optocoupler, 1-Element, 7500V Isolation, SURFACE MOUNT PACKAGE-6
$1.29 查看
NC7S14P5X 1 Fairchild Semiconductor Corporation Inverter, HC Series, 1-Func, 1-Input, CMOS, PDSO5, 1.25 MM, EIAJ, SC-88A, SC-70, 5 PIN
$0.29 查看

相關推薦