20180805 玩玩FPGA开发,学学Verilog,学学基本操作,制作流水灯

20180805 玩玩FPGA开发,学学Verilog,学学基本操作,制作流水灯

我毕业设计做的就是FPGA,但是什么都没有学。校外毕设老师对我非常无奈,不过还好,校内的指导老师送了我一个很久很久的开发板,配套的教程是2010年的竞赛教程,教程里的截图很显然的win7风格……下面是老师送的开发板上的照片,能玩的地方有:小灯和数码管,还有一个VGA的输出接口。(家里没有VGA线,懒得买,所以就不玩这个了)

图:老师送的板子和下载线

一、开发环境搭建

这点没什么可说的,就是下载一个ISE14.7(板子比较旧,虽说Xilinx提供了新的开发工具Vivado,但是开发板上的芯片似乎只能用ISE开发),然后下载一个破解文件,破解一下就好了。(这个过程其实挺费劲的,网速啊…………………………)

二、新建工程

打开ISE,新建工程,选择对应的芯片类型。Spartan3E XC3S500E……

后面都是基本操作,不截图了。

软件设计出来就是给人用的,要不是给人用的,咱不用就行了。

三、规划思路

要练习做个什么呢?首先需要有个大体的规划,把所有小灯和数码管给用上——

在复位上电以后,8个小灯按照跑马灯从左到右来跑,数码管显示0000,当小灯最右边的一个由亮转灭的时候,数码管显示的数字+1。这是一个非常非常初步的目标,如果用51单片机实现将非常简单,不超过50行代码。

FPGA的开发,按照书本上讲,需要一个自顶而下Top-down的思维:从最顶层的模块开始思考,分析其功能可以细分为什么模块,输入输出是什么,然后针对每个细分后的模块继续分析,直到能够用较为简短的行为级语言描述的模块。然后,将这些行为级模块转化为RTL级(我的理解是门电路、寄存器等非常小的级别)的代码。

分析顶层模块:

输入:板载的晶振50MHz的clk,复位按钮(信号)rst

输出:8个led小灯,4个8段数码管的选择信号seg和数据信号dat

①为了让人眼能看明白,小灯的切换时间要>人眼能感受到的时间(约0.02s),至少需要一个分频模块,将clk分个5Mà得到大概10Hz频率的信号(晶振不准,精度要求不高,大概调一下觉得舒服就可以了)

②数码管要4个都显示,需要不断地扫描,扫描的时间<人眼感受到的时间,这个用clk就行了,需要一个扫描模块,相当于一个4位的位移寄存器,对于每一个状态,读取不同缓存区(存储要显示的数字的地方)

③由上,需要4个缓存模块

④存储的要显示的数字是什么编码的?如果采用BCD码,则需要一个BCD转数码管显示码的模块,如果直接采用数码管显示码来计数,也是可以的。

⑤8个小灯要跑马灯,需要一个9位的位移寄存器

⑥跑马灯到右边时,数码管显示的数字要+1,需要一个9进制的计数器。

因此,模块示意图如图所示:

四、编写代码

工程结构如图所示:

下面针对每类模块编写代码。

①时钟分频模块,这相当于一个计数器,用行为级代码来编写:

代码大意是每来一个clk的上升沿,计数变量cnt+1,直到计数变量cnt与预设值M相等的时候,输出clk_out取反。

②状态转换器,其实还是一个计数器,编码比较诡异而已

代码大意是每来一个上升沿,如果当前状态是S(X),则输出下一个状态S(X+1)。

虽然这个代码用位移寄存器也可以完成,但我只是想试试这个写法而已。

其他部分的代码类似,在此略过。

五、仿真

这里针对每种模块都编写了test文件。仿真得到的波形看起来也是正确的……

波形图上seg表示不停地切换要显示的数码管,dat表示数码管要显示的数值,led表示当前小灯的显示情况。

六、下载到开发板

果然会出现错误好吧——

图上数码管看起来要显示7,但是周围的其他部分也似乎亮了起来,而且并没有按照想法显示0007,这就是传说中的"鬼影现象"好吧

╮(╯-╰)╭

七、改进思想

有几个想法:

①加入一个rdy信号,表示数据准备好准备好,再增加一个缓冲模块,当rdy信号有效的时候,输出等于输入;当rdy信号无效的时候,输出为0000,表示一个数码管也不选择。

问题来了,这个rdy信号从什么地方来?计划之一,从10进制计数器来,问题是有4个计数器,这个信号还需要求一个或运算?不准确。计划之二,从4进制计数器来,这个信号从clk延迟一段时间而来,这个需要进一步设计一下。

②专门弄一个负责显示4位(可扩展)数码管的模块,以后都可以调用(复制粘贴),(例化)。

心里感受到了挫败感,明天再弄。

原文地址:https://www.cnblogs.com/AmnesiaBeing/p/9425201.html

时间: 2024-08-24 15:31:52

20180805 玩玩FPGA开发,学学Verilog,学学基本操作,制作流水灯的相关文章

FPGA开发全攻略——ISE基本操作

