出租车计费器 一 实验任务及要求
1. 能实现计费功能,计费标准为:按行驶里程收费,起步费为10.00元,
并在车行3公里后再按2元/公里,当计费器计费达到或超过一定收费(如20元)时,
每公里加收50%的车费,车停止不计费。
2. 实现预置功能:能预置起步费、每公里收费、车行加费里程。
3. 实现模拟功能:能模拟汽车启动、停止、暂停、车速等状态。
4. 设计动态扫描电路:将车费显示出来,有两位小数。
5. 用Verilog语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。
6. 各计数器的计数状态用功能仿真的方法验证,并通过有关波形确认电路设计是否正确。
7. 完成电路全部设计后,通过系统实验箱下载验证设计的正确性。 计费器按里程收费,每100米开始一次计费。
code: 代码文档
doc:设计文档
img:图片
prj:工程文档
tb:仿真文档
pro_log:工程文档备份
源码:
- module Taxi_prj(
- clk,
- rst_n,
- en,
- //delay,
- Mail_out,
- Cost_out
- );
- input clk,rst_n;
- input en;
-
- reg flag;
- reg[9:0] delay;
- output [9:0]Mail_out;
- output [9:0]Cost_out;
-
- reg [9:0] mail_cnt;
- reg [9:0] cost_cnt;
-
- always @(posedge clk or negedge rst_n)
- begin
- if(!rst_n)
- mail_cnt <= 9'd30;
- else if(cost_cnt !=9'd10 && en ==1 && flag ==0)
- mail_cnt <= mail_cnt + 1'b1;//100m
- else if(flag == 1)
- mail_cnt <= 9'd30;
- end
-
- always @(posedge clk or negedge rst_n)
- begin
- if(!rst_n)
- cost_cnt <= 9'd10;
- else if(flag==0 && en)begin
- if(cost_cnt <= 9'd19)//8km
- cost_cnt <= cost_cnt + 9'd2;//2yuan
- else if(cost_cnt >= 9'd20)
- begin
- cost_cnt <= cost_cnt + 9'd3;//2yuan
- end
- end
- else if(flag == 1)
- cost_cnt <= 9'd10;
- //mail_cnt <= 9'd30;
- end
-
- always @(posedge clk or negedge rst_n)
- begin
- if(!rst_n) begin
- delay <= 9'd0;
- flag <= 0;
- end
- else if(en == 0) begin //停车开始计数
- delay <= delay + 9'd1;
- if(delay == 9'd49)begin
- flag <= 1;
- end
- else
- flag <= 0;
- end
-
- end
-
- // always @(posedge clk or negedge rst_n)
- // if(!rst_n)begin
- // if(delay == 9'd49)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
全部资料51hei下载地址:
taxi.rar
(3.22 MB, 下载次数: 91)
|