模式切换控制电路设计Verilog代码vivado ego1开发板

名称:模式切换控制电路设计Verilog代码vivado  ego1开发板(文末获取)

软件:vivado 

语言:Verilog

代码功能:

利用 Verilog3HDL设计一个逻辑控制电路、用于对某备进行模式切换控制、设备模式共三种,控制方式为

直通模式:高电平为直通有效、接地为直通无效

跳频模式:接地为跳频模式有效,高电平跳频无数

调谐模式:接地为调谐模式有效、高电平调谐无效

设备的同一时刻只有且必颊有一个模式有效,其他两个无效,为防止同时个模有效、模式切换之间应有较小的延时,利用按键作为三种模式切换输入(按键最有消除扦动的措施

设计要求:

(1)编写源程序

(2)给出仿真电路团和仿真波形图

 (3)开发板实物验证

本代码已ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:

开发板.jpg

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. Testbench

6. 仿真图

部分代码展示:

module mode_ctrl(
input clk,//时钟
input rst_p,//复位
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;
//延迟计数器
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//延迟计数后采样
        key_1_buf0 <=  key_1_in;
key_2_buf0 <=  key_2_in;
key_3_buf0 <=  key_3_in;
end
//触发器打拍
always@(posedge clk)
begin
   key_1_buf1 <=  key_1_buf0;//触发器打拍
   key_2_buf1 <=  key_2_buf0;//触发器打拍
   key_3_buf1 <=  key_3_buf0;//触发器打拍   
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;//复位
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
源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值