流水灯

  • 代码设计
  • 仿真设计

9月份接手了一个PCIE3.0读写存储器的项目,但是对于FPGA小白的我来说太难了,所以计划抽时间系统的学一学vivado写程序,顺便在CSDN上记录一下自己的学习轨迹,总结自己的学习心得。
和大多数人一样,第一个就是流水灯。

代码设计

  1. 创建工程
  2. 工程名符号只加 “_”
  3. 选择自己用的FPGA芯片型号,笔者用的是KU系列芯片-XCKU040
  4. 添加设计文件

    如下图所示,顶层设计文件
  5. 顶层设计文件
module run_led#        //模块名 run_led
(
parameter TSET = 32'd50_000_000-1'b1   //时间参数
)
(input clk_p,input clk_n,          //该芯片时钟输入为差分输入input RSTn_i,output reg [7:0]LED_o
);
wire CLK_i;
/对差分时钟采用IBUFGDS IP核去转换
IBUFGDS CLK_U(
.I(clk_p),
.IB(clk_n),
.O(CLK_i)
);
reg [31:0]tcnt;
always @(posedge CLK_i)begin                    //时钟上升沿进行if(!RSTn_i)                                 //复位信号低电平时tcnt <= 32'd0;                          //tcnt赋值为0else if(tcnt < TSET)                        //复位信号高电平,且tcnt小于TEST时tcnt <= tcnt + 1'b1;                    //tcnt+1操作else tcnt <= 32'd0;                          //复位信号高电平,且tcnt不小于TEST时,tcnt赋值为0
endwire led_en = (tcnt == TSET);                   //当  tcnt = TSET时,led_en赋值为1always @(posedge CLK_i)if(!RSTn_i)beginLED_o <= 8'b1;                             //  LED_o赋值为0000_0001end else if(led_en)begin                           //  led_en为1时进行if(LED_o == 8'b10000000)                //  led_en为1时进行LED_o <= 8'b1;else LED_o <= LED_o << 1;               //高电平不到最高位时,LED_o 左移一位,即2倍原数据,LED灯到下一位endendmodule

对于上述代码的一些解释
【1】parameter TSET = 32’d50_000_000-1’b1 :该工程时钟为100MHZ,即周期为10ns,TEST为50_000_000个10ns,即500_000_000ns,即0.5s。
parameter用来定义常量。
【2】reg:寄存器数据类型,通过赋值改变数值,通常用来表示always内部的指定信号
wire:wire相当于物理连线,输入输出信号为wire类型。
wire只能被assign连续赋值,reg只能在initial和always中赋值

仿真设计

  1. 仿真文件
module tb_run_led();reg CLK_i,RSTn_i;            // CLK_i,RSTn_i需要赋值,所以为reg类型
wire [3:0]  LED_o;           // LED_o为输出信号,所以为wire类型//调用了顶层设计文件
run_led#
(
.TSET(1000)
)
run_led_inst(.clk_p(CLK_i),.clk_n(~CLK_i),             //顶层设计文件时钟端口为差分p和n,不是CLK_i.RSTn_i(RSTn_i),.LED_o(LED_o)
);initial beginCLK_i  <= 1'b0;RSTn_i <= 1'b0;#100;RSTn_i <= 1'b1;
endalways #5 CLK_i = ~CLK_i;endmodule
  1. 仿真结果

开发版调试没有问题,流水灯跑起来了。

