名稱:模式切換控制電路設(shè)計(jì)Verilog代碼vivado? ego1開發(fā)板
軟件:vivado
語言:Verilog
代碼功能:
利用 Verilog3HDL設(shè)計(jì)一個(gè)邏輯控制電路、用于對(duì)某設(shè)備進(jìn)行模式切換控制、設(shè)備模式共三種,控制方式為:
直通模式:高電平為直通有效、接地為直通無效;
跳頻模式:接地為跳頻模式有效,高電平跳頻無數(shù);
調(diào)諧模式:接地為調(diào)諧模式有效、高電平調(diào)諧無效。
設(shè)備的同一時(shí)刻只有且必須有一個(gè)模式有效,其他兩個(gè)無效,為防止同時(shí)多個(gè)模有效、模式切換之間應(yīng)有較小的延時(shí),利用按鍵作為三種模式切換輸入(按鍵應(yīng)有消除抖動(dòng)的措施)。
設(shè)計(jì)要求:
(1)編寫源程序;
(2)給出仿真電路團(tuán)和仿真波形圖;
(3)開發(fā)板實(shí)物驗(yàn)證。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已ego1開發(fā)板驗(yàn)證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳分配
5. Testbench
6. 仿真圖
部分代碼展示:
module?mode_ctrl( input?clk,//時(shí)鐘 input?rst_p,//復(fù)位 input?key_1_in,//按鍵1 input?key_2_in,//按鍵2 input?key_3_in,//按鍵3 output?reg?[2:0]?mode?//輸出模式,led顯示 ); wire?key_1;//消抖后按鍵1 wire?key_2;//消抖后按鍵2 wire?key_3;//消抖后按鍵3 //按鍵消抖 reg?key_1_buf0; reg?key_2_buf0; reg?key_3_buf0; reg?key_1_buf1; reg?key_2_buf1; reg?key_3_buf1; //延遲計(jì)數(shù)器 reg?[7:0]?cnt_base=8'd0; always@(posedge?clk?or?negedge?rst_p) ????if(rst_p) ???????cnt_base?<=?8'd0; ????else ???????cnt_base?<=??cnt_base?+?8'd1; //輸出 always@(posedge?clk) ???if(cnt_base==8'hff)begin//延遲計(jì)數(shù)后采樣 ????????key_1_buf0?<=??key_1_in; key_2_buf0?<=??key_2_in; key_3_buf0?<=??key_3_in; end //觸發(fā)器打拍 always@(posedge?clk) begin ???key_1_buf1?<=??key_1_buf0;//觸發(fā)器打拍 ???key_2_buf1?<=??key_2_buf0;//觸發(fā)器打拍 ???key_3_buf1?<=??key_3_buf0;//觸發(fā)器打拍??? end assign?key_1=key_1_buf0?&?!key_1_buf1;//消抖后按鍵1 assign?key_2=key_2_buf0?&?!key_2_buf1;//消抖后按鍵2 assign?key_3=key_3_buf0?&?!key_3_buf1;//消抖后按鍵3 always@(posedge?clk?or?negedge?rst_p) begin if(rst_p) mode<=3'b000;//復(fù)位 else if(key_1)//按鍵1 mode<=3'b100;//指示模式1 else?if(key_2)//按鍵2 mode<=3'b010;//指示模式2 else?if(key_3)//按鍵3 mode<=3'b001;//指示模式3 end endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=451