出租车计价器设计Verilog代码Quartus SOPCEDA实验箱

名称:出租车计价器设计Verilog代码Quartus  SOPCEDA实验箱(文末获取)

软件:Quartus

语言:Verilog

代码功能:

功能描述

1、 起步价为13元,起步公里为3公里。

2、 超过3公里,每公里按2元收费。

3、 要求用数码管显示里程、等候时间和计费;用按钮实现启动、等候、结束等功能。

4、 单程行驶里程超过15公里,每公里租价加收50%

5、 等候时间累积5分钟,加收1元。

6、 自定义其它功能

预计模块划分:

1、 公里脉冲模块,用于产生1公里脉冲信号,用于公里计费。使用计数器实现信号的产生。

2、 控制模块,使用状态机控制实现出租车计费器的主要功能,包括起步价、安公里计费。时间计费等。

3、 数码管显示模块,用数码管显示里程、等候时间和计费,将控制模块输出的里程、等候时间和费用通过译码器显示为数码管上的数字。

本代码已在SOPCEDA实验箱验证,SOPCEDA实验箱如下,其他开发板可以修改管脚适配:

SOPCEDA实验箱.jpg

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. 仿真图

顶层模块

公里及时间产生模块

控制模块

显示模块

部分代码展示:

//顶层模块
module taxi_fee_220721_14(
input clk,//标准时钟,1024hz 
input reset,//复位信号,低有效 
input stop_in,//本次行程结束,停止计费,高有效
input start_in,//启动信号,行程开始,高有效 
input [1:0] Speed,//00:暂停等待;01:低速;10:中;11:高速
output [7:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选
);
//信号定义
wire one_kilometre;//1公里产生一次脉冲
wire time_wait_en;//暂停等待,5min产生一次脉冲
wire [15:0] totel_money;
wire [7:0] mileage;
wire [7:0] wait_time;//时间
wire clk_1KHz;
//分频模块,分频到1000Hz
fenping i_fenping(
. clk_in(clk),
. clk_1000Hz(clk_1KHz)
);
//模块例化
speed_pulse_220721_14 U_speed_pulse(
. clk(clk_1KHz),//标准时钟
. reset(reset),//复位信号,低有效 
. Speed(Speed),//00:暂停等待;01:低速;10:中;,11:高速
. wait_time(wait_time),
. one_kilometre(one_kilometre),//1公里产生一次脉冲
. time_wait_en(time_wait_en)//暂停等待,20s产生一次脉冲
);
//模块例化
taxi_state_220721_14 U_taxi_state(
. clk(clk_1KHz),//标准时钟
. reset(reset),//复位信号,低有效 
. stop_in(stop_in),//本次行程结束,停止计费,高有效
. start_in(start_in),//启动信号,行程开始,高有效 
. Speed(Speed),//00:暂停等待;01:低速;10:中;,11:高速
. one_kilometre(one_kilometre),//1公里产生一次脉冲
. time_wait_en(time_wait_en),//暂停等待,20s产生一次脉冲
. mileage_out(mileage),
. totel_money_out(totel_money)//合计费用
);
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值