
数字IC/FPGA设计
文章平均质量分 68
数字IC设计
weixin_43701504
这个作者很懒,什么都没留下…
展开
-
questsim/modelsim 中仿真VIVADO工程的方法,以及调用Xilinx的ROM IP后,导致仿真输出为0问题的解决
这几天写了个UVM的验证环境,要用questasim来运行,而待测试的DUT是之前用VIVADO做的,就得把VIVADO中的工程移植到quetasim里,其中调用了Xilinx的ROM、RAM等IP核。 首先是移植VIVADO的工程,参考这篇文章:modelsim仿真调用xilinx IP的一种方法_拾贝壳的大男孩-优快云博客 把所有的设计和仿真文件,以及IP核文件都添加到queastasim的工程中后,仿真,发现有一个输出的值一直是0:而在V...原创 2021-11-17 22:08:26 · 2177 阅读 · 0 评论 -
乒乓操作(Ping-Pong)的理解:为什么是另一种pipeline?
1.乒乓操作的原理 乒乓操作用于数据流控制的处理技巧。 在两个功能块(function block)对接时,由于瞬时数据率的差异(如block A的写数据频率为200Mhz,而block B的读数据频率为50Mhz),或数据顺序的差异(如block A发送的数据为顺序发送,block B接收数据的顺序为逆序接收,即从最后一个字节开始接收)等原因,导致这两个模块不能同时工作。为了提高电路的数据处理效能,可以用ping-pong buffer结构连接这两个模块,让它们能够同时...原创 2021-10-28 09:52:45 · 25880 阅读 · 0 评论 -
Verilog中的变量节选(part-select):中括号[]中的加号(+:)和减号(-:)的作用?
Verilog 1995 允许在节选范围的索引为常数时从一个向量中节选连续的比特。Verilog 2001,2005 提供了两个新的节选运算符来支持固定宽度的变量节选:+:和 -:,其语法分别为:[ < starting_bit > +: < width >] 和 [ < starting_bit > -: < width >] 参数 width 指的是节选部分的长度, starting_bit 则指明了向量中被选部分...原创 2021-10-27 11:15:28 · 9450 阅读 · 3 评论 -
STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing violation)?
1.什么是STA? STA(静态时序分析)是时序验证的一种方法,是用于计算和分析电路是否满足时序约束的要求。2.为什么需要STA? 电路能否正常工作,其本质上是受最长逻辑通路(即关键路径)的限制,以及受芯片中存储器件的物理约束或工作环境的影响。 为了保证电路能够满足设计规定的时序规格及器件的约束条件,必须验证关键路径以及与关键路径延迟相近的通路是否满足时序要求,这就必须考虑逻辑门的传输延时、门之间的互连、时钟偏移、I/O时间裕度以及器件约束(建立时间...原创 2021-10-23 19:54:34 · 32206 阅读 · 9 评论 -
流水线(pipeline)设计详解+实例:为什么要用流水线?流水线的作用和优缺点?流水线深度越大越好吗?什么时候采用流水线?
1.流水线设计的概念 所谓流水线设计,实际上就是把规模较大、层次较多的组合逻辑电路分为几级,在每一级插入寄存器组并暂存中间数据。K级流水线就是从组合逻辑的输入到输出恰好有K个寄存器组,上一级的输出是下一级的输入而又无反馈的电路。2.流水线的作用 (1)流水线可以提高电路的吞吐率 吞吐率就是数据输入机器的速率或处理数据的速率。吞吐率最终受到以下几种具有最大传播延时的通路的限制: a. 原始输入到一个寄存器的通路; ...原创 2021-10-19 19:06:30 · 31273 阅读 · 5 评论 -
Booth乘法器(Radix-4)算法实现流程详解
1.首先先看这张耳熟能详的编码表:对于某个乘法 A x B, B都可以用上面的编码表来进行编码。具体方法是:对B首先进行位拓展:最低位补一个0,最高位补两个符号位。比如对于B = 11,二进制就是1011,位拓展后就是0010110.再看编码表:最低三位为110,对应编码表中的 -1, 再往前三位是101, 对应编码表中的 -1, 最高三位为001,对应编码表中的 +1. 所以 B=11 的Booth编码为 1(-1)(-1):2.再来执行具体算法流程:对于 A x B(如12x11..原创 2021-10-17 11:06:01 · 8508 阅读 · 5 评论 -
Moore型状态机和Mealy型状态机的区别以及各自Verilog的实现细节:为什么Moore型状态机需要多一个状态?怎么选择用哪一种状态机?
Moore型状态机和Mealy型状态机的区别(1)Moore型状态机:输出信号只取决于当前状态。(2)Mealy型状态机:输出信号不仅取决于当前状态,还取决于输入信号的值。它们的区别就在于输出信号是否与输入信号有关,造成的结果是:实现相同功能时,Moore型状态机需要比Mealy型状态机多一个状态,且Moore型状态机的输出比Mealy型延后一个时钟周期。这里举一个HDLBits上的例子:这两道题目要求分别用Moore型状态机和Mealy型状态机来实现对输入信...原创 2021-10-06 20:36:51 · 14924 阅读 · 4 评论 -
卡诺图中的d项化简
今天在做HDLbits的时候遇到这样一题:就是对上面的卡诺图进行化简,给出输出 out 的表达式对于这个卡诺图,出现的d可以当作0,也可以当作1。表达式: out = a + b'c最后答案: assign out = a | ( !b & c );...原创 2021-09-23 10:33:44 · 7516 阅读 · 1 评论 -
异步FIFO设计:各个模块的作用及Verilog代码详解
实现原理参考:异步FIFO---Verilog实现_alangaixiaoxiao的博客-优快云博客_异步fifo代码参考:IC基础(一):异步FIFO_MaoChuangAn的博客-优快云博客_异步fifo1.异步FIFO设计的关键点:(1)二进制码到格雷码的转化:二进制码的最高位不变,其余位分别与自己的左边一位进行异或,得到的就是格雷码。也就是将二进制码右移一位后再与自己异或,就得到了对应的格雷码。即: assign gray = ( bin >> 1 )...原创 2021-09-21 21:56:10 · 2339 阅读 · 1 评论