名稱:電器控制電路的設(shè)計和實現(xiàn)Verilog代碼Vivado? basys3開發(fā)板
軟件:Vivado
語言:Verilog
代碼功能:
繼電器控制電路的設(shè)計和實現(xiàn)
1設(shè)計目標
實現(xiàn)使用8個LEC燈當作繼電器并進行控制。
2.設(shè)計內(nèi)容
如下圖,8個LED中近兩個LED作為一組同時亮,以切換速率1s到切換到下一組循環(huán),利用一個按鍵切換頻率從1s換到2s
1.流水燈的方向向左或向右都可以
2.管腳定義實驗時給出
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在basys3開發(fā)板驗證,basys3開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳定義
5. Testbench
6. 仿真圖
部分代碼展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2019/11/23?16:26:11 //?Design?Name:? //?Module?Name:?basys3_led //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// module?basys3_led( ????input?clk_100M, ????input?reset_p,//BTNU ????input?switch,//SW0 ????output?[7:0]?led ????); //100M時鐘分頻到1Hz和0.5Hz reg?[31:0]?count=32'd0; reg?clk_1Hz=0;//1Hz reg?clk_05Hz=0;//0.5Hz always@(posedge?clk_100M?or?posedge?reset_p) ????if(reset_p) ????????count<=32'd0; ????else ????????if(count>=32'd100_000_000)//100M時鐘計數(shù)100_000_000得1s ????????????count<=32'd0; ????????else ????????????count<=count+32'd1; always@(posedge?clk_100M?or?posedge?reset_p) ????if(reset_p) ????????clk_1Hz<=0; ????else ????????if(count>=32'd50_000_000)//100M時鐘計數(shù)100_000_000得1s ????????????clk_1Hz<=1;//得到1Hz時鐘 ????????else ????????????clk_1Hz<=0; always@(posedge?clk_1Hz) ????clk_05Hz<=~clk_05Hz;//2分頻得到0.5Hz wire?clk_work;//工作時鐘 assign?clk_work=switch?clk_1Hz:clk_05Hz;//工作時鐘在switch==1時為1Hz(1s),為0時為0.5Hz(2s) reg?[7:0]?LED_buf=8'b11000000; always@(posedge?clk_work?or?posedge?reset_p) ????if(reset_p) ????????LED_buf<=8'b11000000; ????else ????????LED_buf<={LED_buf[0],LED_buf[7:1]};//循環(huán)右移 assign?led=LED_buf;//輸出led endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=501