切换马甲
上一页
下一页
分类专栏
-
60篇
默认分类
文章数:60
文章总阅读量:55.4w
文章总收藏量:408
文章总点赞量:5.1k
按发布时间
按阅读量
按点赞量
-
前言 提到FPGA逻辑的仿真,一般指的是行为仿真或者功能仿真,还有人会称为前仿,不包含时间延迟信息,只验证逻辑功能。对于小模块的仿真,需要写一个测试文件,英文是testbench,即测试平台。在testbench里面,我们给输入信号的激励,给时钟信号等等,然后观察输出,或者处理输出,观察符合不符合预期,达到测试功能的目的。 但是对于大型项目的整体仿真,也可以这样做,但是为了遍历更多的情况,验证更多2021-03-20 00:58:2989 8 5811
-
前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维数组对存储器进行建模。 存储器由FPGA的什么资源来构成,可以由综合属性来设定,或者由综合工具来自动设置。这不是本文的重点,具体可见:Vivado 随笔(1) 综合属性之 ram_style &2021-03-20 13:22:5898 8 11583
-
前言 说到底,Verilog中的数据类型其实可以分为两种: 网络类型 变量类型 我们平时最常用的wire以及reg就是这两种的代表,我们可以仅仅使用这两种数据类型来完成几乎全部设计。 我们在verilog中使用wire类型来声明信号,这是我们设计中非常基本的点对点连接。顾名思义,它们大致等效于传统电路中的电线。 在电路中,我们将使用reg类型对触发器输出进行建模,因为它可以有效地存储单个数据位2021-03-21 22:03:3093 4 7668
-
前言 关于高阻态,我们常见到的场景有两处,一种出现在仿真中,一种是逻辑设计中,它常常是无意乱出,还或者是有意而为之。 下面对这几种情况进行简单梳理。 高阻态回顾 我们在上一篇文章中的数据类型中介绍了包括高阻态的一系列数据类型,即线网型和变量型: 线网类型表示电路元件之间的连接,我们常用其中的一种wire,这足以创建所有线网类型的设计。 变量类型表示可以存储值得数据类型,我们常用的变量类型是reg,2021-03-21 22:58:2693 8 9783
-
前言 可以在Verilog中建模的数字电路主要分为两类:组合电路和时序电路。 事实上,电路也可以只分为组合电路和时序电路,至于混合电路,那是组合电路和时序电路相互交融的结果,因为我们现实世界中,往往都是组合电路与时序电路并存的。 本文我们将讨论使用assign关键字在verilog中进行连续赋值。然后,我们研究如何使用连续赋值在verilog中对基本逻辑门和多路复用器建模。 组合逻辑是两者中最简单2021-03-22 00:49:5396 6 6905
-
前言 上篇文章中也说了,可以在Verilog中建模的数字电路主要分为两类:组合电路和时序电路。本文就是另一篇,时序逻辑的建模。 时序建模使用的verilog中最重要的构造之一-always块。 与组合逻辑相反,时序电路使用时钟并需要诸如触发器之类的存储元件。 结果,输出信号与电路时钟同步,并且不会立即发生变化。 我们使用always块编写在verilog中时序逻辑的代码。在verilog中描述时2021-03-22 01:26:5394 8 6488
-
前言 创建可重用模型通常要求使用诸如尺寸,宽度和深度等可重定义的参数来编写通用模型。 关于可重用设计的话题,我们在前面提到了很多,例如:parameter与generate语句等,都一定程度上有利于可重用设计的实现。 今天,我们一方面回顾一下parameter,另一方面我们来一起来学习下defparam的历史,以及它是如何被弃用的。 parameter回顾 Verilog标准1995与新标准Ver2021-04-10 01:44:4886 7 8256
-
前言 用长江后浪推前浪来形容流水线,可谓之形象。硬件中的流水线技术,就是将数据一级一级的推进,后一级推进前一级,前一级则更近一层。 为什么要使用流水线?这要从组合逻辑的延迟话题说起,之后引出时序逻辑的核心元素触发器或者寄存器,进而进入流水线的正式内容。 流水线是解决时序问题的关键技术,起到疏导作用,一提到疏导,这关键程度可见一斑。之所以需要疏导,就意味着堵塞了,堵塞了的系统是有问题的,例如人体内的2021-04-11 01:10:4099 8 5547
-
前言 上篇文章:FPGA硬件算法(1)长江后浪推前浪之流水线已经谈了流水线的基础内容。 其实本篇是上一篇的一个补充,上篇内容属于本篇的一部分,它们都可以归入retiming技术之内。 retiming技术是逻辑设计的润滑剂,起到疏通的作用,一起看看吧。 组合逻辑的性能 在常识以及上篇文章中我都都有讲到,组合逻辑的问题是延迟大,组合逻辑的互联也会堆积延迟,大延迟就造成设计性能的下降,造成很多不必要的2021-04-11 14:45:4589 8 11621
-
前言 在提高模块通用性的设计中,也叫可重用性,有好多种方式,例如: FPGA的设计艺术(13)使用generate语句构建可重用的逻辑设计 FPGA的设计艺术(14)使用函数和任务提升逻辑的可重用性 FPGA的设计艺术(12)使用parameter构建可重用的逻辑设计 这些对技能的灵活应用,会让你的设计更加的游刃有余,当然,本篇想补充一个,编译预处理语句。 这是HDL中的一个不可或缺的分支,地位很2021-04-27 00:05:0989 8 4908
-
前言 本文讲解RTL语言中的移位,看起来平淡无奇的移位,为何大题小做花费一篇文章的篇幅去讲解? 这不是大题小做,移位在逻辑设计中是十分重要的角色,可以说地位相当的高,合理的利用会让你的设计更加的节约资源,处理更加的方便,当然,另外一面是不合理的使用会让你的设计失败,不起作用? 明明我移位了,为什么效果不符合预期? 算术移位与逻辑移位的区别是什么? 为什么移位可以代替某些乘除法操作? 等等诸多问题,2021-04-27 00:06:3598 7 6201
-
前言 如果不是做信号处理,我们时常接触到的运算很少,如果有,很多也都是无符号运算,实际上我们没有明确声明为有符号类型的运算都默认为无符号运算。 作为一个逻辑设计工程师,对于Verilog中的无符号运算如何处理,如果不明白的话,也许不会暂时影响你的工作,但一定是有遗憾与缺失的。 本文重点介绍了有符号数的一些操作,给出了正反两种对比,我们推荐的做法一级不推荐的做法,还有一些我们认为没问题的操作,实际上2021-05-15 23:39:1092 5 5502
-
前言 状态机是逻辑设计中接触最多的内容,可谓是各种场合的热点,本文从基础讲起,直接触及最核心的几个要素,更多内容,请参考更多英文网站及文献。 状态机介绍 基本上,FSM由组合,顺序和输出逻辑组成。组合逻辑用于确定FSM的下一个状态,顺序逻辑用于存储FSM的当前状态。输出逻辑是组合逻辑和顺序逻辑的混合,如下图所示。 状态机的描述方式 有限状态机的描述方式很多,但是最流行的两个是状态图和状态表。两种2021-05-17 23:44:3396 5 5035
-
前言 我曾经有一个疑问,就是为什么我明明使用了同步复位的设计,而Vivado给我生成的RTL原理图看似异步的? 例如: module syn_rst( input rst, input clk, input data_in, output out ); reg out; always@(posedge clk) begin2021-05-23 01:13:2595 7 12761
-
前言 有了上一篇博文:https://www.ebaina.com/articles/140000012562的铺垫,我们就清晰地了解了触发器的异步与同步之分。 上篇博文的最后,我们提到了要进去逻辑综合这一步去看看FPGA更真实的资源去实现我们想要的逻辑功能,但这还不是最终的FPGA实现,最能说明FPGA实际情况的阶段还是实现(implementation)这一步。本篇博客,我们暂时不深入去imp2021-05-23 23:50:1492 3 5491
-
新的FPGA学生纠结的事情之一是,数字逻辑中的一切都以并行方式进行。 这些学生中有许多人有计算机科学背景。他们理解算法是如何工作的,以及一件事必须按照特定的顺序在另一件事之后发生。但是,他们往往对算法中的每一步都占据一块数字逻辑的想法感到纠结,而这块数字逻辑将在每一个时钟上发挥作用(无论是否使用)。 对操作排序的一个解决方案是创建一个巨大的状态机。但现实是,FPGA倾向于一次性创建每个状态的所有逻2021-06-08 22:36:4592 5 5776
-
前言 FPGA开发的最终目的是能够实现预期稳定的功能,这是设计的目的,保证逻辑有效的源头可以说一个设计问题,而保证设计的正确性需要对自己的硬件逻辑设计进行调试,调试的方式常常有两种: 仿真 硬件调试 这里的仿真,一般指的就是行为仿真,暂时不考虑时序,但并不是可以不关注时序去设计,我的意思是假设时序可以通过的情况下,考虑功能性的问题,这是有区别的。 逻辑的设计过程,首先要时时刻刻把时序考虑在内,2021-06-20 20:10:0393 0 4831
-
前言 我们常在各种场合遇到axi总线,例如在使用高速总线协议aurora协议,例如在生成常用IP核(例如RAM)时的AXI总线选择,例如在使用zynq等等,当然,在纯粹的FPGA玩家中,axi大多数还是出现在高速总线的内部互联中。 上面说的只是我在赛灵思FPGA使用中的一点认识,当然AXI不可能只存在赛灵思中,AXI总线已经成为与赛灵思或英特尔提供的IP核合作的重要标准。这一通用标准旨在使设计与各2021-07-12 23:53:0392 1 16377
-
前言 高速信号设计涉及到方方面面的知识积累,也许你认为即使没有掌握甚至没有听过一些高速设计的专业术语,也没有关系?因为专业集成的IP可以帮你解决这一问题,但殊不知,根基不牢,地动山摇!基础不牢固,你可能永远成不了一个expert,甚至难以成为一位出色的工程师。 本系列文章通过联系高速串行的相关知识,从基础到进阶,可以助你很好地理解高速串行设计中的重难点。 短期可助于理解各厂家集成IP,高速协议等,2020-11-30 23:56:05378 21 12444
-
前言 话说,很久以前,并行总线称霸电子行业的方方面面,无论是芯片之间的通信还是板间通信。 就连大名鼎鼎的PCI Express总线也是从并行总线PCI发展而来,诸如此类的例子很多,有兴趣的可以参考:总线的各种基础问题 为什么后来就往高速串行总线方向发展了呢? 几乎任何地改变都是趋利避害:拿芯片间通信为例,过去几乎完全是并行总线,碍于技术限制,使用串行总线所需的serialize(串行化)以及des2020-12-03 00:29:5285 10 17749
