移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法FPGA零基础学习:LED流水灯设计FPGA零基础学习:LED流水灯设计本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白

FPGA零基础学习:LED流水灯设计
  FPGA零基础学习:LED流水灯设计

  本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

  系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。

  LED流水灯设计

  作者:郝旭帅 校对:陆辉

  在学习软件设计时,第一个例程总是“hello world!”,那么学习硬件时,也会有硬件的“hello world”–流水灯。本篇硬件基于叁芯智能科技的 SANXIN-B01开发板,如有想要入手,可以在淘宝店下单。

  在FPGA开发板上有四个LED,我们要做的流水灯,顾名思义就是要LED像流水一样的点亮熄灭。直白点说就是,点亮第一个一段时间,然后熄灭第一个的同时,点亮第二个·····。在此,我们设置每一个LED点亮的时间为1秒钟。

  硬件介绍

  在我们的开发板上有四个LED,设计逻辑为:FPGA输出高电平时,LED点亮;FPGA输出低电平时,LED熄灭。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  架构设计和信号说明

  移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  本设计的模块名称为ledrun。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  建立工程、新建文件等步骤在专辑前篇中已经明确罗列,以后将不再叙述。具体可查看,FPGA零基础学习:Intel FPGA 开发流程篇。

  设计代码

  parameter可以定义一个参数(默认是32位)。在写代码时,对于某些数字,设计者经常利用定义参数的方式进行编写,方便修改,也方便阅读。

  在硬件电路中,使用计数器当做计时器,每记录一个数字等于过去一个时钟周期。由于本设计中采用的clk为50MHz,所以经过50_000_000(在verilog中,如果是描述数字,中间的下划线只起到分隔的作用,不影响数值的大小)个周期正好为1秒钟。由于计数器是从0开始计数,所以计数器只需要记录到50_000_000-1即可。

  为了能够记录到50_000_000-1这么大的数字,所以定义了一个26位的计数器cnt(参考附录1:设计中位宽的概念和计算位宽的小技巧)。

  在verilog中,“{}”( 大括号)的第一个特殊作用为位拼接。{a,b}相当于将a和b拼接为一个整体,并且是高位为a,低位为b。

  当led输出为4’b0001时,第一个led点亮;经过1秒钟,输出4’b0010时,第二个led点亮;经过1秒钟,输出4’b0100时,第三个led点亮;经过1秒钟,输出4’b1000时,第四个led点亮;经过1秒钟,输出4’b0001时,第一个led点亮······按照上述的过程周而复始,就形成了流水灯。

  不难发现,led的输出,一直为3个0,1个1。并且1的位置每1秒钟移动一次,从头到尾,然后又到头。这种现象可以利用移位的思想进行实现。即:led[3]<=led[2]; led[2]<=led[1]; led[1]<=led[0]; led[0]<=led[3];如果将被赋值的组成一个整体,那就是led,赋值的组成一个整体就是{led[2:0], led[3]}。

  仿真代码

  $stop是一个系统任务,功能为将modelsim的仿真停止。

  设置好testbench后,运行分析综合后,打开RTL仿真。

  波形分析

  在modelsim中,打开sim窗口,选择ledrun_tb下的ledrun_inst。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  打开objects,将cnt选中。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  objects窗口中显示在sim窗口中选中模块中所有的信号。

  右击,将其添加入波形窗口。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  返回到wave窗口中,cnt信号已经添加到wave窗口中。由于新添加进来,没有数据(no data)。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  点击restart。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  restart按钮为重新运行波形,点击后,软件会询问是否保持各种属性,点击ok即可。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  wave窗口中所有的波形都处于no data 状态。点击run –all按钮,开始运行波形。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  运行后,会自动停止。停止在tb文件中的$stop处。

  返回wave窗口,各个信号都会有波形。

  设置cnt的信号进制为无符号的十进制:右击cnt信号,选择radix中的unsigned。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  把光标放到复位结束时,选择放大波形。

  放大按钮的左侧第一个按钮为全局缩放,功能为将所有运行波形,显示到目前的窗口里;左侧第二个为缩小。最左边和最右边的按钮暂时用不到,这里不再介绍。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  可以看到,在复位结束后,cnt信号每一个时钟周期都会增加1。

  由于我们设计的流水灯是每1秒钟流动一个,在上述的仿真中,led数值是不会变化的。如果仿真几秒钟的话,仿真的时间会比较长。在此不建议仿真几秒钟的时长,有可能会导致电脑卡住。

  仿真时,可以将T_1s的值,改成一个较小值。例如:5。然后在此编译仿真。

  在quartus的编译器中,修改完后。进行综合分析,保证没有任何语法错误。在之前打开的modelsim中,打开library窗口,找到最上面的work,打开其前面的“+”。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  选中刚才修改过的文件,右击,选择recompile。此时,modelsim会重新编译此文件。

  回到wave窗口中,点击restart,run-all。运行波形。

  能够清楚的看到,led在进行移位,并且都是5个周期移动一次。移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法移位指令控制流水灯亮度_移位指令控制流水灯亮度的方法

  仿真通过后,关闭modelsim。回到quartus中,将参数修改成为50_000_000,综合分析后,分配管脚。布局布线,生成配置文件,进行下板测试。

  开发板上的四个LED开始做流水状点亮。

  【sigusoft交流群】

  群号:173560979,进群暗语:FPGA技术江湖粉丝。

  多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,sigusoft群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。

  【交流群】

  现交流群已建立08群,人数已达数千人,欢迎“FPGA技术江湖”,可进群方式。

  完

  后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续。

  江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

