名稱(chēng):出租車(chē)計(jì)費(fèi)器Verilog代碼vivado? ego1開(kāi)發(fā)板
軟件:vivado
語(yǔ)言:Verilog
代碼功能:
出租車(chē)計(jì)費(fèi)器
1、起步價(jià)5元,3公里內(nèi)起步價(jià);
2、3公里后每公里2.1元;
3、停車(chē)等待時(shí),0.6元每十分鐘;
4、計(jì)費(fèi)方式可以通過(guò)代碼參數(shù)快捷修改。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開(kāi)發(fā)板驗(yàn)證,ego1開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 計(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),行程開(kāi)始,高有效?--按鍵 input?Speed,//0:等待??1:行駛--開(kāi)關(guān) output?led_wheel,//車(chē)輪脈沖指示燈 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?wheel_pulse; wire?second_pulse; //車(chē)輪脈沖產(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),?//?車(chē)輪脈沖,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),?//?車(chē)輪脈沖,10個(gè)1公里 .?second_pulse(second_pulse),?//秒脈沖 .?one_kilometre(one_kilometre),//1公里產(chǎn)生一次 .?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),行程開(kāi)始,高有效? .?Speed(Speed),//0:等待??1:行駛 .?one_kilometre(one_kilometre),//1公里產(chǎn)生一次 .?ten_minute(ten_minute),//10分鐘產(chǎn)生一次 .?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=454