fpga

正点原子FPGA按键消抖笔记

自闭症网瘾萝莉.ら 提交于 2020-03-12 07:50:46
出自正点原子《开拓者FPGA开发指南V1.3》第九章按键控制蜂鸣器实验 寄存器:key_flag 按键数据有效信号 寄存器:key_value 按键消抖后的数据 寄存器:delay_cnt 延时计数 系统时钟:50MHz 思路: 一直检测按键状态,一旦按键状态发现变化,给delay_cnt计数器赋初值100_0000,也就是20ms计数。按键状态不发生改变,那么计数器开始递减计数,直到计数器减到1时,说明按键状态稳定保持20ms,此时给出一个时钟周期的按键有效通知信号key_flag,并将按键数据寄存器key_value锁存输出。 Verilog硬件语言和C语言的不同之一,C语言是顺序语言,如果给出一条赋值语句,左值会立刻变化,而Verilog语言的一条幅值语句需要一个时钟周期改变幅值,也就是一个时钟周期内,所有寄存器的值都不会被改变,只有下一个时钟信号到来,寄存器的值才会被改变。 module key_debounce( input sys_clk, input sys_rst_n, input key, output reg key_value, output reg key_flag ); reg [31:0] delay_cnt; reg key_reg; always @(posedge sys_clk or negedge sys_rst_n)begin if(!sys

FPGA状态机跑飞问题记录

六月ゝ 毕业季﹏ 提交于 2020-03-10 13:20:32
(1)状态机跑飞的原因 两种可能:1)状态机的输入信号与本地时钟不同步,出现了冒险竞争现象,造成状态机死锁。 2)状态机综合后没有生成一旦进入非有效状态便立即复位,然后进入某个有效状态的电路。 解决办法:1)把外部引入的异步输入信号,做同步处理,作为本状态机的输入。 2)用综合指令或者约束,强行规定综合后必须生成一旦进入非有效状态便立即复位随即进入有效状态的电路。 输入信号是指除了从当前状态反馈信号以外的信号,即从状态机外部输入的信号。 是否会产生一旦进入非有效状态立即进行强制复位的电路,并不会因为你在状态机中加入when others=> state1 综合后就一定生成这样的电路。若想生成这样的电路,必须在综合时要通过综合指令(约束)命令综合器强制生成,才会生成的。 原文链接:https://blog.csdn.net/xiaoxiao_rabbit/article/details/102751545 (2)问题记录 本次的状态机跑飞的原因是第一种,即:状态机的输入信号与本地时钟不同步,出现了冒险竞争现象,造成状态机死锁 实验:使用状态机按键防抖,实现二进制累加,二进制的表现形式为四个LED灯 最初代码:(注:变量abcd没有任何意义,仅在调试中使用) 1 module key_detect( 2 clk , 3 rst_n , 4 key , 5 led , 6 abcd ,

FPGA之道(59)时空变换之时域优化

有些话、适合烂在心里 提交于 2020-03-08 05:34:58
文章目录 前言 时空变换之基本概念 时空概念简介 时空变换方案 时空变换之时域优化 逻辑化简 逻辑化简讨论 空域方面的颠倒现象 时域方面的颠倒现象 逻辑化简总结 结构调整 分布调整 思路转换 提前进位法提高多级累加器的工作频率 布局调整 前言 疫情已经持续到了3月,今天是三月初,前几日在修改论文,想来今天是新的一月的开始,应该更新博客了,日子虽然都是数字,但有些日子注定拥有特殊的记号。 本来想着应该更新数的表示以及数的运算,但是确实在FPGA中完成原本我们认为十分简单的东西具有一定的难度,十分的繁琐,还是更新下FPGA设计的思路,今天是有关时空转换的,为了博文不能太长,选择分为几部分来更新。 本文依然选自《FPGA之道》,让我们站在巨的肩膀上,开始冲鸭。 时空变换之基本概念 时空概念简介 时钟速度决定完成任务需要的时间,规模的大小决定完成任务所需要的空间(资源),因此速度与规模其实就是FPGA设计中时间与空间的体现。对于FPGA设计来说,时间和空间这两因素就好比阴、阳之于太极,乾、坤之于八卦一样,它们相互依存却又相互制约,唯有达到平衡,方可天下太平。 如果要提高FPGA设计的时钟速率,那么每一个时钟周期内组合逻辑所能做的事情通常就越简单,因此为了实现同样的功能往往会造成资源的膨胀。与此同时,由于时钟速度越快,对资源排列关系的要求就越紧凑,可是资源的膨胀会导致资源占用率提高

