FPGA十年老鸟
十年FPGA码农,十年陈酿十年香!
展开
-
FPGA经验谈系列文章——9、块储存器的高效使用
如果只想使用1Kb怎么办?因此我们尽量规划好存储资源的使用,特别是在存储资源紧张的时候合理规划,不要浪费,小存储需求可以采用SLICEM中的LUT构建的分布式RAM来解决。在BlockRAM元件中还存在一些FIFO的逻辑控制电路,包括写指针、读指针、跨时钟域处理的电路,这些都是属于BlockRAM中的内嵌资源,当例化FIFO18E1或者FIFO36E1原语的时候,则会被使用到,同时我们看到,两个FIFO18E1不能同时例化到同一个BlockRAM中,因为BlockRAM内只有一套FIFO的逻辑控制电路。原创 2024-11-21 14:54:51 · 890 阅读 · 0 评论 -
FPGA经验谈系列文章——8、复位的设计
剑法往往有着固定的招式套路,而写代码似乎也存在类似的情况。就笔者所经历的诸多项目以及所接触到的不少工程师而言,大家在着手书写时序代码之前,几乎都会习惯性地先写上这样一个 “开头”,当然了,笔者自己在很长一段时间内也是如此行事的。这种写法在绝大多数的情形下确实不会引发什么问题,然而,存在并不一定就意味着完全合理。原创 2024-11-21 14:38:35 · 591 阅读 · 0 评论 -
FPGA经验谈系列文章——7、预估逻辑级数
了解一些常用模块的逻辑级数是比较重要的,特别是对于时钟频率要求高的时候,此时一般对于代码的逻辑级数具有非常高的要求,不能超过多少级,对于某些可能导致逻辑级数高的代码需要进行提前处理。只有了解了大致的逻辑级数的判断,设计起来则了然于胸,知道如何去优化。因为这里只是总结了Kintex-7系列的FPGA,其他系列的FPGA内部结构以及芯片制程都有所不同不能直接套用Kintex-7的结论,读者可以根据自己使用的FPGA器件也去进行一些总结,知道这些逻辑级数信息将有助于设计出更高效的代码。原创 2024-11-20 15:01:05 · 566 阅读 · 0 评论 -
FPGA经验谈系列文章——6、常用代码的逻辑级数预估(条件语句)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-11-20 14:52:56 · 203 阅读 · 0 评论 -
FPGA经验谈系列文章——5、常用代码的逻辑级数预估(比较器)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-11-18 23:09:16 · 76 阅读 · 0 评论 -
FPGA经验谈系列文章——4、常用代码的逻辑级数预估(加法器)
现在我们知道,想要FPGA的主频跑得高,那么工程的逻辑级数要尽量低才行,但一个大的逻辑工程如此的庞大,代码已经编写完成再来考虑逻辑级数那就有一点晚了,因为很多功能都是时序强相关,改了一个地方可能牵扯到更多的地方要跟着改,工程大了改起来就痛苦了。因此想要FPGA设计的逻辑级数低,从每个代码块就需要开始注意了,因此可以把常见的一些语法块所综合的逻辑级数总结起来。这样我们不仅大致知道逻辑级数的范围,同时优化代码的时候也知道从哪里下手。原创 2024-11-18 21:01:05 · 284 阅读 · 0 评论 -
FPGA经验谈系列文章——时序不过怎么办
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——时序不过怎么办前言如果设计验证和测试已经接近尾声,偶尔进行小改可能出现几条时序违例的情况逻辑级数过大引起的某些路径经常性违例扇出过大资源拥塞vivado版本过低大范围时序违例,时序违例路径成百上千。用了上述的一些方法不管用总结前言跟FPGA打交道这么多年,多多少少总会碰到一些时序问题。时钟越来越高,资源利用率越来越多,到了一定时候,免不了时序报表会爆红。总结下来大概有如下原因:1、 时钟频率过高2、 .原创 2022-03-19 21:28:25 · 15132 阅读 · 4 评论 -
FPGA经验谈系列文章——FPGA开发方向以及算法开发模型
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——FPGA开发方向以及算法开发模型前言接口方向算法方向总结前言FPGA开发笼统的说可以分为两个方向,一个是接口方向、一个是算法方向。接口方向接口方向可不是简单的uart、IIC、SPI等这些简单接口,这些东西不足以支撑一个方向,大部分都是基于serdes的高速复杂接口,例如PCIE、SATA等。还有以太网,甚至可能不太复杂的SDRAM控制接口。这些接口简单么? 简单,不是都有IP核可以调用么,IP核是个好原创 2022-02-05 09:54:02 · 9185 阅读 · 5 评论 -
Xilinx FPGA资源解析与使用系列——DSP48E使用实例(四)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Xilinx FPGA资源解析与使用系列——DSP48E使用实例(四)实现功能代码写法用DSP48E1实现资源对比分析综合结果总结)实现功能前面一个博文我们介绍了DSP48E1资源实现了一个DSP48E1实现2个24bit的累加器的功能P1 = P1+ B1 *C1P2 = P2+ B2 *C1C1 = -1 OR 1现在,我们在这里用一个DSP48E1来实现P = P+ B *C (P=32bit B = 16bit原创 2021-12-18 23:16:05 · 7983 阅读 · 0 评论 -
Xilinx FPGA资源解析与使用系列——DSP48E使用实例(三)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Xilinx FPGA资源解析与使用系列——DSP48E使用实例(三)前言实现功能一般写法用DSP48E1实现总结)前言前面我们介绍了DSP48E1资源可以非常的灵活的使用,而且也给出了它的原语模型,现在我们用一个例子来说明它的妙用。实现功能在扩频通信中,例如接收GPS信号,我们一般需要进行相干累加,例如将接收的基带信号与本地PN码进行相乘并且累加,每隔1ms截取结果,并将累加器清0,然后重新累加。一般写法这里给出这个相关器原创 2021-12-18 21:59:32 · 8868 阅读 · 6 评论 -
FPGA经验谈系列文章——FPGA资源置换
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——FPGA资源乾坤大挪移前言LUT不够,DSP 富余DSP不够,LUT富余DSP不够,BRAM富余FF不够,LUT富余FF不够,RAM足够BRAM不够,LUT足够总结前言我们知道了FPGA的资源主要有如下种类:1、LUT2、FF3、BRAM4、DSP有没有碰到过某类资源不够的情况,例如LUT资源就是差这么一丢丢,但如果因此换一个更大的片子,成本又会增加很多。那有没有办法解决呢,有的,且看一下资源之间是原创 2021-12-13 21:36:59 · 9256 阅读 · 3 评论 -
FPGA经验谈系列文章——FPGA资源评估
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——FPGA资源评估前言如何评估哪些资源需要评估怎么快速的进行资源统计前言大家在项目中一般会要遇到需要资源评估的情况,例如立了新项目,前期需要确定使用什么FPGA片子,做到成本越小越好。这就要对即将要实现的功能进行下资源评估。如何评估1、你需要一个参考工程一般来说你首先需要一个参考工程,不会什么代码都没编写的时候就进行资源评估,再怎么厉害也不至于凭空就能想象出一个大型工程会用到多少资源。所以我们在做一个全原创 2021-12-13 21:16:02 · 10599 阅读 · 0 评论 -
FPGA经验谈系列文章——那些曾经让我发狂的BUG
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——那些曾经把我逼疯的BUG前言跨时钟域处理不对问题组合逻辑产生锁存器问题外围器件协议理解不深的问题接口时钟和数据相位问题FPGA 核电压不够问题总结前言工作快十年了,不知道各位FPGAer是不是都顺风顺水的过来了,研发期间有没有经历过那些奇奇怪怪的问题。我这里所说的奇怪的问题,不是简简单单通过chipscope就能抓出来的,虽然我所经历的大部分BUG都可以通过抓数获取到蛛丝马迹。奇怪的问题一般都源于自己的认知不原创 2021-12-12 23:29:02 · 6746 阅读 · 8 评论 -
FPGA经验谈系列文章——全局复位是否有必要
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——全局复位是否有必要前言Global Reset Isn’t Timing-CriticalDoes It Really Matter?Automatic Coverage of the 99.99% of CasesStrategy for the 0.01% of CasesReset Costs More Than You Think!总结最后要说的前言在这里首先推荐两篇关于XILINX复位的白皮书文章,原创 2021-12-11 14:08:55 · 7151 阅读 · 5 评论 -
FPGA经验谈系列文章——vivado时序报表解读
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——vivado时序报表解读前言时序报表前言前面我们已经对静态时序分析的一些概念做了介绍,接下来我们以实际的时序报表来解读,vivado工具是如何进行时序分析的。时序报表我们把静态时序分析(二)中的时序路径模型图贴到这里用于参考首先我们打开时序报表我们来看看Path 65 这条路径的时序信息。首先是summary表里面告诉我们slack有7.89ns, source端,destination端。时钟原创 2021-11-29 23:21:34 · 12151 阅读 · 0 评论 -
FPGA经验谈系列文章——静态时序分析(三)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——静态时序分析(三)前言为什么FPGA设计只考虑Setup时间是否满足最高频率相关性从FPGA 数据手册中查询一些基本的时序信息从时序报表中得到一些信息总结前言前面两节说了这么多,无非就是想引出以下两个公式Setup Slack = T - Tsu - Tco -TdataHold Slack = Tco +Tdata - Th很显然,我们实际应用中,建立时间余量Setup Slack 和 保持时间余原创 2021-11-28 22:48:54 · 5758 阅读 · 1 评论 -
FPGA经验谈系列文章——静态时序分析(二)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——静态时序分析(二)四种时序路径时序路径段接上一篇,上一篇是一个ALTERA的培训PPT,这一篇是有一个XILINX的培训PPT,其中里面大部分概念和内容是相同的,在这里仅列出几页ALTERA的PPT没讲到的,毕竟我是以xilinx vivado作为开发工具,后续我会在一个实际的时序分析报表中会涉及到这些概念。四种时序路径1、四种类型的时序路径有四种类型的时序路径如下图所示,第一类路径为外部器件的时钟端到F原创 2021-11-28 21:58:00 · 5703 阅读 · 1 评论 -
FPGA经验谈系列文章——静态时序分析(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——静态时序分析前言二、时序分析内容前言静态时序分析是一个理论比较深的专题,曾经也是困扰我很久。而且里面的东西都是看了忘,忘了看。而且静态时序分析是很容易出现在面试题中的一个知识点。这里我找到了很早以前altera的一份培训资料,写的很好,照着他的PPT一边展示一边注释,以便于加深理解二、时序分析内容如何进行时序验证?一般来说,我们仿真是只进行功能仿真的,而功能仿真是不带时序相关信息的。因此FPGA I原创 2021-11-27 23:47:34 · 8498 阅读 · 5 评论 -
FPGA经验谈系列文章——3、逻辑级数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Xilinx FPGA开发tips系列——前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的原创 2021-11-27 20:10:21 · 13648 阅读 · 22 评论 -
FPGA经验谈系列文章——2、写代码心中要有电路?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档FPGA经验谈系列文章——写代码心中要有电路?前言心中无需电路的情况心中有电路的情况总结前言很早很早以前,我就从无数个帖子中看到一些这样的论述。例如“verilog是一个硬件描述语言,写代码的时候心中要知道其对应的电路是什么”,工作的前面几年,我完全不理解为什么会有这样的论述,我verilog代码写的好好的,功能也能实现,根本不需要在意什么电路之类的。工作久了之后,慢慢才发现这句话还是有一定的道理,慢慢有一点领悟了吧。心中无需电路的原创 2021-11-23 23:55:16 · 6487 阅读 · 6 评论 -
FPGA经验谈系列文章——1、感悟和目录
FPGA经验谈系列文章——前言和目录前言工作内容最后前言转眼间,工作也即将十年时间,也是做FPGA开发的十年,虽然我总是认为我一开始走错了路,我应该去搞互联网的o( ̄︶ ̄)o。但也确实做到了干一行爱一行吧,搞FPGA我还是很认真的,这点自我认同还是有的。搞FPGA尽管没有互联网那么多金,但也有其优点:1、积累的东西也没这么容易过时。例如十年前的verilog语言跟现在的verilog语言几乎没什么变化,十年前数字信号处理和现在的也没什么变化。知识相对稳定。2、入门有门槛,不像软件有台电脑有编程语法原创 2021-11-21 23:41:41 · 7044 阅读 · 2 评论