• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

06/13 14:49
393
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-231230095224W5.doc

共1个文件

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

软件:vivado

语言:Verilog

代码功能:

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

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

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

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

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

设计要求:

(1)编写源程序;

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

(3)开发板实物验证。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已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

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=451

  • 2-231230095224W5.doc
    下载

相关推荐