名稱:停車場(chǎng)計(jì)數(shù)器傳感器檢測(cè)verilog代碼basys3開發(fā)板驗(yàn)證(代碼在文末下載)
軟件:VIVADO
語言:Verilog
代碼功能:
停車場(chǎng)計(jì)數(shù)器設(shè)計(jì)
1、停車場(chǎng)有一個(gè)入口一次出口,每個(gè)口有一個(gè)傳感器檢測(cè)車輛進(jìn)出。
2、兩個(gè)傳感器都未被遮擋時(shí),傳感器ab值為00。
3、傳感器a被遮擋,傳感器值ab為10。
4、傳感器b被遮擋,傳感器值ab為01。
5、傳感器ab被遮擋,傳感器值ab為11。
使用代碼設(shè)計(jì)停車場(chǎng)計(jì)數(shù)器,用按鍵代替?zhèn)鞲衅?,在開發(fā)板驗(yàn)證停車場(chǎng)計(jì)數(shù)器功能。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Basys3開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
停車場(chǎng)計(jì)數(shù)器仿真
要求:
1.程序文件
2.程序運(yùn)行
3.程序仿真
程序接口
管腳約束
仿真
Testbench
整體仿真圖
a表示車進(jìn)入信號(hào),enter為一個(gè)clk的進(jìn)入信號(hào),inc為計(jì)數(shù)增加信號(hào),car_num為車輛數(shù)量
同時(shí)有車進(jìn)出,enter和exit同時(shí)為高,
Inc和dec信號(hào)不為1,總數(shù)不增不減
b為汽車駛出信號(hào),exit為一個(gè)clk的駛出信號(hào),dec為1,總數(shù)減少1
為便于數(shù)碼管顯示,需要將car_num變?yōu)?個(gè)數(shù)碼管信號(hào),分別為百位,十位,個(gè)位
如下圖hun,ten,one信號(hào)
數(shù)碼管位選和段選信號(hào)
部分代碼展示:
module?park_station( ????input?clk,//輸入時(shí)鐘 ????input?a_key,//入口 ????input?b_key,//出口 ???? ????output?reg?[3:0]?weixuan,//數(shù)碼管位選 ????output?reg?[7:0]?duanxuan//數(shù)碼管段選 ????); wire?a;//消抖后信號(hào) wire?b;//消抖后信號(hào) //消抖模塊 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;//有車進(jìn)入狀態(tài) parameter?car_in_wait?=?3'd2;//有車進(jìn)入維持狀態(tài) parameter?car_out?=?3'd3;//有車離開狀態(tài) parameter?car_out_wait?=?3'd4;//有車離開維持狀態(tài) //parameter?car_inout?=?3'd5;//同時(shí)有車進(jìn)入離開狀態(tài) reg?[2:0]?state_a='d0; reg?[2:0]?state_b='d0; //兩段式狀態(tài)機(jī)第一段,狀態(tài)轉(zhuǎn)換 always@(posedge?clk) begin ??case(state_a) ????idle_in:if(a==1) ????????????????state_a<=car_in;//有車進(jìn)入 ????????????else ????????????????state_a<=idle_in;//無車保持空閑狀態(tài) ?????car_in:????state_a<=car_in_wait;//有車進(jìn)入維持狀態(tài) ?????car_in_wait:if(a==1) ?????????????????????state_a<=car_in_wait;//有車進(jìn)入維持狀態(tài) ?????????????????else ?????????????????????state_a<=idle_in;//車完全駛?cè)??? ?????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
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=292