FPGA学习——verilog实现流水灯

这篇具有很好参考价值的文章主要介绍了FPGA学习——verilog实现流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习芯片: EP4CE6F17C8

一、使用verilog实现电亮fpga板上的四个灯

verilog代码如下:

module led1(

    output wire  [3:0] led_on
);

assign led_on = 4'b1111 ;

endmodule

配置引脚,查看芯片的指导书:
FPGA学习——verilog实现流水灯,fpga开发,学习
烧录运行结果如下:
FPGA学习——verilog实现流水灯,fpga开发,学习
如图我们可以看见开发板上四个led灯同时被电亮。

二、进阶——使led灯间隔一秒闪烁

代码如下:

module led1(
    input wire clk,//时钟信号,50MHz
    input wire rst_n,//复位信号,下降沿有效
    output wire  [3:0] led_on
);

parameter MAX1S = 26'd50_000_000;
reg [25:0] cnt1s;//计数寄存器器1s
reg [3:0]   led_r;//led信号寄存器

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位,重新计数
       cnt1s<=26'd0;
    end
    else if (cnt1s == MAX1S-1'b1)begin//记到最大数,重新计数
       cnt1s<=26'd0;
    end
    else begin//其他情况+1
      cnt1s <= cnt1s + 1'd1;
    end

   
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位
        led_r = 4'b0000;
    end
    else if (cnt1s == MAX1S-1'b1)begin//记到最大数,翻转
        led_r = ~led_r;
    end
    else begin
        led_r = led_r;
    end
    
end

assign led_on = led_r;

endmodule

配置引脚,查看clock和key的引脚:
FPGA学习——verilog实现流水灯,fpga开发,学习
运行结果如下图:
FPGA学习——verilog实现流水灯,fpga开发,学习

此时可以看见四个led灯同时闪烁。

三、进阶——流水灯及跑马灯实现

流水灯代码实现:

module led1(
    input wire clk,//时钟信号,50MHz
    input wire rst_n,//复位信号,下降沿有效
    output wire  [3:0] led_on
);

parameter MAXS = 25'd25_000_000;
reg [24:0] cnt1s;//计数寄存器器0.5s
reg [3:0]   led_r;//led信号寄存器

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位,重新计数
       cnt1s<=26'd0;
    end
    else if (cnt1s == MAXS-1'b1)begin//记到最大数,重新计数
       cnt1s<=26'd0;
    end
    else begin//其他情况+1
      cnt1s <= cnt1s + 1'd1;
    end

   
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位
        led_r = 4'b0001;
    end
    else if (cnt1s == MAXS-1'b1)begin//记到最大数,翻转
        led_r = {led_r[2:0],led_r[3]};
    end
    else begin
        led_r = led_r;
    end
    
end

assign led_on = led_r;

endmodule

实验效果图如下:
FPGA学习——verilog实现流水灯,fpga开发,学习

此时可以看见led灯依次闪烁。

跑马灯代码:

module led1(
    input wire clk,//时钟信号,50MHz
    input wire rst_n,//复位信号,下降沿有效
    output wire  [3:0] led_on
);

parameter MAXS = 25'd25_000_000;
reg [24:0] cnt1s;//计数寄存器器0.5s
reg [3:0]   led_r;//led信号寄存器

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位,重新计数
       cnt1s<=26'd0;
    end
    else if (cnt1s == MAXS-1'b1)begin//记到最大数,重新计数
       cnt1s<=26'd0;
    end
    else begin//其他情况+1
      cnt1s <= cnt1s + 1'd1;
    end

   
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n ) begin//复位
        led_r = 4'b0001;
    end
    else if (cnt1s == MAXS-1'b1)begin//记到最大数,翻转
        led_r = {led_r[2:0],~led_r[3]};
    end
    else begin
        led_r = led_r;
    end
    
end

assign led_on = led_r;

endmodule

实验效果图如下:
FPGA学习——verilog实现流水灯,fpga开发,学习文章来源地址https://www.toymoban.com/news/detail-579108.html

到了这里,关于FPGA学习——verilog实现流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA开发之Vivado安装及HLS环境配置,并实现流水灯实例

    HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。

    2024年02月05日
    浏览(49)
  • 【FPGA】verilog基础语法与应用:位操作 / 模块调用——流水灯(跑马灯)

    今天的实验是计数器实验的升级,设计让8个LED灯以每个0.5s的速率循环闪烁 1 移位法实现 1.1 移位方法1 每个LED灯代表一位,共8位,亮为1,灭为0 如何实现这样的逻辑呢? 移位操作即可! 怎么样才能移位呢? 第一个状态需满足最低位为1,然后每次左移1个 源代码 仿真代码 功

    2024年01月16日
    浏览(47)
  • FPGA学习——点亮流水灯

    在FPGA开发板中,一般板载LED默认高电平点亮,因此我们只需要将想要亮起的LED赋值为1即可。 本入门实验要求为每隔1s开发板上的LED轮流亮起,因此我们需要一个1s的计数器, 由于开发板晶振时钟为50MHz,因此我们计数50_000_000即为1s。 注意:为了后续方便仿真所以这里MAX设置

    2024年02月13日
    浏览(47)
  • FPGA学习——按键控制LED流水灯(附源码 无按键消抖版本)

    在博主的cyclone4开发板上一共有4个按键,本次实验的目的是为了实现每按下一次按键,都会使开发板上的4个LED灯切换一次状态,博主一共设计了四种状态,分别是: 按键 状态 按键1按下 自右向左的流水灯 按键2按下 自左向右的流水灯 按键3按下 四灯常亮 按键4按下 四灯闪烁

    2024年02月06日
    浏览(45)
  • 流水灯——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 每隔0.2s循环亮起LED灯 从LED0开始亮起到LED3又回到LED0循环往复。 流水灯 这里使用了拼接符对LED进行处理加上一个0.2s的计时器进行控制即可。 led流水灯

    2024年02月16日
    浏览(45)
  • fpga--流水灯

    fpga流水灯的设计 思路:外部时钟频率50mhz,若要实现每隔0.5s闪烁一次,则使用内部计数器计数到24999999拉高一个周期电平,当电平被拉高的时候,进行LED灯电平的设置,每次检测到高电平,就进行一位LED灯的设置,进行循环设置,就形成了流水灯的设计。 测试代码  

    2024年02月15日
    浏览(39)
  • 按键控制流水灯方向——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 按键1按下,流水灯从右开始向左开始流动,按键2按下,流水灯从左开始向右开始流动,按键3按下LED每隔1s进行亮灭,按键4按下LED常亮。 “自锁”是指开关能通过锁定机构保持某种状态(通或断),“轻触”是说明操

    2024年02月07日
    浏览(44)
  • SOC FPGA之流水灯设计

            Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 首先下载破解器 然后进入cmd运行,进入到破解器所在文件夹  然后输入patcher.exe --license ?:licensepath 最后显示.dat文件即

    2024年02月14日
    浏览(40)
  • 基于FPGA的花样流水灯的设计

    1、学习ISE Design Suite 14.7的基本操作; 2、掌握FPGA的开发流程; 3、学习时序电路的设计; 4、巩固状态机的相关知识。 根据对该实验要求的分析,设计状态转移图如下: 其中,在S1状态下LED灯从左往右依次亮;在S2状态下LED灯从右往左依次亮;在S3状态下LED灯从中间向两边扩散

    2024年01月16日
    浏览(42)
  • FPGA:Vivado流水灯设计详细流程(1)

    基于Vivado的FPGA设计开发的流程主要包括以下步骤: 1)创建工程; 2)创建源设计文件,包括Verilog文本、IP核、模块文件、网表输入等方式; 3)行为仿真(Behavioral Simulation),Vivado自带仿真器,也可以选择第三方仿真软件ModelSim等工具进行仿真; 4)综合(Synthesis):根据设

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包