名稱:出租車計(jì)價(jià)設(shè)計(jì)Verilog代碼vivado? ego1開發(fā)板
軟件:vivado
語言:Verilog
代碼功能:
設(shè)計(jì)任務(wù)與要求:
乘客乘坐出租車時(shí),其費(fèi)用分成起步價(jià)、行車?yán)锍藤M(fèi)和等候時(shí)間費(fèi)三部分,由自動(dòng)計(jì)費(fèi)器自動(dòng)記錄。在汽車行進(jìn)時(shí)向自動(dòng)計(jì)費(fèi)器發(fā)送脈沖信號(hào),在一定的公里數(shù)(即一定的脈沖數(shù))內(nèi),按起步價(jià)計(jì)費(fèi)超過這一里程后,自動(dòng)計(jì)費(fèi)器按里程計(jì)費(fèi);如果停車等候,按等候時(shí)間的多少計(jì)費(fèi)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開發(fā)板驗(yàn)證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 功能設(shè)計(jì)
要求:
設(shè)計(jì):
車速脈沖,10個(gè)脈沖1公里,起步價(jià)5元,3公里內(nèi)起步價(jià),大于3公里按里程計(jì)價(jià),2.1元每公里,停車計(jì)費(fèi)按0.6元每十分鐘計(jì)費(fèi)。
2. 工程文件
3. 程序文件
4. 程序運(yùn)行
5. 程序RTL圖
6. 管腳約束
7. Testbench
8. 仿真圖
整體仿真
wheel_second_pluse模塊
speed_pulse模塊
taxi_state模塊
Display模塊
部分代碼展示:
module?taxi_fee( input?clk,//標(biāo)準(zhǔn)時(shí)鐘,100M input?reset,//復(fù)位信號(hào),低有效? input?stop,//本次行程結(jié)束,停止計(jì)費(fèi),高有效--按鍵 input?start,//啟動(dòng)信號(hào),行程開始,高有效?--按鍵 input?Speed,//0:等待??1:行駛--開關(guān) output?led_wheel,//車輪脈沖指示燈 output???[7:0]?dig_led_1, output???[3:0]?wei_led_1, output???[7:0]?dig_led_2, output???[3:0]?wei_led_2//高電平點(diǎn)亮,高電平選通 ); wire?[2:0]state_out; wire?wheel_pulse; wire?second_pulse; //車輪脈沖產(chǎn)生及秒脈沖產(chǎn)生模塊 wheel_second_pluse?U_wheel_second_pluse( .?clk(clk),//標(biāo)準(zhǔn)時(shí)鐘,100MHz .?reset(reset),//復(fù)位信號(hào),低有效? .?Speed(Speed),//0:等待??1:行駛 .?led_wheel(led_wheel), .?wheel_pulse(wheel_pulse),?//?車輪脈沖,10個(gè)1公里 .?second_pulse(second_pulse)?//秒脈沖 ); //模塊例化 wire?one_kilometre;//1公里產(chǎn)生一次 wire?ten_minute;//暫停等待,10分鐘產(chǎn)生一次 wire?[15:0]?totel_money; wire?[7:0]?mileage; wire?[7:0]?second; //信號(hào)定義 speed_pulse?U_speed_pulse( .?clk(clk),//標(biāo)準(zhǔn)時(shí)鐘,100M? .?reset(reset),//復(fù)位信號(hào),低有效? .?wheel_pulse(wheel_pulse),?//?車輪脈沖,10個(gè)1公里 .?second_pulse(second_pulse),?//秒脈沖 .?one_kilometre(one_kilometre),//1公里產(chǎn)生一次 .?state(state_out), .?second_out(second), .?ten_minute(ten_minute)//10分鐘產(chǎn)生一次 ); taxi_state?U_taxi_state( .?clk(clk),//標(biāo)準(zhǔn)時(shí)鐘,100M? .?reset(reset),//復(fù)位信號(hào),低有效? .?stop(stop),//本次行程結(jié)束,停止計(jì)費(fèi),高有效 .?start(start),//啟動(dòng)信號(hào),行程開始,高有效? .?Speed(Speed),//0:等待??1:行駛 .?one_kilometre(one_kilometre),//1公里產(chǎn)生一次 .?ten_minute(ten_minute),//10分鐘產(chǎn)生一次 .?state_out(state_out), .?mileage_out(mileage), .?totel_money_out(totel_money)//合計(jì)費(fèi)用 ); display?U_display( .?clk(clk),//標(biāo)準(zhǔn)時(shí)鐘,100M? .?reset(reset),//復(fù)位信號(hào),低有效? .?totel_money(totel_money),//費(fèi)用 .?mileage(mileage),//里程 .?second(second), .?dig_led_1(dig_led_1), .?wei_led_1(wei_led_1), ??? .?dig_led_2(dig_led_2), .?wei_led_2(wei_led_2)//高電平點(diǎn)亮,高電平選通 ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=453