【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)

匆匆过客 提交于 2020-03-06 09:55:49
声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org) 所有,如需转载,请注明出处 http://www.cnblogs.com/kingst/ 前言 从今天开始,NIOS的学习征途正式拉开了。对于NIOS的学习爱好者,我相信这是一个福音,我将毫无保留的将我对NIOS的研究成果分享给大家。我之所以采用博客这种方式,就是想跟大家充分的交流,大家可以给我留言,也可以在Ourdev中提出问题,我将尽我的全力为大家解决问题。由于本人水平有限,如果有我解决不了的问题,还请高手们多多帮忙,我相信能为大家解决问题是一件很快乐的事情,你不会错过的。 废话少说,我们马上进入正题。今天是第一节,我首先说一下学习NIOS都需要哪些前提条件。听到这,初学者可以会有些害怕了,难道学习NIOS还要条件?是的,需要条件,不过这些条件并不是很高,只要大家努力,这些条件都不是问题。 具有一定的单片机基础; 具有一定的C语言编程能力; 了解Quartus II的开发流程; 一块开发板; 就这么多,大家觉得难么?首先说说第一条,具有一定的单片机基础,这个条件是要有的。单片机的基础在NIOS II学习中体现在它的寄存器操作方式上,这种操作方式是通用的,不管是ARM,DSP,还是51都是一样的,你只要有一种单片机的实践经验就没问题了。再说第二条,这一条没什么可争议的

【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)

。_饼干妹妹 提交于 2020-03-06 09:55:20
为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人。 首先需要声明一点,下面部分问题来自网络,如果版权问题,请及时通知,我将会将其删除 在此提几点要求和规定: 1.此贴是NIOS II FAQ,所以不收录其他相关内容; 2.大家通过回帖方式进行提问,如果有其他人可以解决,也是通过回帖方式进行解决; 3.问题解决以后,我会将其编入这个贴内,然后将问题跟帖删除,避免跟帖过多的影响。 4.禁止在回帖中涉及与NIOS II无关内容,一经发现立即删除。 -------------------------------------------华丽的分割线---------------------------------------------------------------------- 1.NIOS能做浮点运算么? 答:NIOS可以进行浮点运算,完全可以替代MCU,时钟可以跑到100Mhz,比ARM7还要快,ARM7时钟一般为72Mhz左右。 2.NIOS是否可以不使用SDRAM和并行FLASH? 答:首先说明一下,SDRAM是用来运行程序的,FLASH是用来存储程序代码的(SDRAM掉电丢失,FLASH则不会),每次上电的时候,都需要将FLASH中的程序代码放到SDRAM中,然后再运行。

创龙基于Xilinx Artix-7系列FPGA处理器的Micro SD卡、RS485

心不动则不痛 提交于 2020-03-05 16:55:23
TLA7-EVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能。核心板尺寸仅70mm*50mm,底板采用沉金无铅工艺的6层板设计,专业的PCB Layout保证信号完整性的同时,经过严格的质量控制,满足工业环境应用。 Micro SD卡 CON 8 是Micro SD卡接口,主用于外接大容量数据存储,硬件及引脚定义如下图: RS485 CON 5 为RS485串口,使用3位接线端子。硬件及引脚定义如下图: 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/3188641

FPGA之道(60)时空变换之空域优化