原文链接: FPGA实战开发技巧(2) FPGA开发全攻略连载之十二:FPGA实战开发技巧(3) FPGA开发全攻略连载之十二:FPGA实战开发技巧(4) 5.2 如何进行FPGA设计早期系统规划 作者:Ricky Su (www.rickysu.com) 这篇文章讲述了如何用工具提高效率的方法,适用程度因人而异. Situation: 在对FPGA 设计进行最初步的系统规划的时候,需要进行模块划分,模块接口定义等工作.通常,我们起初会在纸上进行设计,到了一定阶段的定稿可能会输入Visio 等工

FPGA开发的基本流程

典型FPGA开发流程与注意事项 FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程.典型FPGA的开发流程一般包括功能定义/器件选型.设计输入.功能仿真.综合优化.综合后仿真.实现.布线后仿真.板级仿真以及芯片编程与调试等主要步骤. 1).功能定义/器件选型 在FPGA设计项目开始之前,必须有系统功能的定义和模块的划分,另外就是要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源.成本.以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型.

FPGA开发流程1(详述每一环节的物理含义和实现目标)

要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体语法.使用工具和使用技巧不谈,咱先来弄清楚FPGA的开发流程是什么. FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的允许,可以免去,比如静态仿真过程,这样来达到项目时间上的优势.但是,大部分的流程步

FPGA开发全攻略连载之十:FPGA开发基本流程(1)

原文链接: FPGA开发全攻略连载之十:FPGA开发基本流程(1) FPGA开发基本流程(2) FPGA是可编程芯片,因此FPGA的设计方法包括硬件设计和软件设计两部分.硬件包括FPGA芯片电路. 存储器.输入输出接口电路以及其他设备,软件即是相应的HDL程序以及最新才流行的嵌入式C程序. 目前微电子技术已经发展到SOC阶段,即集成系统(Integrated System)阶段,相对于集成电路(IC)的设计思想有着革命性的变化.SOC是一个复杂的系统,它将一个完整产品的功能集成在一个芯片上,包括

FPGA开发全攻略——概念篇

原文链接: FPGA开发全攻略连载之一:FPGA为什么这么热? FPGA开发全攻略连载之二:为什么工程师要掌握FPGA开发知识? FPGA开发全攻略连载之三:FPGA基本知识与发展趋势(part1) FPGA开发全攻略连载之四:FPGA基本知识与发展趋势(part2) 写在前面 2008年,我参加了几次可编程器件供应商举办的技术研讨会,让我留下深刻印象的是参加这些研讨会的工程师人数之多,简直可以用爆满来形容,很多工程师聚精会神地全天听讲,很少出现吃完午饭就闪人的现象,而且工程师们对研讨会上展出的

上位机串口控制FPGA开发板LED

实验目的: 上位机软件通过串口控制FPGA开发板上4个LED灯的亮灭,同时数码管显示LED灯亮的个数,实验效果如下图. 实验背景: 一直都想学习FPGA,这次算是入门了,我是看书学习的,所以FPGA的代码是参考着书本上的修改的,其实很高兴,因为这个实验是我自己发散出来的,书上的开发板和我用的开发板不一样,并且小软件也是自己用C#写的,总之,挺开心吧,本着开源的精神,所有的上位机代码和FPGA程序上传,如有需要请自行下载(点此下载).工作就没时间写教程之类的,简单的介绍一下吧 硬件平台: Cycl

iOS开发多线程篇—NSOperation基本操作

iOS开发多线程篇—NSOperation基本操作 一.并发数 (1)并发数:同时执?行的任务数.比如,同时开3个线程执行3个任务,并发数就是3 (2)最大并发数:同一时间最多只能执行的任务的个数. (3)最?大并发数的相关?方法 - (NSInteger)maxConcurrentOperationCount;- (void)setMaxConcurrentOperationCount:(NSInteger)cnt; 说明:如果没有设置最大并发数,那么并发的个数是由系统内存和CPU决定的,可能

FPGA开发全攻略——综合

原文链接: FPGA开发全攻略连载之十二:FPGA实战开发技巧(7) FPGA开发全攻略连载之十二:FPGA实战开发技巧(8)(原文缺失,转自:FPGA开发全攻略—工程师创新设计宝典) 5.3.4 综合高手揭秘XST的11个技巧 作者:Ricky Su(www.rickysu.com) 技巧1.XST 主要参考资料:XST User Guide (ISE 安装目录doc 中的xst.pdf)技巧2. 辅助参考资料:WP231 - HDL Coding Practices to Accelerat

FPGA开发全攻略——配置电路

原文链接: FPGA开发全攻略连载之十二:FPGA实战开发技巧(9) FPGA开发全攻略连载之十二:FPGA实战开发技巧(10) FPGA开发全攻略连载之十三:FPGA实战开发技巧(11) 5.5 FPGA相关电路设计知识 FPGA的相关电路主要就是FPGA的配置电路,其余的应用电路只要将外围芯片连接到FPGA的通用I/O管脚上即可. 5.5.1 配置电路 FPGA配置方式灵活多样,根据芯片是否能够自己主动加载配置数据分为主模式.从模式以及JTAG模式.典型的主模式都是加载片外非易失( 断电不丢