• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

出租车计费器设计Verilog代码Quartus 正点原子新起点开发板

08/22 14:19
423
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2409101GQK17.doc

共1个文件

名称:出租车计费器设计Verilog代码Quartus? 正点原子新起点开发板

软件:Quartus

语言:Verilog

代码功能:

出租车计费器

1、起步费为10元,3公里

2、车行驶 3公里后按每公里 2元计费

3、若总公里数超过20公里,需加收10元空载返程费

4、停车每5分钟3元计费

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在正点原子新起点开发板验证,正点原子新起点开发板如下,其他开发板可以修改管脚适配:

正点原子新起点开发板.png

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

部分代码展示:

module?taxi_state(
input?clk,//标准时钟,50MHz
input?reset,//复位信号
input?stop,//中途暂停
input?start,//启动信号,行程开始,高有效?
input?one_kilometre,//1公里产生一次脉冲
output?[7:0]?minute,//等待时间
output?[7:0]?mileage_out,//里程
output?reg?[15:0]?totel_money_out//合计费用
);
parameter?s_idle=3'd0;
parameter?s_starting_price=3'd1;
parameter?s_mileage_price=3'd2;
parameter?s_highmileage_price=3'd3;
parameter?s_stop_1=3'd4;
parameter?s_stop_2=3'd5;
parameter?s_stop_3=3'd6;
reg?[2:0]?state=3'd0;
reg?[15:0]?totel_money=16'd0;
reg?[7:0]?mileage=8'd0;//里程
assign?mileage_out=mileage;
always@(posedge?clk?or?posedge?reset)
if(reset==1)
mileage<=8'd0;
else
if(state==s_starting_price?||?state==s_mileage_price?||?state==s_highmileage_price)
if(one_kilometre==1)
mileage<=mileage+8'd1;//一公里里程加1
else
mileage<=mileage;
reg?minute_en=0;
reg?[31:0]?count_min=32'd0;
always@(posedge?clk?or?posedge?reset)
if(reset==1)begin
count_min<=0;
minute_en<=0;
end
else
if(state==s_stop_1?||?state==s_stop_2?||?state==s_stop_3)
if(count_min>=32'd3000000000)begin//1分钟=50000000*60
count_min<=0;
minute_en<=1;
end
else?begin
count_min<=count_min+1;
minute_en<=0;
end
reg?[7:0]?wait_minute=8'd0;//等待分钟数
assign?minute=wait_minute;
reg?five_minutes_en=0;//5分钟计时信号
always@(posedge?clk?or?posedge?reset)
if(reset==1)
wait_minute<=8'd0;
else
if(minute_en)
wait_minute<=wait_minute+8'd1;//等待分钟数
else
wait_minute<=wait_minute;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1057

  • 2-2409101GQK17.doc
    下载

相关推荐