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
目录
相关文章
|
21天前
|
异构计算
|
异构计算 内存技术
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
190 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
|
异构计算
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
222 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
|
开发工具 芯片 异构计算
芯片设计:FPGA开发学习
芯片设计:FPGA开发学习
213 0
芯片设计:FPGA开发学习
|
算法 计算机视觉 异构计算
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
126 0
|
缓存 异构计算
FPGA学习之按键控制led
按键控制led 设计要求:通过8个按键分别控制一个led的亮灭。   该实验有两个模块:按键缓存模块和由按键值控制led模块 按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲影响按键值。 由按键值控制led模块:采用case语句,一一对应控制led的亮灭。   顶层代码: module keyled(clk,
1962 0
|
C语言 异构计算
【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务。为此,流水灯实验作为低级建模II的动土仪式再适合不过了。废话少说,我们还是开始实验吧。 图1.1 实验一建模图。 如图1.1 所示,实验一有名为 led_funcmod的功能模块。
1061 0
|
异构计算 人工智能
【FPGA学习】Verilog之加法器
         在fpga工程应用设计中,随处可见加法器,乘法器等等。现在将一些常用模块和心得体会先记录下来,以便日后使用。 一位半加器: module halfadder(cout,sum,a,b);          outputco...
1636 0
|
10天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
28 7
|
3月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench

热门文章

最新文章