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
目录
相关文章
|
异构计算 内存技术
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
188 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(下)
|
异构计算
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
217 0
FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)(上)
|
开发工具 芯片 异构计算
芯片设计:FPGA开发学习
芯片设计:FPGA开发学习
211 0
芯片设计:FPGA开发学习
|
算法 计算机视觉 异构计算
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
FPGA与MATLAB-图像处理-学习列表(图像处理专题更新目录,补充中)
126 0
|
缓存 异构计算
FPGA学习之按键控制led
按键控制led 设计要求:通过8个按键分别控制一个led的亮灭。   该实验有两个模块:按键缓存模块和由按键值控制led模块 按键缓存模块:通过二级缓存,将按键值存入key_r1,防止按键时产生的尖峰脉冲影响按键值。 由按键值控制led模块:采用case语句,一一对应控制led的亮灭。   顶层代码: module keyled(clk,
1961 0
|
C语言 异构计算
【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务。为此,流水灯实验作为低级建模II的动土仪式再适合不过了。废话少说,我们还是开始实验吧。 图1.1 实验一建模图。 如图1.1 所示,实验一有名为 led_funcmod的功能模块。
1061 0
|
异构计算 人工智能
【FPGA学习】Verilog之加法器
         在fpga工程应用设计中,随处可见加法器,乘法器等等。现在将一些常用模块和心得体会先记录下来,以便日后使用。 一位半加器: module halfadder(cout,sum,a,b);          outputco...
1621 0
|
2月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
28天前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
26 2
|
3月前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
44 0