Design

代码中的计数器设置是因为我的开发板的时钟是100MHZ的,也就是1秒完成了100_000_000次时钟信号,所以我设置计数器为100_000_000次。

也就是说,我让流水灯的变化周期为1 s。

counter == 32'd100_000_000

代码

`timescale 1ns / 1ps
module flow_led(
clk,
reset,
led
);
input clk;
input reset;
output [7:0] led; reg [7:0] led;
reg [31:0] counter;
reg [1:0] state; always @(posedge clk or negedge reset)
begin
if(!reset)
begin
counter <= 32'd0;
end
else if ( counter == 32'd100_000_000) //change T
begin
counter <= 32'd0;
end
else
begin
counter <= counter + 32'd1;
end
end always @(posedge clk or negedge reset)
begin
if(!reset)
begin
state <= 8'd0;
end
else if( counter == 32'd0 )
begin
state <= 1'd1;
end
else
begin
state <= 1'd0;
end end always @(posedge clk or negedge reset)
begin
if(!reset)
begin
led <= 8'b1111_1111;
end
else
begin
if(state == 1'd1)
begin
if(led == 8'b1111_1111)
begin
led <= 8'b0000_0001;
end
else if(led == 8'b1000_0000)
begin
led <= 8'b0000_0001;
end
else
begin
led <= led << 1'b1;
end
end
end
end endmodule

Simulation

若在波形仿真中,我们想让与模拟的时钟信号也是100MHZ,让流水灯的周期也为1s,那样的话仿真是跑不完的。

所以我们先修改刚刚的计数周期:

counter == 32'd1_000_000

仿真中让时钟周期为1000 ns

parameter T=1000;

这样就可以很轻松的看到流水灯全周期的波形图了。

代码

`timescale 1ns/1ns
module sim_dev1();
parameter T=1000;
reg clk;
reg reset;
wire [7:0] led; initial
begin
clk=1'b0;
reset=1'b0;
#(T+1) reset=1'b1;
end always #(T/2) clk=~clk;
flow_led u1(
.clk(clk),
.reset(reset),
.led(led)
); endmodule

波形图

参考资料

Vivado_8位流水灯的更多相关文章

  1. 单片机C51 8位流水灯

    #include<reg51.h> sbit P1_0=0X90; sbit P1_1=0x91; sbit P1_2=0x92; sbit P1_3=0x93; sbit P1_4=0x ...

  2. 毕业回馈-89C51之GPIO使用(流水灯)

    今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后 ...

  3. S5PV210_流水灯

    1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...

  4. (一)GPIO 编程实验 LED 流水灯控制

    7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P ...

  5. NIOS ii 流水灯

    为了做项目的前期验证工作,实验室购买了某开发板,下面是基于该板子的实现过程.作为笔记记录,供入门者参考. 1:创建一个Quartus II的工程 next选择器件,然后finish.我的器件是cycl ...

  6. [51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

    这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c /*--------------------- ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

    实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...

  8. 3. 戏说VHDL之入门游戏一:流水灯

    一.   流水灯 1.1流水灯原理 流水灯是每个学电子的入门“游戏” ,示意图如图1,其原理极其简单,但是可玩性却极强,可以就8个LED写出不同花样的程序.在1.2中我们列出两个不同思路的代码作为VH ...

  9. 第一个Linux驱动-流水灯【转】

    转自:http://www.xuebuyuan.com/1856562.html 水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/artic ...

随机推荐

  1. FWT快速沃尔什变换——基于朴素数学原理的卷积算法

    这是我的第一篇学习笔记,如有差错,请海涵... 目录 引子 卷积形式 算法流程 OR卷积 AND卷积 XOR卷积 模板 引子 首先,考虑这是兔子 数一数,会发现你有一只兔子,现在,我再给你一只兔子 再 ...

  2. 【JAVA】学习路径64-补充-编写一个会抛异常的方法

    有一些方法,在调用的时候有可能会出错,所以我们使用这些方法的时候会使用try catch. 比如InputStream里面的read()方法等等,那么这些方法是怎么实现抛异常的效果的呢? 能抛异常的方 ...

  3. 配置IConfiguration

    前言 配置是我们必不可少的功能,我们在开发中,经常会遇到需要获取配置信息的需求,那么如何才能优雅的获取配置信息? 我们希望新的配置: 支持强类型 配置变更后通知 学习难度低 快速入门 根据使用场景我们 ...

  4. KingbaseES V8R6 账号异常登录锁定案例

    数据库版本: test=> select version(); version --------------------------------------------------------- ...

  5. KingbaseES R3 集群主备切换信号量(semctl)错误故障分析案例

    案例说明: 某项目KingbaseES R3 一主一备流复制集群在主备切换测试中出现故障,导致主备无法正常切换:由于bm要求,数据库相关日志无法从主机中获取,只能在现场进行分析:通过对比主备切换时的时 ...

  6. gin如何多次shoubind一个请求参数

    gin多次绑定请求参数 package main import ( "fmt" "net/http" "time" "github ...

  7. Springboot mybatis总结

    mybatis 总结 属性配置 1. mybatis.configuration.mapUnderscoreToCamelCase=true mapUnderscoreToCamelCase用于映射表 ...

  8. 常用MySQL语句(持续更新)

    1. 客户端登录 在终端输入 mysql -u[用户名] -p[密码] 2. 数据库级别操作 // 创建数据库 create database [db name]; // 查看数据库列表 show d ...

  9. Shell 脚本实践指南

    代码风格规范 开头有"蛇棒" 所谓shebang其实就是在很多脚本的第一行出现的以#!开头的注释,他指明了当我们没有指定解释器的时候默认的解释器,一般可能是下面这样: #!/bin ...

  10. loam详细代码解析与公式推导

    loam详细代码解析与公式推导(基础理论知识) 一.基础坐标变换 loam中欧拉角解算都采用R P Y 的解算方式,即先左乘R, 再左乘P, 最后左乘Y,用矩阵表示为: R = Ry * Rp * R ...