名称:停车场计数器传感器检测verilog代码basys3开发板验证(代码在文末下载)
软件:VIVADO
语言:Verilog
代码功能:
停车场计数器设计
1、停车场有一个入口一次出口,每个口有一个传感器检测车辆进出。
2、两个传感器都未被遮挡时,传感器ab值为00。
3、传感器a被遮挡,传感器值ab为10。
4、传感器b被遮挡,传感器值ab为01。
5、传感器ab被遮挡,传感器值ab为11。
使用代码设计停车场计数器,用按键代替传感器,在开发板验证停车场计数器功能。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys3开发板验证,开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
停车场计数器仿真
要求:
1.程序文件
2.程序运行
3.程序仿真
程序接口
管脚约束
仿真
Testbench
整体仿真图
a表示车进入信号,enter为一个clk的进入信号,inc为计数增加信号,car_num为车辆数量
同时有车进出,enter和exit同时为高,
Inc和dec信号不为1,总数不增不减
b为汽车驶出信号,exit为一个clk的驶出信号,dec为1,总数减少1
为便于数码管显示,需要将car_num变为3个数码管信号,分别为百位,十位,个位
如下图hun,ten,one信号
数码管位选和段选信号
部分代码展示:
module?park_station( ????input?clk,//输入时钟 ????input?a_key,//入口 ????input?b_key,//出口 ???? ????output?reg?[3:0]?weixuan,//数码管位选 ????output?reg?[7:0]?duanxuan//数码管段选 ????); wire?a;//消抖后信号 wire?b;//消抖后信号 //消抖模块 key_debounce?a_key_debounce( .?clk(clk), .?button_in(a_key),//输入 .?button_jitter(a)//消抖后按键 ); //消抖模块 key_debounce?b_key_debounce( .?clk(clk), .?button_in(b_key),//输入 .?button_jitter(b)//消抖后按键 ); parameter?idle_in?=?3'd0;//空闲状态 parameter?idle_out?=?3'd5;//空闲状态 parameter?car_in?=?3'd1;//有车进入状态 parameter?car_in_wait?=?3'd2;//有车进入维持状态 parameter?car_out?=?3'd3;//有车离开状态 parameter?car_out_wait?=?3'd4;//有车离开维持状态 //parameter?car_inout?=?3'd5;//同时有车进入离开状态 reg?[2:0]?state_a='d0; reg?[2:0]?state_b='d0; //两段式状态机第一段,状态转换 always@(posedge?clk) begin ??case(state_a) ????idle_in:if(a==1) ????????????????state_a<=car_in;//有车进入 ????????????else ????????????????state_a<=idle_in;//无车保持空闲状态 ?????car_in:????state_a<=car_in_wait;//有车进入维持状态 ?????car_in_wait:if(a==1) ?????????????????????state_a<=car_in_wait;//有车进入维持状态 ?????????????????else ?????????????????????state_a<=idle_in;//车完全驶入??? ?????default:state_a<=idle_in;??? ?????endcase ????? ??case(state_b) ???????idle_out:if(b==1) ???????????????????state_b<=car_out;//有车离开 ???????????????else ???????????????????state_b<=idle_out;//无车保持空闲状态 ????????car_out:????state_b<=car_out_wait;//有车离开维持状态 ????????car_out_wait:if(b==1) ????????????????????????state_b<=car_out_wait;//有车离开维持状态 ????????????????????else ????????????????????????state_b<=idle_out;//车完全离开??? ????????default:state_b<=idle_out;??? ????????endcase end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=292
816