FPGA自学教程 03 设计一个以1秒频率闪烁的LED灯

双非硕士 研一下学期视觉转FPGA(在b站跟小梅哥视频)

长路漫漫,但希望前途光明

此篇文章开始省去建工程的操作,如果有不懂的同学可以看我之前的两篇文章。

1.新建文件名为:led_flash,等待右侧弹出Verilog代码框。

2.计数器逻辑图如下

3.以1秒频率闪烁的LED灯的代码内容如下:

//设计一个以1秒频率闪烁的LED灯(亮灭各500ms)

module led_flash(
    Reset_n,//复位端口,加_n是使用低电平复位
    Clk,//时钟端口
    Led,
);
    input Clk;
    input Reset_n;
    output reg Led;
    
    reg [24:0]counter;
    
    always@(posedge Clk or negedge Reset_n) //posedge Clk 为时序描述的标准格式
        // <=是非阻塞赋值的意思
        if(!Reset_n)
            counter <= 0;
        else if(counter == 250000000-1)
            counter<=0;
        else
            counter <= counter+1'd1;        
    always@(posedge Clk or negedge Reset_n)
    if(!Reset_n)
        Led <= 0;
    else if(counter == 25000000)
        Led <=!Led;
        //    always@(posedge Clk or negedge Reset_n) //posedge Clk 为时序描述的标准格式
        //    // <=是非阻塞赋值的意思
        //    if(!Reset_n)begin
        //        counter <= 0;
        //        Led <=0;
        //    end
        //    else if(counter == 25000000-1)begin
        //        Led <=!Led;
        //        counter<=0;
        //    end
        //    else
        //        counter <= counter+1'd1;
endmodule

4.进行仿真测试,操作步骤与前面两篇文章类似,这里就不重复了,直接上仿真测试的代码:

`timescale 1ns/1ns

module led_flash_tb();

    reg Clk;
    reg Reset_n;
    wire Led;
    
    led_flash led_flash(
        .Reset_n(Reset_n),//复位端口,加_n是使用低电平复位
        .Clk(Clk),//时钟端口
        .Led(Led)
    );
    //时钟信号
    initial Clk =1;
    always #10 Clk=!Clk;
    
    initial begin
        Reset_n=0;
        #201;
        Reset_n=1;
        #2000000000;
        $stop;
    end
    
endmodule

经过仿真实验,可以看到波形图如下所示:

5.进行板机验证,首先进行管脚验证,双击左侧选择栏中的Open Synthesized Design,右侧会出现以下界面

将I/O全部修改为LVCMOS33,并输入引脚名,输入好后 Ctrl+s保存,如下图所示

 

点击Generate Bitstream

再选择Open Hardware Manager即可在开发板上运行。

好了,以上就是通过vivado模拟实现1秒亮灯一次的fpga程序。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是用Vivado设计使FPGA板LD0~LD7以1Hz的频率闪烁的代码: 1. 首先,创建一个新的工程,在Vivado的主界面选择File -> Project -> New。在弹出的对话框中,输入工程名称和工程路径,然后点击Next。 2. 在下一个对话框中,选择RTL Project,然后点击Next。 3. 选择你的FPGA板型号,然后点击Next。 4. 在下一个对话框中,点击Create File。然后输入文件名,如blink.v,并选择Verilog作为文件类型。点击OK。 5. 在新建的文件中,输入以下代码: ``` module blink( input clk, //时钟信号 output reg [7:0] leds //LED输出 ); reg [23:0] counter; //计数器 always @(posedge clk) begin //时钟上升沿触发 if (counter == 24000000) begin //1钟 counter <= 0; leds <= ~leds; //LED输出翻转 end else begin counter <= counter + 1; //计数器加1 end end endmodule ``` 6. 点击左边的Sources选项卡,然后右键单击Sources目录,选择Add Sources。在弹出的对话框中,选择Add or create simulation sources,然后点击Next。 7. 在下一个对话框中,选择Create File,输入文件名为testbench.v,并选择Verilog作为文件类型。点击OK。 8. 在新建的文件中,输入以下代码: ``` module testbench; reg clk; wire [7:0] leds; blink uut( .clk(clk), .leds(leds) ); initial begin clk = 0; forever #5 clk = ~clk; //时钟信号每5个时钟周期翻转一次 end endmodule ``` 9. 点击左边的Flow Navigator选项卡,然后在Design Sources下找到blink模块,双击打开。 10. 在打开的页面中,点击左边的Run Simulation -> Run Behavioral Simulation。等待仿真结束后,可以看到LED以1Hz的频率闪烁。 11. 最后,点击左边的Flow Navigator选项卡,然后在Program and Debug下找到Generate Bitstream,点击Generate Bitstream生成比特流文件,然后下载到FPGA板上即可。 希望我的回答能够帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值