1. //每隔10ms,让led灯的一个8状态循环执行一次(每个变化时间值小一点,方便测试比如设置为10us)
  2. 源代码
  3. 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
  4. 仿真代码
    `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. Verilog仿真遇到的问题

    1.Vivado 15.4仿真时编译没有报错,但是仿真不成功,逻辑很简单,full为高电平时,rd_en要拉高,但全程没有拉高! 检查语法发现语句" else if( empty == 'b ...

  2. xd p4 WEB源码拓展

    WEB 源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中 WEB 源码有很多技术需要简明分析. 知识点 关于 WEB 源码目录结构 后台目录.模板目录.数据库目录 ...

  3. mongodb对Obeject对象进行增删改操作

    1.插入某个对象,如User对象 mongoTemplate.insert(user, "users");//第一个参数是实体类对象User, 第二个参数是mongodb对应的集合 ...

  4. SQL应用系列

    载自:https://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html

  5. android gradle配置及编译command

    build.gradle apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.and ...

  6. MySQL日常工具的安装

    安装PT工具 #安装依赖 yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Digest-M ...

  7. HTTP请求报文(请求行,请求头,请求体)

    HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...

  8. 二进制k8s 集群新增加node 节点

    环境 名称 ip地址 cpu 内存 lgy-k8s-master0021 10.65.0.21 4c 8G lgy-k8s-node0012 10.65.0.12 4c 8G node节点初始化(以新 ...

  9. MongoDB 4.0 dump备份脚本

    #!/bin/bash#backup MongoDB #mongodump命令路径DUMP=/mongodb4.0/bin/mongodump #临时备份目录OUT_DIR=/bak/mongobak ...

  10. 【Java】List

    对List中map集合中某个字段排序 升序排列 方法1 Collections.sort(maps, new Comparator<Map<String, Object>>() ...