//每隔10ms,让led灯的一个8状态循环执行一次(每个变化时间值小一点,方便测试比如设置为10us)
源代码
module counter_led_6(
    clk,
    reset_n,
    Time,
    ctrl,
    led
);
    input clk;
    input reset_n;
    input [31:0] Time;
    input [7:0] ctrl;
    output reg led;
    reg [31:0] counter;
    reg EN;
    //10ms定时器
    reg [18:0] counter0;
    always@(posedge clk or negedge reset_n)
    if(!reset_n)
        counter0<=0;
    else if(counter0==500000-1)
        counter0<=0;
    else
        counter0<=counter0+1'b1;
    
    //产生EN
    
   
    always@(posedge clk or negedge reset_n)
    if(!reset_n)
        EN<=0;
    else if(counter0==0)
        EN<=1;
    else if((counter2==7)&&(counter==Time-1))
        EN<=0;
    
    //输入时间间隔
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            counter<=0;
        else if(EN)begin
            if(counter==Time-1)
                counter<=0;
            else
                counter<=counter+1'b1;
        end
        else
            counter<=0;
    reg [2:0] counter2;
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            counter2<=0;
        else if(EN)begin
            if(counter==Time-1)
                counter2<=counter2+1'b1;
        end
        else
            counter2<=0;
     
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            led<=0;
        else case(counter2)
            0:led<=ctrl[0];
            1:led<=ctrl[1];
            2:led<=ctrl[2];
            3:led<=ctrl[3];
            4:led<=ctrl[4];
            5:led<=ctrl[5];
            6:led<=ctrl[6];
            7:led<=ctrl[7];
            default led<=led;
        endcase
endmodule
仿真代码
`timescale 1ns/1ns
module counter_led_6_tb();
    reg clk;
    reg reset_n;
    reg [31:0] Time;
    reg [7:0] ctrl;
    wire led;
    
    counter_led_6 counter_led_6_inst0(
    .clk(clk),
    .reset_n(reset_n),
    .ctrl(ctrl),
    .Time(Time),
    .led(led)
    );
    initial clk=1;
    always #10 clk=!clk;
    
    initial begin
        reset_n=0;
        ctrl=0;
        Time=0;
        
        #201;
        reset_n=1;
        #2000;
        Time=2500;
        ctrl=8'b1000_0110;
        
        
        #2000000000;
        $stop;
    end

endmodule

小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验六的更多相关文章

  1. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  2. 【小梅哥SOPC学习笔记】sof与NIOS II的elf固件合并jic得到文件

    sof与NIOS II的elf固件合并jic得到文件 注意,本方法已经有更加简便的方法,小梅哥提供相应的脚本文件,可以一键生成所需文件,脚本请前往芯航线FPGA技术支持群获取. 7.1 为什么需要将S ...

  3. 【小梅哥SOPC学习笔记】系统时钟的使用

    给NIOS II CPU添加一颗澎湃的心——系统时钟的使用 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchd ...

  4. 【小梅哥SOPC学习笔记】给NIOS II CPU增加看门狗定时器并使用

    给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 1. 设置计时溢出时间为1秒 2. 计数器位宽为32位 3. 勾选No Start/Stop control bits 4. 勾选F ...

  5. 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦

    SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...

  6. 【小梅哥SOPC学习笔记】NIOS II工程目录改变时project无法编译问题

    解决NIOS II工程移动在磁盘上位置后project无法编译问题 说明:本文档于2017年3月4日由小梅哥更新部分内容,主要是增加了讲解以Quartus II13.0为代表的经典版本和以15.1为代 ...

  7. 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置

    切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...

  8. 【小梅哥SOPC学习笔记】设置Eclipse在编译(build)前自动保存源代码文件

    设置Eclipse在编译(build)前自动保存源代码文件 Eclipse 常用设置之让Eclipse在编译(build)前自动保存源代码文件 一.让Eclipse在编译(build)前自动保存源代码 ...

  9. 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II

    SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...

  10. 【小梅哥SOPC学习笔记】Altera SOPC嵌入式系统设计教程

    Altera SOPC嵌入式系统设计教程 第1章 概述 SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出来的一种灵活.高效的SOC解决方案.它 ...

随机推荐

  1. 兼容ie8的Html+Css+Js

    1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset=" ...

  2. JS中函数的length以及arguments的length如何得到?

    function a(x,y){} a.length // 2 function b(x,y=2,z){} b.length // 1 function c(x,...args){} c.length ...

  3. ADC相关内容

    SFDR定义 无杂散动态范围(Spurious Free Dynamic range ,SFDR) 是衡量A/D和D/A数据转换器(ADC/DAC)的指标,表示在杂散分量干扰基本信号或导致基本信号失真 ...

  4. springboot集成Thumbnailator压缩图片

    一.参考大神博客 1.https://blog.51cto.com/u_11269274/5118649 2.https://blog.csdn.net/weixin_44722978/article ...

  5. k8s入门_RC、RS、Deployment

    RC 什么是RC: Replication Controller(副本控制器),RC能够保证pod在任意时间运行的副本数量,能够保证pod总是可用的. RC控制的pod的多个副本,每个副本都有独立的i ...

  6. shadow-socks 服务器配置

    https://msd.misuland.com/pd/2884250034537239234 按照上述教程 使用python3 时 pip3 install 会报错 可以按照如下连接修复 https ...

  7. protobuf遇坑总结

    在一个vs2013解决方案下创建了三个工程文件,在其中一个工程(Foundation)中放有CtrlMessage.pb.h和ControlMessageTags的头文件.编译后出错总共68处. 错误 ...

  8. chatgpt

    openAI 需要外国手机验证可以使用 当时注册的时候怎么都不成功,后来换了一个浏览器,还是怎么也不行,后再不知怎的就好了 还需要FQ,我用的是日本的线路

  9. threadlocal应用

    public class DataSourceSelector { /** * 线程threadlocal */ private static ThreadLocal<String> db ...

  10. Unity连接海康摄像头(shader转码)硬解码

    1.第一种方法 之前写过就不写了给个地址 2.第二种方法 用海康的SDK (shader转码) 先上效果 demo下载地址: 点击下载 开启多个摄像头的话 第二种比一种流畅