学校FPGA设计结课课设
主要做了出租车计价表,一个比较旧的课题,代码如下:
1.基本代码
分模块编程,按照价目表写代码,具体注释见代码。
module taxi_cost(
input clk,
input rst,
input key_start,
input key_clear,
output reg[3:0] en_seg,
output reg[7:0] sseg
);
reg[0:0] start_flag; //是否开始计费 1为开始计费,0停止计费
reg[1:0] cost_stage; //费用阶段,0 - 2km以内,5元;
// 2 - 10km,每千米2元
// 10km以外,每千米3元
reg[9:0] distance; //行驶的总距离,用于判断在哪个费用阶段
reg[9:0] cost; //计算总费用
reg[6:0] counter; //计算次数
/*
状态初始化,起步价为5元
*/
initial begin
start_flag = 0; //开始标志位清0
cost_stage = 0; //初始化为第一阶段 0-2km以内费用5元
cost = 9'd5; //初始费用5元
distance = 0; //初始距离为0km
counter = 0;
end
always @(key_start) //判断开始计费按键是否按下
if(key_start)
start_flag = 1;
else
start_flag = 0;
always @(key_clear)begin //如果清0按键按下,回到初始状态
cost_stage = 0;
cost = 9'd5;
distance = 0;
counter = 0;
start_flag = 0;
end
/*
路程计算
假设出租车的车速为36km/h,即10m/s
使用的输入时钟为100MHz,则每一周期为1ns,需要计算1_000_000_000才为