僤鯓⒐⒋嵵緔 提交于 2020-03-05 08:23:17
文章目录 前言 时空变换之空域优化 逻辑化简 资源合并 模块复用之分时复用 静态重构 动态重构 思路转换 前言 这是三月的第二篇博客,不得不说的是,有点儿怀念在实验室学习写博客的感觉(当然,并不怀念项目缠身,整日被催进度的噩梦日子),两个大屏幕,一台换了固态硬盘,因此还算流畅的台式电脑,简直不要太爽。平日里最讨厌用笔记本电脑,是因为觉得笔记本的键盘和鼠标很不人性化,这下好了,关键时期,笔记本成为了最依赖的东西,用笔记本打字也顺畅了,都是惯得。哈。当然最重要的还是学习氛围,在家是容易懒惰的,我宁愿打打游戏度日,也不愿坐在桌子前去思考一些复杂的问题,这是大脑惰性的选择。 好啦,这些日子也只能想想啦,也许这样的日子,哪怕一天也不会再有啦,我总是顾虑的,考虑到最坏的情况,疫情结束恐怕还是遥遥无期,毕竟学校不是一个随便开玩笑的地方,人口大量聚集,一起上课,一起吃饭,集体宿舍,这都给传染病提供了最好的传染途径,因此,疫情不结束,恐怕难以开学,更何况开学之后还有很多事情要处理,要么关乎毕业,要么。。。 进入正题,上篇博客是关于时域优化的内容, 回忆一下吧。 时域优化也就是对时序上的问题进行优化,例如我想更快的时钟去处理事件,而更快的时钟要求更精进的设计以及硬件条件要跟得上,假设硬件条件(FPGA)能跟得上,那么剩下的问题就是设计的问题了。 设计的问题,包括冗余的问题,这就需要对逻辑表达式进行化简

FPGA最简开发流程

馋奶兔 提交于 2020-03-04 18:37:12
设计定义 (这个设计要做什么) ↓ ↓     → 原理图 (早期简单设计) 设计输入 → HDL (用硬件描述语言进行描述)      → IP (稍复杂的设计,用厂家提供的IP核) ↓ ↓ 分析综合 (分析设计所描述的逻辑功能,并报告设计中语 ↓     法核逻辑错误) ↓ 功能仿真 ↓ ↓                板级调试 ↓                 ↑ 布局布线 ↓→→ 时序仿真 →→→ 板级验证      →→ 动态时序分析 ↑ 仿真的作用: 1.验证你所设计的逻辑是否正确; 2.辅助分析设计里面存在的问题; 3.协助了解我们设计的代码对应的逻辑电路运行时的信号波形。 —————————————————————————— 来自小梅哥培训视频 来源: CSDN 作者: Deilay 链接: https://blog.csdn.net/qaz821915893/article/details/104651454

FPGA学习总结2(VGA rom的设置)

℡╲_俬逩灬. 提交于 2020-02-29 01:59:11
存储行列颠倒 第一个总结来自 博文 当需要显示大小规格如下图所示高为32bit 宽为224bit的字符时 一般可以设置存储字符数据的rom的尺寸大小为位宽32,深度224 rom的尺寸如下图所示 由于这些字符的像素数据是通过取字模的方式得到的,而且有 按列扫描 ,存储 从高位到低位 的特质 如上图所示,字符的第一列共32位,存在存储器的地址位addr0的地方,第二列存在addr1的地方。所以深度为224.当从存储器中取数的时候,扫描屏幕的一行,对应存储器中一列(第一行的像素数据对应着每一个rom_data的最高位)如上图中剪头所示,例如:显示字符的第一行,访问的存储器依次为:addr0,rom_data[31];addr1,rom_data[31];addr2,rom_data[31];…;addr223,rom_data[31]; 因此,这个功能实现的时候,显示控制模块如果设置M计显示的行数(注意,这个行数不是总的行数计数,也不是有效显示行数的计数,而是跟显示图片尺寸大小的高有关的计数),N计显示的列数。 那么在扫描某一行时,M应该指向rom_data中的某一位,N则随着其值的变化指向各列对应的Addr。 对于第二行,M=rom_data[30],第二行的第三个像素,N指向Addr2。 存储行列没有颠倒 如果需要存储16x16x1bit的图像,且这样的图像有6幅