名稱:停車場計數器傳感器檢測verilog代碼basys3開發(fā)板驗證(代碼在文末下載)
軟件:VIVADO
語言:Verilog
代碼功能:
停車場計數器設計
1、停車場有一個入口一次出口,每個口有一個傳感器檢測車輛進出。
2、兩個傳感器都未被遮擋時,傳感器ab值為00。
3、傳感器a被遮擋,傳感器值ab為10。
4、傳感器b被遮擋,傳感器值ab為01。
5、傳感器ab被遮擋,傳感器值ab為11。
使用代碼設計停車場計數器,用按鍵代替?zhèn)鞲衅?,在開發(fā)板驗證停車場計數器功能。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Basys3開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
停車場計數器仿真
要求:
1.程序文件
2.程序運行
3.程序仿真
程序接口
管腳約束
仿真
Testbench
整體仿真圖
a表示車進入信號,enter為一個clk的進入信號,inc為計數增加信號,car_num為車輛數量
同時有車進出,enter和exit同時為高,
Inc和dec信號不為1,總數不增不減
b為汽車駛出信號,exit為一個clk的駛出信號,dec為1,總數減少1
為便于數碼管顯示,需要將car_num變?yōu)?個數碼管信號,分別為百位,十位,個位
如下圖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;//空閑狀態(tài) parameter?idle_out?=?3'd5;//空閑狀態(tài) parameter?car_in?=?3'd1;//有車進入狀態(tài) parameter?car_in_wait?=?3'd2;//有車進入維持狀態(tài) parameter?car_out?=?3'd3;//有車離開狀態(tài) parameter?car_out_wait?=?3'd4;//有車離開維持狀態(tài) //parameter?car_inout?=?3'd5;//同時有車進入離開狀態(tài) reg?[2:0]?state_a='d0; reg?[2:0]?state_b='d0; //兩段式狀態(tài)機第一段,狀態(tài)轉換 always@(posedge?clk) begin ??case(state_a) ????idle_in:if(a==1) ????????????????state_a<=car_in;//有車進入 ????????????else ????????????????state_a<=idle_in;//無車保持空閑狀態(tài) ?????car_in:????state_a<=car_in_wait;//有車進入維持狀態(tài) ?????car_in_wait:if(a==1) ?????????????????????state_a<=car_in_wait;//有車進入維持狀態(tài) ?????????????????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;//無車保持空閑狀態(tài) ????????car_out:????state_b<=car_out_wait;//有車離開維持狀態(tài) ????????car_out_wait:if(b==1) ????????????????????????state_b<=car_out_wait;//有車離開維持狀態(tài) ????????????????????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