您的位置: 首页 - 站长

phpcms 关闭网站线上推广话术

当前位置: 首页 > news >正文

phpcms 关闭网站,线上推广话术,优化一个网站,企业网站开发用什么好基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 #xff08;1#xff09;#xff1b;里程计费功能#xff1a;3公里以内起步价8元#xff0c;超过3公里后每公里2元#xff0c;其中… 基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 1里程计费功能3公里以内起步价8元超过3公里后每公里2元其中不满一公里按照一公里计算。 2等待计费功能当乘客中途下车需要司机等待时按照等待时间进行收费每3分钟0.7元其中不满3分钟不收费。 3数码管显示功能3种显示状态默认显示公里数显示格式10.2,每次步进0.1km步进时间长度为5S。第二种显示等待时间显示格式5033步进时间长度1S。第三种显示当前费用包括等待费用以及里程计价费用。 4信号灯指示功能当里程计费模式下LED2亮起其他LED熄灭。当等待时间计费模式下LED4亮起其他LED熄灭。载人状态下LED1亮起否则不亮。 5按键切换功能3个按键起作用第一个按键负责切换计费模式默认是里程计费模式切换后为等待时间计费模式。第二个按键负责表示出租车载人状态默认空载按下表示载人模式。第三个按键负责切换数码管显示的数据每按一次切换一次3种数据循环显示。 一、系统框图 二、verilog代码 里程增加模块 module count_km(input key_dri,input sys_reset_n,input en_dowm_car,input EN,output reg [3:0] data_km_ge,output reg [3:0] data_km_shi,output reg [3:0] data_km_bai,// output reg [15:0] data_km,output [3:0] point );parameter max_km16d9999; reg flag_km_shi_up; reg flag_km_bai_up;assign point4b0010;always (posedge key_dri or negedge sys_reset_n)beginif(!sys_reset_n)begindata_km_ge4h0;flag_km_shi_up1b0;endelse if(!EN)begindata_km_gedata_km_ge;flag_km_shi_upflag_km_shi_up;endelse if(key_dri en_dowm_car)beginif(data_km_ge4h9)begindata_km_gedata_km_ge1b1;flag_km_shi_up1b0;endelsebegindata_km_ge4h0;flag_km_shi_up1b1;endendendalways (posedge key_dri or negedge sys_reset_n)beginif(!sys_reset_n)begindata_km_shi4h0;flag_km_bai_up1b0;endelse if(!EN)begindata_km_shidata_km_shi;flag_km_bai_upflag_km_bai_up;endelse if(key_dri en_dowm_car flag_km_shi_up)beginif(data_km_shi4h9)begindata_km_shidata_km_shi1b1;flag_km_bai_up1b0;endelsebegindata_km_shi4h0;flag_km_bai_up1b1;endendelse if(key_dri en_dowm_car flag_km_shi_up1b0)beginflag_km_bai_up1b0;endendalways (posedge key_dri or negedge sys_reset_n)beginif(!sys_reset_n)begindata_km_bai4h0;endelse if(!EN)begindata_km_baidata_km_bai;endelse if(key_dri en_dowm_car flag_km_bai_up)beginif(data_km_bai4h9)begindata_km_baidata_km_bai1b1;endelsebegindata_km_bai4h0;endendendendmodule 时间增加模块 //计时模块 module count_1s (input clk, //系统时钟input sys_reset_n, //复位信号input EN, //使能 保持input en_dowm_car,// output reg [7:0] data_s, //秒计时器 // output reg [7:0] data_m, //分钟计时器output reg [3:0] data_s_shi,output reg [3:0] data_s_ge,output reg [3:0] data_m_shi,output reg [3:0] data_m_ge,output reg [3:0] time_price_ge,output reg [3:0] time_price_shi,output reg [3:0] time_price_bai,output reg clk_1s, //1s脉冲output [3:0] point //点 );parameter time_608d60; parameter MAX_NUM28d249;reg [27:0] cnt; //1s计数器reg flag_1m; //1m计时reg flag_m_shi_up; reg flag_s_up; reg flag_m_up; reg time_shi_up; reg time_bai_up;assign point4b0100; //1s计时 always (posedge clk or negedge sys_reset_n)beginif(!sys_reset_n)begincnt1b0;clk_1s1b0;endelse if(!EN)begincntcnt; //保持clk_1sclk_1s;endelse if(cntMAX_NUM)begincntcnt1b1;endelsebegincnt0;clk_1s~clk_1s; //翻转endendalways (negedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begintime_price_ge4h0;endelse if(en_dowm_car)beginif(flag_s_up time_price_ge4h9)begintime_price_getime_price_ge1;endelse if(flag_s_up time_price_ge4h9)begintime_price_ge0;endendend always (negedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begintime_price_shi4h0;endelse if(en_dowm_car)beginif(time_price_ge4h9 time_price_shi4h9 flag_s_up )begintime_price_shitime_price_shi1;endelse if(time_price_ge4h9 time_price_shi4h9 flag_s_up)begintime_price_shi0;endendendalways (negedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begintime_price_bai4h0;endelse if(en_dowm_car)beginif(time_price_shi4h9 time_price_bai4h9 flag_s_up time_price_ge4h9)begintime_price_baitime_price_bai1;endelse if(time_price_shi4h9 time_price_bai4h9 flag_s_uptime_price_ge4h9)begintime_price_bai0;endendend// 秒个位加1 always (negedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begindata_s_ge4h0;flag_s_up0;endelse if(!EN)begindata_s_gedata_s_ge; //保持flag_s_upflag_s_up;endelse if(en_dowm_car)beginif(data_s_ge 4h9 )begindata_s_gedata_s_ge1b1; flag_s_up1b0; endelse if(data_s_ge 4h9)begindata_s_ge4h0; flag_s_up1b1; endendelse begindata_s_gedata_s_ge; //保持flag_s_upflag_s_up;endend // 秒十位加1 always (negedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begindata_s_shi4h0;flag_m_up0;endelse if(!EN)begindata_s_shidata_s_shi; //保持flag_m_upflag_m_up;endelse if(data_s_shi 4h5 data_s_ge4h9)begindata_s_shidata_s_shi1b1; flag_m_up1b0; endelse if(data_s_shi 4h5 data_s_ge4h9)begindata_s_shi4h0; flag_m_up1b1; endelse begindata_s_shidata_s_shi; flag_m_up1b0; endend//分钟个位加一 always (posedge clk_1s or negedge sys_reset_n) beginif(!sys_reset_n)begindata_m_ge4h0;flag_m_shi_up1b0;endelse if(!EN)begindata_m_gedata_m_ge; //保持flag_m_shi_upflag_m_shi_up;endelse if(en_dowm_car) beginif(data_m_ge4h9 data_s_shi4h5 data_s_ge4h9)begindata_m_gedata_m_ge1b1;flag_m_shi_up1b0;endelse if(data_m_ge4h9 data_s_shi4h5 data_s_ge4h9)begindata_m_ge4h0;flag_m_shi_up1b1;endelse begindata_m_gedata_m_ge; //保持flag_m_shi_up1b0;endendelse begindata_m_gedata_m_ge; //保持flag_m_shi_up1b0;endend//分钟十位加一 always (posedge flag_m_shi_up or negedge sys_reset_n) beginif(!sys_reset_n)begindata_m_shi4h0;endelse if(!EN)begindata_m_shidata_m_shi; //保持endelse if(en_dowm_car) beginif(data_m_shi4h5 )begindata_m_shidata_m_shi1b1;endelse if(data_m_shi4h5)begindata_m_shi4h0;endendelse begindata_m_gedata_m_ge; //保持endendendmodule 计算价格模块 module count_money(input [7:0] data_m,input [15:0] data_km,input sys_reset_n,input clk,input add_km,input en_dowm_car,input clk_1s,input [3:0] data_km_ge,input [3:0] data_km_shi,input [3:0] data_km_bai,input [3:0] time_price_ge,input [3:0] time_price_shi,input [3:0] time_price_bai,output reg [3:0] price_ge,output reg [3:0] price_shi,output reg [3:0] price_bai, // output reg [15:0] data_price,output [3:0] point );assign point4b0010;reg [15:0] price_km; reg [15:0] price_time;reg price_shi_up; reg price_bai_up; initialbeginprice_km16d30;price_time16d0;end//里程计价 always (posedge add_km or negedge sys_reset_n)beginif(!sys_reset_n)beginprice_ge4h0;price_shi_up1b0;endelse if(en_dowm_car )beginif(data_km_bai4h0)beginif(price_ge4h9 data_km_shi4h3 )begin//大于3.0公里开始增加price_geprice_ge1;price_shi_up1b0;endelse if(price_ge4h9 data_km_shi4h3 )begin//大于3.0公里开始增加 到9累加price_ge4h0;price_shi_up1b1;endelse if(price_ge4h9 data_km_shi4h3)beginprice_geprice_ge;price_shi_up1b0;endendelse if(data_km_bai!4h0)beginif(price_ge4h9 )begin//大于3.0公里开始增加price_geprice_ge1;price_shi_up1b0;endelse if(price_ge4h9)begin//大于3.0公里开始增加 到9累加price_ge4h0;price_shi_up1b1;endendendendalways (posedge add_km or negedge sys_reset_n)beginif(!sys_reset_n)beginprice_shi4h8;price_bai_up1b0;endelse if(price_shi4h9 price_shi_up)beginprice_shiprice_shi1;price_bai_up1b0;endelse if(price_shi4h9 price_shi_up)beginprice_shi4h0;price_bai_up1b1;endelse if(price_shi_up1b0)beginprice_bai_up1b0;endendalways (posedge add_km or negedge sys_reset_n)beginif(!sys_reset_n)beginprice_bai4h0;endelse if(price_bai4h9 price_bai_up)beginprice_baiprice_bai1;endelse if(price_bai4h9 price_bai_up)beginprice_bai4h0;endendendmodule 模块分析 通过分频得到5S周期的脉冲信号当EN信号为高电平时也就是有乘客上车后司机按下按键出租车变为载客状态这时里程开始根据脉冲信号的上升沿进行增加。 通过按键切换到等待时间计费模式后EN变为高电平模块开始工作。将时钟分频模块得到的1S脉冲信号作为触发源进行判断分和秒各8位可以看到在脉冲上升沿时间不断累加符合预期功能。 上板视频演示 基于FPGA的出租车里程时间计费器 总结 模块太多只展示了比较重要的其他一些模块就是产生分频信号的无关紧要。需要的一键三连