激活谷谷主为您准备了激活教程,为节约您的时间请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/97175.html

(0)
上一篇 2024年 5月 21日 下午3:06
下一篇 2024年 5月 21日 下午4:16

相关推荐

  • malloc使用后用什么释放_malloc后如何释放

    malloc使用后用什么释放_malloc后如何释放Linux内存管理(三)内存分配之malloc本文主要介绍linux动态内存分配流程。传送上文:Linux内存管理(二)进程地址空间2linux5.15glibc-2.37动态内存分配之 malloc开源社区公开了很多现成的内存分配器(Memory Alloc

    2024年 5月 29日
  • stblid头文件_stdlib 头文件

    stblid头文件_stdlib 头文件stdlib.h头文件文件简介stdlib 头文件即standard library标准库函数头文件stdlib 头文件里包含了C、C++语言的最常用的系统函数该文件包含了C语言标准库函数的定义包含的

    激活谷笔记 2024年 5月 28日
  • topsis全称_top的全称

    topsis全称_top的全称topsis综合评价法【导读】topsis综合评价法即根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价,是一种逼近于理想解的排序法。topsis综合评价法topsis综合

    2024年 5月 26日
  • 哈夫曼树编码数据结构课程设计答辩ppt_数据结构课程设计哈夫曼编码器

    哈夫曼树编码数据结构课程设计答辩ppt_数据结构课程设计哈夫曼编码器哈夫曼编码如何做?这个题怎么做啊,为啥我做出来这么奇怪呢。拜托告诉孩子哪里错了,拜托大佬救救我啊,有偿也可以啊简单介绍一下哈夫曼树、哈弗曼编码:从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。树的路径长度就是从树根到每一结点的路径长

    2024年 5月 21日
  • Goland激活2024.1.2(GoLand 2024.1 est disponible)

    Goland激活2024.1.2(GoLand 2024.1 est disponible)

    2024年 6月 6日
  • 网络流量测试仪器有哪些

    网络流量测试仪器有哪些水是生命之源,人类在生活和生产活动中都离不开水。无论是水厂的化验室、第三方检测公司还是污水厂、化工厂、养殖水、饮用水、自来水、泳池水都需要检测一项或多项参数的水质检测仪器。那检测水质常用的仪器设备有哪些呢?水质检测仪1、COD测定仪:衡量

    激活谷笔记 2024年 5月 17日
  • xshell和SecureCRT_xshell和xmanager的区别

    xshell和SecureCRT_xshell和xmanager的区别【亲测可用】Xmanager7、Xstart7、Xshell7、Xftp7免费下载及相关使用方法1. xmanager7下载安装链接:https://pan.baidu.com/s/1IxmOZp1jusc2tHpv4wpXKg?pwd=nbiv提取码:nbiv 注:里面有两个包,只需要将安装包

    2024年 5月 9日
  • 单片机c语言有哪方面的内容呢_单片机c语言有哪方面的内容呢英语

    单片机c语言有哪方面的内容呢_单片机c语言有哪方面的内容呢英语单片机c语言编程是什么单片机C语言编程是使用C语言进行单片机开发的一种方式。C语言是一种高级编程语言,广泛应用于嵌入式系统开发中,包括单片机。单片机C语言编程主要涉及使用C语言编写单片机的应用程序,通过编译器将C语言源代码编译成单片机芯片可以执行

    2024年 5月 29日
  • 积分电路输入三角波输出什么_积分运算电路输入三角波

    积分电路输入三角波输出什么_积分运算电路输入三角波积分放大电路公式+积分放大器工作原理,带你快速搞定积分放大器大家好,我是李工,创作不易,希望大家多多支持我。今天给大家分享的是积分放大器。主要是以下几个方面:1、积分放大电路,2、积分放大电路如何分析?3、积分放大电路原理,4、积分放大电路公式推导,5、积分放大电路计算案例;6、积分放大电

    2024年 5月 27日
  • listen与listen to的区别

    listen与listen to的区别必克英语,专属外教一对一情景式电话教学,职场人士和妈妈们首选英语教育机构,十年品质保证。 听你的,你是老大,你说了算。除了最简单的”listen to you”,还有更地道的表达哦~一起和必叔学一学吧

    激活谷笔记 2024年 5月 19日
  • vscode是什么东西_vscode软件是干嘛的

    vscode是什么东西_vscode软件是干嘛的Code editing. Redefined.Meet IntelliSense. Go beyond syntax highlighting and autocomple

    激活谷笔记 2024年 4月 26日
  • 哈夫曼树的带权路径长度怎么算_哈夫曼树带权路径长度计算

    哈夫曼树的带权路径长度怎么算_哈夫曼树带权路径长度计算哈夫曼树带权路径长度(WPL)计算概念路径:在一棵树中,从一个结点到另一个结点所经过的所有结点,被我们称为两个结点之间的路径路径长度:在一棵树中,从一个结点到另一个结点所经过的“边”的数量,被我们称为两

    2024年 5月 23日
关注微信