FPGA入门程序(1)——流水灯相关推荐

  1. 51单片机汇编入门基础代码-流水灯

    51单片机汇编代码-流水灯 一.基础指令集简介 汇编指令集是由芯片厂商制定的,其实际意义还是1和0.作为最接近硬件的程序语言,它能够帮助我们更容易理解微型计算机的运行原理.当然如果你能够对硬件有所了解 ...

  2. Proteus使用教程并仿真51程序——LED流水灯

    目录 一.Proteus简介 二.安装Proteus软件 三.熟悉Proteus软件 1.如何创建工程 2.界面简介 四.51程序设计和仿真 1.绘制原理图 1)添加元件 2)摆放元件 2.编写51程 ...

  3. S7-200 Smart入门笔记1——流水灯

    采用西门子PLC s7-200 smart编写流水灯,目的是熟悉位移指令.传送指令.比较指令,采用两种方法实现. 方法一采用按键,按下一次按钮,灯就变动一次: 方法二采用定时器,每个1秒,灯变动一次: ...

  4. C语言设计流水灯程序,花式流水灯c语言程序.pdf

    /*************************************************************/ /* [类型]流水灯各种用法 */ /* [现象]流水灯按各种不同样式闪 ...

  5. led流水灯c语言数组程序,LED流水灯程序 一维数组写法

    LED流水灯程序 一维数组写法 /*********** (C) COPYRIGHT 201 2************ * 程序作者: 蓝雨(QQ:983931459 ,Email:chenheng ...

  6. 单片机流水灯全亮c语言程序,终极流水灯单片机C语言程序.doc

    终极流水灯单片机C语言程序 #include #include #define uint unsigned int sbit beep=P2^3; void ji_ou(); void sx(); v ...

  7. 高云FPGA初体验-LED流水灯实验

    高云FPGA初体验-流水灯实验 硬件环境 操作步骤 创建工程 添加设计文件 添加约束文件 编译工程 下载运行 资源链接 硬件环境 开发板:高云 DK_START_GW2A55-PG484_V1.3 开 ...

  8. Zynq UltraScale+ ZCU102入门教程01-GPIO流水灯

    0.前言-永远的流水灯 之前玩过ZYNQ7020的板子,现在上手ZCU102:鉴于ZCU102的资料极少,仅可参考的教程只有官方文档,所以想写一系列教程,算是做个笔记,也为后来者提供参考.本章作为入门 ...

  9. c语言8255控制流水灯程序,8255LED流水灯控制.doc

    8255LED流水灯控制 实验四 8255 LED流水灯控制实验 一.实验目的 1.认识8255接口芯片.学习其在微机系统中的应用 2.8255编程要点指南 8255是一个通用的可编程的并行接口芯片, ...

  10. stm32流水灯c语言程序,STM32——流水灯程序

    STM32--流水灯 stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h: stm32f10x_gpio.c 和 stm32f10x_rcc.c加入 ...

最新文章

  1. springboot 自动装配_Java互联网架构-SpringBoot自动装配核心源码剖析
  2. Java递归基础案例-回文字符串的判断
  3. nginx基本数据结构ngx_module_t,ngx_module_s
  4. 苹果叫停经销商供货拼多多?官方回应:系谣言 所售新款iPhone均为正品
  5. JavaScript 字符串(String)对象
  6. 2019最新计算机配置,2019年电脑配置推荐,收藏一篇文章就够了
  7. 经典论文-SqueezeNet论文及实践
  8. PM2.5空气质量提醒实验
  9. 机器学习必备知识点 之 样本方差与实际方差
  10. C++实现十进制转换
  11. 策略盈亏分布统计——从零到实盘11
  12. ITSM基础框架开发维护指南
  13. Android版本和SDK版本
  14. 如何在Photoshop中更改某人的眼睛颜色
  15. 发明专利名称的撰写原则和技巧总结
  16. 什么是优先级反转及解决方法
  17. 检测不到声卡High Definition Audio控制器显示代码10?驱动人生教你如何解决问题
  18. 计算机毕业设计SSM电力公司员工安全培训系统【附源码数据库】
  19. 2013手机游戏引擎趋势:竞争升级
  20. jQuery :一个 JavaScript 库

热门文章

  1. SaaS服务和个性化需求,就不能鱼和熊掌兼得吗?
  2. 如何将小工具添加回Windows 8和10(以及为什么您不应该这样做)
  3. 天堂2 服务器修改,服务器技术交流_新天堂2-战乱的序幕架设教程_-921根据地_只做有质量的游戏 - Powered by Discuz!...
  4. ROS 教程——从入门到入土
  5. Android 签名文件
  6. Java设计模式之Adapter模式
  7. 计算机打开记事本步骤,记事本怎么打开(学会1秒打开电脑记事本)
  8. mx播放器有没有投屏功能_无线投屏、即插即用,投影仪其实可以更智能:明基 E580T...
  9. (C++)设计算法求集合{1,2,...,n}的幂集
  10. Excel VBA(Visual Basic)编程入门