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. 有null值的子查询,子查询加排序,速度大幅提升

    意外发现,如果子查询结果有大量null值,加上一个排序,最后查询速度飞起

  2. @Service注解

    @Service注解的作用之一就是添加在Service层做Bean实例化, 在遇到service层方法有多个实现时也可指定@Service(name=""),并在controlle ...

  3. 点击dgv某列的单元格时触发事件的方法

    private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.Colu ...

  4. 实践:腾讯云COS备份本地数据以及异地备份

    在当前大数据时代背景下,数据在业务中占有不可低估的地位,数据备份已然成为了最后一道屏障. 腾讯云对象存储COS,提供数据备份.共享.大数据处理.线上数据托管一站式解决方案,成为了不少企业和个人用户备份 ...

  5. 肖sir__网页线下面试

    第一题: 设计一下两个两位数相加的测试用例,说只能写数字不要写文字 第二题 淘宝订单怎么测试 功能测试: 1.测试订单输入的类型 2.测试金额数量:可创建等价类划分 3.测试库存数量变更 4.测试订单 ...

  6. git 代码强制回滚操作整理(线上线下一起)

    线上代码强制回滚操作,这边整理了一下 1.到线上 执行 git reset --hard xxxxxxxxxxx(更新前的一个版本)2.本地执行 和上面一样 git reset --hard xxxx ...

  7. 加载Assetbundle

    using UnityEngine;using System.Collections;using UnityEngine.SceneManagement; /// <summary>/// ...

  8. lua中self的意义

    原文链接 最近在用合宙的Air302开发物联网项目,因为合宙用的自家的luatOS操作系统,二次开发全都要用lua写,据说lua写起代码比C更方便,但是不会就是不会啊喂!!学不会就是不方便啊,例如这个 ...

  9. JS篇(009)-javascript 对象的几种创建方式

    答案: 第一种:Object 构造函数创建 var Person = new Object(); Person.name = "Nike"; Person.age = 29; 这行 ...

  10. Coursera Programming Languages, Part C 华盛顿大学 Week 1

    来进入这一系列课程的最后一 Part 啦! \(P1\) 我们介绍了 \(ML\),一种 static typing 的 functional language \(P2\) 我们介绍了 \(Rack ...