//每隔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. zabbix利用python3脚本进行钉钉报警

    1.新建脚本dingding.py内容如下   注意需要用unix格式  不然会报错/usr/bin/python3^M #!/usr/bin/python3import requestsimport ...

  2. Doris使用记录

    创建分区表: CREATE TABLE `test_partitioned` ( `gmt_create` datetime NULL COMMENT "创建时间", `colum ...

  3. lua-table面向对象

    --使用table封装面向对象beauty={name = " "}--封装对象方法function beauty.init(self, name)print("十八年前 ...

  4. linux下项目自动化备份

    #! /bin/bash # 日期: 20220927 # 执行环境: 192.168.25.38 # 功能: 每周自动备份/data下"elasticsearch|project|soft ...

  5. 【Ubuntu】Ubuntu 技巧集锦

    『Ubuntu 22.04 国内镜像 阿里云/163源/清华大学/中科大』 『各种 Proxy 设置 GUI/Terminal/APT』 『设置 wget Proxy』 『设置右键菜单-新建文档』 『 ...

  6. WPF窗体图标设置

    WPF程序在编写结束后,界面没有图标,影响美观性.今天在添加图标的时候,一直报错,然后通过查找资料,将这个问题解决,现在将主要步骤记录如下; 准备好图标文件,注意文件格式应该为ico格式文件.有一个在 ...

  7. python测试IP地址是否ping通

    import timeimport osdef pingComputer(): for i in range(1, 256): host = '192.168.2.' + str(i) status1 ...

  8. Quartus II 17.1新建一个流水灯

    诸图排序:从左到右,从上到下 一.软件设置 1.新建工程并添加FPGA芯片 2.新建.v文件并添加至顶层实体 3.元器件特性设置 4.分析与阐述(生成网表文件) 5.引脚分配 6.编译(包含分析与综合 ...

  9. agl---atumotive grade linux开篇

    linux本人也玩过,捯饬过双系统win7+Ubuntu,搞过虚拟机跑fedora,做开发,除了觉得酷,能接触到整个程序开发.编译.链接,程序效率高外,没觉得啥好,关键生态也无丰富,我这种伪码农,也就 ...

  10. COM 对象的利用与挖掘4

    作者:Joey@天玄安全实验室 前言 本文在FireEye的研究Hunting COM Objects[1]的基础上,讲述COM对象在IE漏洞.shellcode和Office宏中的利用方式以及如何挖 ...