
FPGA之道精选
本专栏文章选自于以及概括于《FPGA之道》这本书的内容,旨在追寻作者的踪迹来提升自己,同时让更多的人能看到这本“好”书。
李锐博恩
退网中
展开
-
FPGA之道(84)功能仿真之Verilog Test Fixture
文章目录前言Verilog Test Fixture“Hello world”之Verilog Test Fixture待仿真设计仿真示例示例详解仿真结果继承描述语法时间相关语法系统时间单位及精度设定延时等待语法有限等待语句无限等待语句变换等待语句边沿等待语句条件等待语句赋值等待语句阻塞赋值等待语句非阻塞赋值等待语句时钟激励语法占空比50%时钟产生方法高、低电平参数时钟产生法占空比、周期参数时钟产...原创 2020-04-15 20:50:59 · 3061 阅读 · 0 评论 -
FPGA之道(83)功能仿真之仿真语法(Graphic Waveform )
文章目录前言仿真语法Graphic Waveform数字波形简介从实际到仿真实际系统检测软件仿真模拟“Hello world”之Graphic Waveform待仿真设计一些绘制波形的操作添加端口创建时钟信号钳制与释放信号电平翻转生成随机序列总线设置一些观察波形的操作波形缩放总线观察添加时标边沿寻找波形仿真结果分析及重要注意事项一、如果判断仿真结果对与错?二、仿真0时刻的意义。三、“边沿对边沿”的...原创 2020-04-14 22:01:30 · 2370 阅读 · 0 评论 -
FPGA之道(82)功能仿真之仿真原理
文章目录前言功能仿真篇仿真原理串行模仿并行思路分析有限模仿无限思路分析组合逻辑仿真原理时序逻辑仿真原理HDL的仿真原理仿真时间与物理时间前言本文摘自《FPGA之道》。功能仿真篇功能仿真是所有仿真类型中最重要的,也是占项目开发比重最大的仿真,对任何一个项目的开发来说几乎都是必须的,所以在此单独使用一个篇章对它进行介绍。因此,本篇所指的“仿真”若无特别说明,皆泛指功能仿真。仿真原理功能仿真...原创 2020-04-14 12:58:11 · 2744 阅读 · 0 评论 -
FPGA之道(81)静态时序分析(七)根据时序报告修改设计(基于ISE的UCF文件语法)
文章目录前言根据时序报告修改设计时序分析报告示例待分析设计时序约束文件时序报告简介报告综述内部时钟报告输入接口报告输出接口报告输出数据延迟报告输出时钟延迟报告同步输出综合报告常见问题及修改可以不改的一些问题常见时序收敛的手段逻辑化简&结构调整分布调整缓存降频复用&逻辑拆分&流水线&使能链模块输入、输出寄存处理时钟上树DCM、PLL相位调整使用延迟模块使用综合约束改变...原创 2020-04-13 19:32:22 · 4970 阅读 · 0 评论 -
FPGA之道(80)静态时序分析(六)常用时序约束介绍(基于ISE的UCF文件语法)
注意,时序分析环节仅仅是用来对FPGA设计的实现进行评估并给出相应的结果报告,它并不会对FPGA设计进行改变。但如果我们在使用诸如ISE、Quarters这样的集成开发环境时,如果在映射环节还没开始前就添加一些时序约束信息,则这些编译器每完成一部分布局布线工作,便会调用相应时序分析工具进行一次时序分析,如果发现分析结果不符合要求,则会返回重来。像这样,编译器经过多次反复努力,力求达到时序约束中的要求,从而给我们一种“时序分析改变FPGA实现”的错觉。原创 2020-04-06 14:47:44 · 5174 阅读 · 0 评论 -
FPGA之道(79)静态时序分析(五)外部接口的相关时序分析
文章目录前言外部接口相关时序分析功能仿真对接口分析的帮助纯输入接口纯时钟输入接口纯同步输入接口纯异步输入接口同步输入异步采集纯输出接口纯时钟输出接口纯同步输出接口纯异步输出接口异步生成同步输出可完全拆解复合接口不可完全拆解复合接口纯组合逻辑接口输入、输出直接共用时钟接口输入为主的直接共用时钟接口输出为主的直接共用时钟接口输入、输出间接共用时钟接口前言本文摘自于:《FPGA之道》。外部接口相关...原创 2020-04-04 22:22:21 · 2304 阅读 · 0 评论 -
FPGA之道(78)静态时序分析(四)内部时钟相关时序分析
文章目录前言内部时钟相关时序分析单时钟域时序分析多时钟域时序分析同源时钟的时序分析PLL、DCM的时序分析相关时钟的时序分析数据用作时钟的时序分析异步逻辑时序分析多时钟驱动同一时钟域的时序分析Latch相关的时序分析前言本文摘自于:《FPGA之道》。内部时钟相关时序分析时序分析的情形可以概括分为两大类:一类是和内部时钟相关的时序分析,它用来保证FPGA内部逻辑可以对数据进行正确处理;另一类...原创 2020-04-04 21:49:38 · 2576 阅读 · 0 评论 -
FPGA之道(总)推荐下这本书以及传递下作者的原话
还记得我第一次读这本书的时候,大概是研一下学期或研二的时候,去学校图书馆看到的,当时学校也仅有这一本书,很厚很大的一本书,看到这本巨作,爱不释手。由于自己也比较喜欢买书,想着下血本网上买一本属于自己的,就搜了下这本书,发现已经买不到了(现在倒是有很多盗版),当时就算是盗版也非常贵。还记得当时,桌子上放着借来的这本书,还有点不好意思,怕别人说自己装逼,可我真的是在认真研读这本书,由于后来由于项目...原创 2020-03-31 15:56:48 · 7953 阅读 · 161 评论 -
FPGA之道(77)静态时序分析(三)同步时序逻辑的分析原理
文章目录前言同步时序逻辑的分析原理逻辑锥的概念逻辑锥的划分逻辑锥的求解建立时间求解原理保持时间求解原理一般逻辑锥的求解一般建立时间求解一般保持时间求解前言同步时序逻辑的分析原理FPGA设计中最最常见并且占FPGA设计比重最大的就要数同步时序逻辑了,那么,经过了上一章节中示例的分析,接下来就让我们来简单了解一下针对同步时序逻辑的时序分析原理。逻辑锥的概念以直角三角形的一条直角边所在直线为旋...原创 2020-03-26 17:46:50 · 2548 阅读 · 0 评论 -
FPGA之道(76)静态时序分析(二)一道时序分析的例题
文章目录前言一道时序分析的例题解答一:能否正确工作分析解答二:最大时钟速率分析延伸二:最小时钟速率?解答三:保持时间不足情形分析前言本文来自于《FPGA 之道》,在正式讲解时序分析之前,作者给出了一道时序分析的例题,体会下人工分析时序的例子,挺有意思,一起看下。时序分析在FPGA当中,算是有点烧脑的内容,通过都是通过画图的方式理解,比较通俗,毕竟描述起来比较抽象,但是今天这篇博文不通过这种方...原创 2020-03-25 21:14:38 · 4985 阅读 · 5 评论 -
FPGA之道(75)静态时序分析(一)基本概念介绍
文章目录前言基本概念介绍常用时间参数介绍tsu建立时间要求建立时间余量th保持时间要求保持时间余量tcoMaximum frequency (or Minimum period)线延迟与门延迟影响延迟的因素温度与电压温度对延迟的影响电压对延迟的影响三种工况时钟信号的偏差描述时钟精度时钟漂移jitterskewslew rate前言本文来自于《FPGA之道》,一起看作者对于时序分析这一专题的理解...原创 2020-03-24 22:39:45 · 5205 阅读 · 1 评论 -
FPGA之道(74)Verilog生成语句
为什么要把这一节单独拎出来,因为个人原因,平时觉得用的Verilog生成语句,generate for居多,generate if以及generate case没用过,因此,也没在意过。原创 2020-03-24 11:57:44 · 2564 阅读 · 1 评论 -
FPGA之道(73)设计方法学与FPGA程序设计的境界
文章目录前言设计方法学讨论FPGA程序设计的境界前言本文节选自《FPGA之道》。设计方法学讨论当实现一个FPGA项目时,我们的主要工作其实不是敲击键盘编写出华丽丽的HDL代码,恰恰相反,思考如何编写出恰当的HDL代码会占用更多的时间。这就好比写作文前要先打草稿、先列大纲,写作过程中再对写作思路不断修正、斟字酌句一样,在开始FPGA项目的实现以及实现FPGA项目的过程中,也是少不了类似的过程...原创 2020-03-22 11:05:35 · 2152 阅读 · 0 评论 -
FPGA之道(72)提高设计的综合性能(四)提高设计的移植性与保密性
文章目录前言提高设计的移植性保持良好的代码风格按照硬件依赖性区分代码少使用专有IP核提高设计的保密性动态配置参数法采用具有保密性的技术前言本文节选自《FPGA之道》。提高设计的移植性移植是一个和重用有些类似的问题,不过还是有些区别。移植主要指的是系统级的拷贝、修改,而重用则主要指的是部分拷贝、修改。FPGA设计经常会涉及到移植的问题,例如公司第一代和第二代产品之间,它们总的来说大同小异,但...原创 2020-03-22 11:02:45 · 1584 阅读 · 0 评论 -
FPGA之道(71)提高设计的综合性能(三)提高设计的重用性与易改性
文章目录前言提高设计的重用性构建自己的IP库提高设计的易改性常量参数化模块设计结构参数化模块设计总线参数化规模参数化功能参数化参数化设计的参数管理与组织参数相关性可传递的模块参数化例化参数文件结构前言本文节选自《FPGA之道》。提高设计的重用性如果打算长期从事FPGA项目开发的话,那么你总不希望自己之前花了那么多精力编写、仿真、测试通过的HDL代码都是一次性用品吧。通常来说,我们都希望自己...原创 2020-03-22 10:58:38 · 1536 阅读 · 0 评论 -
FPGA之道(70)提高设计的综合性能(二)提高设计的自测性
文章目录前言提高设计的自测性增加测试管脚状态寄存器集虚拟示波器ChipScope&SignalTap自己编写VirtualScope编写激励发生测试模块前言本文节选自《FPGA之道》。提高设计的自测性也许在FPGA设计的板级测试之前,我们已经做了充分的功能和时序仿真,但是仿真毕竟是仿真,它与实际情况之间还是或多或少的存在一定的差距,因此基于FPGA的整个硬件系统必须进行充分的实际上...原创 2020-03-22 00:48:06 · 1504 阅读 · 0 评论 -
FPGA之道(69)提高设计的综合性能(一)提高设计的鲁棒性
文章目录前言提高设计的鲁棒性一些影响设计正常工作的原因非法输入环境干扰应对方法之输入预处理应对方法之RAM替换FIFO应对方法之状态机超时跳转应对方法之三模冗余应对方法之全局复位应对方法之静态重构应对方法之动态重构前言本文节选自《FPGA之道》。提高设计的鲁棒性鲁棒即是英文Robust的音译,而鲁棒性也就是健壮性、强壮性的意思。这个世界充满着意外,充满着不可预料的东西,因此,为了让FPGA...原创 2020-03-22 00:44:14 · 2751 阅读 · 0 评论 -
FPGA之道(68)原语的使用
文章目录前言原语的使用什么是原语需要使用原语的情况时钟相关原语差分输入、输出原语接口相关原语用原语表示IP核的好处UDP 简介前言本文节选自《FPGA之道》。原语的使用什么是原语原语,英文名称primitive,是FPGA软件集成开发环境所提供的一系列底层逻辑功能单元。由于是底层逻辑功能单元,所以它们往往跟目标FPGA芯片以及芯片厂商紧密相关,因此不同厂商、不同器件的原语往往不能通用。当...原创 2020-03-22 00:32:50 · 15054 阅读 · 2 评论 -
FPGA之道(67)代码中的约束信息(四)状态机的相关约束
文章目录前言状态机的相关约束fsm_extractfsm_stylefsm_encodingenum_encodingsafe_implementationsafe_recovery_state前言这是这个话题的第四篇,最重要的前言是本文节选自:《FPGA之道》。状态机的相关约束通常来说,编译器默认的状态机相关约束已经足够满足我们的需求,但也有的时候我们需要对个别状态机做“特殊关照”。此时...原创 2020-03-22 00:21:38 · 4057 阅读 · 2 评论 -
FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束
文章目录前言存储器的相关约束ram_extractram_stylerom_extractrom_style寄存器的相关约束前言这是这个话题的第三篇,最重要的前言是本文节选自:《FPGA之道》。存储器的相关约束与乘法器类似,当我们需要使用RAM或ROM作数据存储时,通常的做法也是调用IP核来进行配置。因此,当涉及到大量不同存储模块调用或修改的时候,我们同样面临着令人头疼的工作。所以,掌握一...原创 2020-03-22 00:17:05 · 2234 阅读 · 0 评论 -
FPGA之道(65)代码中的约束信息(二)乘法器的相关约束
文章目录前言乘法器的相关约束use_dsp48mult_style前言这是这个话题的第二篇,最重要的前言是本文节选自:《FPGA之道》。乘法器的相关约束通常,FPGA开发者们无需显式的使用相关的乘法器约束,因为当需要使用乘法器时,一般都会调用集成开发环境提供的乘法器IP核,并在其中完成乘法器的相关配置即可。这也就是说,编译器通常帮我们完成了在HDL中添加乘法器相关实现约束的工作。不过大量I...原创 2020-03-22 00:10:37 · 2176 阅读 · 0 评论 -
FPGA之道(64)代码中的约束信息(一)保持约束
HDL中可以加入的约束信息有很多种,本章节就以Xilinx公司的FPGA芯片的集成开发环境为例,介绍一些常用的嵌入到HDL中的约束示例。而其它厂商的FPGA芯片的代码内约束添加方法均是雷同的。原创 2020-03-22 00:05:31 · 3636 阅读 · 0 评论 -
FPGA之道(63)“万能”的查表法
又好几天没更新了,这就是又停止了读书的节奏,终于在毕业论文可以稍微舒缓下来的时候更新了博客,完成一个系列,读完一本书等等都是有印记的,这是很有成就感的事情。原创 2020-03-18 22:16:10 · 5829 阅读 · 0 评论 -
FPGA之道(62)时空变换之空间换时间
时间不够主要体现在以下两方面: 一、规定时间内完成不了任务;二、规定时钟频率下时序分析通过不了。其中,第一个方面主要是算法的问题,碰到这种情况首先应该先考虑进行思路转换,看能否想出更加简洁、高效或适合的算法,如果实在不行,才考虑利用空间换时间的方法。而第二方面才是真正的时间余量不足的问题,需要正式采用空间换时间的思路来解决。原创 2020-03-04 16:27:21 · 2498 阅读 · 0 评论 -
FPGA之道(61)时空变换之时间换空间
本小节我们主要关注当空间不够时,该如何通过以牺牲时间为代价,来换取空间方面余量的提升,即时间换空间的方法。当然,FPGA设计中可以运用时间换空间方法的前提条件是此时时间方面必须具有一定的余量。原创 2020-03-03 16:08:30 · 2498 阅读 · 0 评论 -
FPGA之道(60)时空变换之空域优化
在做空域优化时,往往是不以牺牲时域余量为前提的,因为它的目的主要是去除空域内部的一些冗余。原创 2020-03-03 12:24:31 · 1731 阅读 · 0 评论 -
FPGA之道(59)时空变换之时域优化
“没钱的时候有时间,有钱的时候却又没时间”,这世上很多人都有着这样的经历和困惑。而对于FPGA开发者来说,类似的经历和困惑也普遍存在,此时矛盾往往就演变成了“没空间的时候有时间,有空间的时候没时间”。那么怎样做才能达到一个“有刚刚好的钱又有刚刚好的时间”的平衡点呢?本章节将就此展开讨论,并给出一些努力的方向。原创 2020-03-01 19:02:44 · 2139 阅读 · 0 评论 -
FPGA之道(58)关于外界接口的编程思路
不和外界打交道的FPGA设计是一个没有任何意义的设计,因为除了发热外别无它用。那么要想和外界进行通信,就必须具有外界接口,而FPGA设计可以利用FPGA芯片的管脚(PINs/PADs)来创建和外界交互的接口。但是对于FPGA设计来说,仅仅具有外界接口不还行,如果不能保证信息传递的正确性、准时性等等要求,那么外界接口也就成了聋子的耳朵——摆设。原创 2020-02-21 17:20:42 · 3532 阅读 · 1 评论 -
FPGA之道(57)状态机的实现方式
编译器中,和状态机实现相关的选项通常叫做fsm_style,根据该选项的设置不同,状态机实现时所基于的载体也不同。通常来说,我们在编写FPGA中的状态机代码时,不需要考虑这么具体和细节的东西,不过当涉及到一些高性能的状态机开发时,下面的内容还是会对我们有所帮助的。原创 2020-02-19 17:24:33 · 3204 阅读 · 1 评论 -
FPGA之道(56)状态的编码方式
状态编码是使用特定数量的寄存器,通过特定形式的取值集合,将状态集合表示出来的过程。这一工作通常是由编译器完成的,我们可以通过修改编译选项或者添加综合约束的方式来影响状态编码的结果。原创 2020-02-19 03:02:13 · 3278 阅读 · 0 评论 -
FPGA之道(55)状态机的HDL模板
上篇博客提供了状态机设计的一般思路,这篇博客仍然摘选自《FPGA之道》,一起来看下作者提供的状态机设计的HDL模板。原创 2020-02-19 02:32:41 · 1942 阅读 · 1 评论 -
FPGA之道(54)状态机的设计
本文摘自《FPGA之道》,上两篇博文分别讲到了状态机的概念以及状态机的模型,可知状态机分为摩尔状态机以及mealy状态机,根据系统设计需求也可分为设计成1型以及2型等。本文一起看下FSM的具体设计需要考虑哪些内容以及如何设计状态机,一起看看作者想和我们分享的内容。原创 2020-02-19 02:07:23 · 3047 阅读 · 0 评论 -
FPGA之道(53)状态机的模型
上篇博文讲了状态机的概念,这篇博文同样摘自于《FPGA之道》,一起来看下状态机的模型,和我们所认识的状态机有什么区别?其实没什么区别,只不过作者更加的细致,对状态机研究的更加的透彻,原来我以为的状态机只是作者提到的其中的一种,来一起学习一下。原创 2020-02-19 01:34:46 · 2000 阅读 · 0 评论 -
FPGA之道(52)状态机的概念
前言本文摘选自《FPGA之道》,对于状态机,作者花了大篇幅来叙述,对于状态机的深刻理解,让人佩服,以至于平日里认识到的状态机,以为就是真理,可见真理还需要不断的认识。这里为了不让博文篇幅过长,选择多篇博客来记录状态机这一大知识点。状态机的概念状态机简介简单的说,状态机就是一幅描绘着状态变迁的状态转移图,它体现着系统对外界事件的反应和行为。假设现在是周五的晚上,经过一周的劳累,你此刻正躺在...原创 2020-02-18 20:18:24 · 2640 阅读 · 0 评论 -
FPGA之道(51)数据的存储
第一次见到这么来描述数据存储的书,感觉学了这两年的FPGA白学了,下面内容节选自《FPGA之道》,一起看看作者对于数据存储设计的智慧与经验。原创 2020-02-18 00:34:15 · 17039 阅读 · 3 评论 -
FPGA之道(50)复位的设计
复位设计在FPGA以及IC设计中,是一个十分重要的话题,关于这个话题,之前也作为重点总结过,但是今天我们要看的内容节选自《FPGA之道》,一起来看下作者对复位的见解。原创 2020-02-17 00:54:04 · 4428 阅读 · 1 评论 -
FPGA之道(49)DCM与PLL
本文摘自《FPGA之道》,作者对于DCM以及PLL的理解算得上是很深入了,平时我们只知道用FPGA提供的一些时钟资源,并没理解为什么的问题?今天我们通过看DCM和PLL的原理来更深入理解类似的时钟管理资源,由于书本年代问题,所以,作者只提了DCM和PLL,其实现在的时钟管理资源已经出现了MMCM等,但万变不离其宗,只是更加强大了而已。原创 2020-02-17 00:46:53 · 6692 阅读 · 0 评论 -
FPGA之道(48)跨时钟域问题
只要FPGA设计中的所有资源不全属于一个时钟域,那么就可能存在跨时钟域问题,因为异步逻辑其实也可以看做一种特殊的跨时钟域问题。发生跨时钟域问题的必要条件是不同时钟域之间存在信息交互,如果一个FPGA设计中存在多个时钟域的话,这几乎是无法避免的,否则各个时钟域互不相关,那么就相当于把原设计分解为多个独立的小设计,这样的话FPGA设计的功能就无法通过协作来扩展。原创 2020-02-16 23:47:26 · 4233 阅读 · 0 评论 -
FPGA之道(47)时钟及时钟域
本文节选自《FPGA之道》,通过作者的讲解,一起看看时钟和时钟域的相关问题,下一篇博客再看看作者如何来解释跨时钟域问题。原创 2020-02-16 18:19:09 · 3774 阅读 · 0 评论 -
FPGA之道(46)数字电路中的隐患
了解数字电路中的隐患十分有必要,只有对此了如指掌,才能在实际问题中能明白出现问题的原因,而不必误认为是玄学问题。本文节选自《FPGA之道》,一起站在巨人的肩膀上来看看数字电路中的隐患以及如何应对遇到的隐患。原创 2020-02-16 15:00:28 · 2191 阅读 · 0 评论