小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验六
//每隔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花式玩法(从计数器器到线性序列机)——实验六的更多相关文章
- 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计
基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述: 2 TLC5620型DAC芯片引脚说明: 2 TLC5620型DAC芯片详细介绍: 3 TLC ...
- 【小梅哥SOPC学习笔记】sof与NIOS II的elf固件合并jic得到文件
sof与NIOS II的elf固件合并jic得到文件 注意,本方法已经有更加简便的方法,小梅哥提供相应的脚本文件,可以一键生成所需文件,脚本请前往芯航线FPGA技术支持群获取. 7.1 为什么需要将S ...
- 【小梅哥SOPC学习笔记】系统时钟的使用
给NIOS II CPU添加一颗澎湃的心——系统时钟的使用 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchd ...
- 【小梅哥SOPC学习笔记】给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 1. 设置计时溢出时间为1秒 2. 计数器位宽为32位 3. 勾选No Start/Stop control bits 4. 勾选F ...
- 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦
SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...
- 【小梅哥SOPC学习笔记】NIOS II工程目录改变时project无法编译问题
解决NIOS II工程移动在磁盘上位置后project无法编译问题 说明:本文档于2017年3月4日由小梅哥更新部分内容,主要是增加了讲解以Quartus II13.0为代表的经典版本和以15.1为代 ...
- 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置
切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...
- 【小梅哥SOPC学习笔记】设置Eclipse在编译(build)前自动保存源代码文件
设置Eclipse在编译(build)前自动保存源代码文件 Eclipse 常用设置之让Eclipse在编译(build)前自动保存源代码文件 一.让Eclipse在编译(build)前自动保存源代码 ...
- 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...
- 【小梅哥SOPC学习笔记】Altera SOPC嵌入式系统设计教程
Altera SOPC嵌入式系统设计教程 第1章 概述 SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出来的一种灵活.高效的SOC解决方案.它 ...
随机推荐
- OTP: gen_server的简单应用
1.确定回调模块名 2.编写接口函数 3.在回调模块里编写六个必需的回调函数 1.确定回调模块名 my_bank 2.编写接口方法 start() 打开银行 stop() 关闭银行 new_accou ...
- Oracle重建索引
创建表 create table student( student_id number, name varchar2(240) ) tablespace school_data; 创建索引 creat ...
- debug / support 的步骤 / 解决问题的步骤
尽量避免去看代码, 而是去作为当前用户去测试各种场景, 肯定有的场景是有问题的, 有点场景是没有问题, 那有问题和没有问题之间, 就能知道为什么了.代码太纷繁芜杂了, 看不懂的, 出问题都是在某个或者 ...
- C++内存分配Arena,指的是提前分配的一大块连续内存空间
参考: https://stackoverflow.com/questions/12825148/what-is-the-meaning-of-the-term-arena-in-relation-t ...
- java面试准备基础篇
1.Java中常用关键字和用途 synchronized: 加锁 transient 不参与序列化和反序列化 volatile 保证其他线程可见性,不保证原子性,禁止指令重排 2.hashCode() ...
- centos 防火墙开放端口
centos防火墙开放端口 开启防火墙 systemctl start firewalld 开放指定端口 firewall-cmd --zone=public --add-port=<PORT& ...
- (一)REDIS之常见数据结构及操作
(一)基本数据结构 1.1 String结构: String底层结构是动态字符串,可修改指定位置数据,通过预分配冗余空间减少内存的频繁分配,实际分配的空间capacity一般要高于实际字符串长度len ...
- KEIL5中C/C++优化等级问题
知乎上有篇详解 https://zhuanlan.zhihu.com/p/24402180 强烈推荐 C/C++的优化等级会对程序产生 不定性的影响,至于选择哪种优化等级必须从 现有的程序分析才行 ...
- Windows安装MySQL5.7配置
1.下载对应版本安装包,http://dev.mysql.com/downloads/mysql 2.将安装包解压 3.解压后会发现没有my.ini文件,此版本并不需要手动创建my.ini文件,手动创 ...
- Python中的容器、迭代器、生成器
容器是一系列元素的集合,str.list.set.dict.file.sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象. 可迭代对象实现 ...