FPGA学习之流水灯的简单设计

简介: 流水灯的简单设计 设计要求:低位点亮一个led,下一个周期,点亮两个led,逐次增加led的个数,全部点亮后的下一个周期,又点亮一个led 该实验需要两个模块,计数器模块和led控制模块 计数器模块:就是一个分频器,频率为2hz,系统时钟为50mhz,50_000_000/2=25_000_000,需要25位计数器。 Led控制模块:控制移位,到达全0时,led

流水灯的简单设计

设计要求:低位点亮一个led,下一个周期,点亮两个led,逐次增加led的个数,全部点亮后的下一个周期,又点亮一个led

该实验需要两个模块,计数器模块和led控制模块

计数器模块:就是一个分频器,频率为2hz,系统时钟为50mhz,50_000_000/2=25_000_000,需要25位计数器。

Led控制模块:控制移位,到达全0时,led为全1。不断循环点亮。

 

顶层模块代码:

module ledwater(clk,rst_n,led);

input clk;

input rst_n;

output [7:0]led;

 

parameter MAX_CNT=24_999_999;

 

reg [24:0]cnt;//计数器

always @(posedge clk or negedge rst_n)

    if(!rst_n)

        cnt <=25'd0;

    else if(cnt==MAX_CNT)

        cnt <=25'd0;

    else

        cnt <=cnt + 1'b1;

       

reg [7:0]led_r;

always@(posedge clk or negedge rst_n)

    if(!rst_n)

        led_r <= 8'b1111_1111;

    else if(cnt == MAX_CNT)begin

        led_r <= led_r << 1;

        if(led_r==8'd0)

            led_r <= 8'b1111_1111;

//      else

//          led_r <= led_r;//此处不应该有,逻辑不对

    end

    else

        led_r <= led_r;

 

assign led = led_r;

   

endmodule

 

 

测试文件只需设置clk和rst_n

代码:

`timescale 1ns/1ns

`define clk_period 20

 

module ledwater_tb;

 

reg clk;

reg rst_n;

 

wire [7:0]led;

 

ledwater

#(

    .MAX_CNT(10)

)

ledwater0(

        .clk(clk),

        .rst_n(rst_n),

        .led(led)

        );

 

initial clk=1;

always #(`clk_period/2)clk= ~clk;

 

initial begin

    rst_n=0;

    #(`clk_period*30+1);

    rst_n=1;

end

 

endmodule

 

Ps:测试文件采用参数化设计

ledwater

#(

         .MAX_CNT(10)

)

ledwater0(

                   .clk(clk),

                   .rst_n(rst_n),

                   .led(led)

                   );

 

 

仿真波形:

仿真波形.gif
目录
相关文章
|
2月前
|
异构计算
FPGA新起点V1开发板(九)——流水灯
FPGA新起点V1开发板(九)——流水灯
|
3月前
|
存储 算法 前端开发
【FPGA学习篇】认识Robei(一)
【FPGA学习篇】认识Robei(一)
37 1
|
4月前
|
异构计算
|
异构计算 内存技术
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
260 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
|
异构计算
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
259 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
|
开发工具 芯片 异构计算
芯片设计:FPGA开发学习
芯片设计:FPGA开发学习
243 0
芯片设计:FPGA开发学习
|
存储
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
278 0
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
|
Go 网络架构 内存技术
FPGA-SDRAM设计学习(二)具体操作详细介绍(文档阅读)
FPGA-SDRAM设计学习(二)具体操作详细介绍(文档阅读)
163 0
FPGA-SDRAM设计学习(二)具体操作详细介绍(文档阅读)
|
存储 vr&ar 芯片
FPGA-SDRAM设计学习(一)简单概念和操作介绍
FPGA-SDRAM设计学习(一)简单概念和操作介绍
251 0
FPGA-SDRAM设计学习(一)简单概念和操作介绍
|
算法 计算机视觉 异构计算
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
146 0

热门文章

最新文章