- 博客(58)
- 收藏
- 关注
原创 PCIe Spec V5.0阅读笔记(二)Transaction Layer Overview(1)
本篇主要介绍Spec中PCIe事务层的部分知识,重点理解地址对齐。
2024-11-11 09:15:00
1922
原创 PCIe Spec V5.0阅读笔记(一)PCIe Intdoduction
Spec第一章首先对PCIe整体进行简单的介绍,包括拓扑结构、PCIe的分层、Link和Lane等
2024-11-04 09:15:00
1139
原创 FIFO读写端口位宽不同时的数据输出
非对称长宽比指的是FIFO的读写端口的数据宽度不同,呈现比例关系;非对称长宽比允许FIFO的输入和输出深度不同,支持如下的写读宽高比:1:8、1:4、1:2、1:1、2:1、4:1、8:1。
2024-06-04 09:30:00
956
原创 FPGA中的乒乓操作
输入选择单元负责将数据送到数据缓冲模块,然后输出选择单元负责读取数据缓冲模块的数据,实现在向数据缓冲模块1写入数据的同时,读取数据缓冲模块2的数据;在向数据缓冲模块2写入数据的同时,读取数据缓冲模块1的数据,以此来让数据不简单的流入后续模块。
2024-05-28 15:22:43
988
原创 行波进位加法器和超前进位加法器比较
行波进位加法器就是将全加器串联起来,将低位的进位输出作为高位的进位输入。超前进位加法器的本质就是并行计算各个进位,无需通过进位传递计算,缩短关键路径。
2024-05-28 14:46:35
3006
2
原创 RGMII接口及时序详解
以太网的通信离不开物理层 PHY 芯片的支持,以太网 MAC 和 PHY 之间有一个接口,常用的接口有MII、 RMII、 GMII、 RGMII 等。
2024-05-24 09:30:00
9216
2
原创 LFSR线性反馈移位寄存器及Verilog实现
LFSR线性反馈移位寄存器,通常由移位寄存器和异或门组成,主要用于产生伪随机序列等。线性反馈的含义是各个寄存器的输出通过一个反馈函数连接到第一级触发器的输入;LFSR中的寄存器的个数被称为LFSR的级数。
2024-05-21 14:45:00
2087
原创 为什么状态机最好要采用独热码
二进制编码:也称连续编码,属于压缩编码方式,可以使用较少的触发器对应更多的状态;格雷码:属于压缩编码方式,由于其编码特性,相邻两个格雷码之间只有1bit不同,相邻状态切换时,只有一个触发器的输出会翻转,可以尽量避免多bit信号之间的数据歪斜。独热码:使用N个触发器表示N个状态,每一时刻只有一个触发器的输出有效。
2024-05-16 09:30:00
1097
原创 《端脑》中如何靠四句“我不知道”猜到对方的数字
动漫《端脑》中有这样一道题,简化描述如下:甲乙两人各有一张写着数字的卡片,裁判告诉两人他们手上卡片数字相乘的结果不是8就是16,问如何能够在不告知数字的情况下菜刀对方卡片上的数字是多少?
2024-05-15 09:45:00
1127
转载 可综合语句和不可综合语句
always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。time,defparam,$finish,fork,j
2024-05-15 09:30:00
355
原创 固定优先级仲裁器及RR轮询Verilog实现
即在每次仲裁之后更新优先级,如最优先级mask初始为4'b1111,最低位优先级最高,则在输入请求为4'b1101的第一次仲裁后,输出仲裁结果为4'b0001,mask要变为4'b1110,优先级变为bit1的优先级最高,然后是bit2、bit3,即最低位请求已经被响应过了,接下来希望其他请求被响应,轮询着被仲裁。在代码中我可以发现,我们没有采取在仲裁结果为1000时将优先级更新为1的情况,而是当mask为0时采用固定优先级更新,这时候和将mask重置为1的效果是一样的,当然也可以通过修改代码实现功能。
2024-05-14 16:44:49
2115
原创 Wallace树乘法器及Verilog实现
Wallace树乘法器就是将多个部分积进行分组,每三个一组,最后如果剩下的部分积个数不够三个的不做处理,然后将各组的部分积进行相加得到和以及进位信息,直到最终只剩下两行部分积,相加后得到最终结果。以下面的例子进行说明:,然后按照三个三个,如图中相同颜色的为一组,但是最后黄色的两个由于不够则不进行运算,然后对一组内的三行部分积进行运算,得到的和留在本位,得到的进位填充到前一列的最后一行,详见下图2图1图2在上图中,我们以红色部分的进行举例,三行的。
2024-05-11 10:00:00
2467
1
原创 基于Radix-4的Booth乘法器
无符号数的最高位1被当作符号位进行运算了,这与Booth乘法器的原理不符合,接下来最高位的1将作为Bi-1参与Cofe的计算,那么就需要额外的两bit数,因此在高位需要扩展两个0,这是需要的最多的额外bit的情况。如果乘数是7,那么扩展低位后变为1110,这时候变为如下的情况,只需要1bit即可,但是扩展两位并不影响运算。因此每次计算时,只需要从最低位置开始,按照基系数Coef计算出相邻三个bit的和,然后根据和为-2、-1、0、1、2来得到乘法结果并移位,之后将所有得到的乘法结果相加即可。
2024-05-10 09:30:00
1891
3
原创 Xinlinx FPGA如何降低Block RAM的功耗
FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的以及。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现,我们可以通过综合选项得到一个折中的效果,下面将具体介绍。
2024-04-29 14:43:12
832
1
原创 always块中的REG型变量会被综合成什么结构
描述组合逻辑的always块中,寄存器被综合成wire型;如果存在不完整的赋值的情况,则被综合成锁存器。在描述时序逻辑的always块中,寄存器则根据语句块的内容被综合成触发器。首先需要明确,无论是组合逻辑还是时序逻辑,在always块中的变量在声明时都必须为reg类型。但是对于两种情况,综合器会将二者都综合成同一类型吗?我们可以发现对于未完整赋值的情况,会将reg综合成。我们可以发现,在综合结果中,a_temp被综合为。而完整赋值的情况reg会被综合为wire连线。,b_temp被综合为。
2024-04-25 16:09:23
599
3
原创 为什么36KbRAM会配置为32K×1,少的那4Kb去哪了?
本问题的背景是:每个36Kb块RAM也可以配置成深度×宽度为64K × 1(当与相邻的36KB块RAM级联时)、、4K × 9、2K × 18、1K × 36或512 × 72的简单双端口模式。每个18Kb块RAM可以配置成深度×宽度为、2K × 9、1K × 18或512 × 36的简单双端口模式。
2024-04-25 16:08:13
941
原创 竞争与冒险
在输入没有变化的情况下,组合逻辑电路的输出也可能发生转变,这种非预期的瞬态变化成为“毛刺”。毛刺是由电路的结构、**延迟**、以及可能导致毛刺产生的输入信号引起的。竞争是门电路两个输入信号同时向相反的逻辑电平跳变(一个从1变为0,另一个从0变为1)的现象。冒险就是可能产生毛刺输出的电路。
2024-04-24 11:41:05
1613
原创 为何有时简单双口RAM是真双口RAM资源的一半
当配置的RAM深度不超过512(≤512)并且位宽超过54(>36+18)的情况下,简单双口RAM的资源是真双口RAM资源的一半。
2024-04-24 09:30:00
2212
原创 Xinlinx FPGA内的存储器BRAM全解
Xilinx 7系列fpga中的块RAM存储高达36 Kb的数据,可以配置为两个独立的18 Kb BRAM或一个36 Kb RAM。每个36Kb块RAM也可以配置成深度×宽度为64K × 1(当与相邻的36KB块RAM级联时)、32K × 1、16K × 2、8K × 4、4K × 9、2K × 18、1K × 36或512 × 72的简单双端口模式。每个18Kb块RAM可以配置成深度×宽度为16K × 1、8K × 2、4K × 4、2K × 9、1K × 18或512 × 36的简单双端口模式。
2024-04-23 17:29:29
7842
2
原创 Xinlinx原语在哪查看如何使用/原语示例
3.选择Language类型、Device Primitive Instantiation(原语)、Kintex-7(芯片系列),之后可以选择自己需要使用的类型,这里以分布式RAM为例,选中32×1的单端口分布式RAM后右侧就会给出例化的示例。2.点击Tools,选择Language Templates。1.打开Vivado。
2024-04-22 11:22:05
644
原创 异步FIFO约束set_max_delay
set_max_delay [-datapath_only] -from [ node_list] -to [node_list] delay_value
2024-04-19 10:41:53
3897
5
原创 一文学会时序约束
- 主时钟约束命令/生成时钟约束命令- IO输入输出延迟约束命令及效果- 最大最小延迟命令及作用- 多周期路径怎么约束- 什么情况设置伪路径- 时钟组设置的三个选项
2024-04-18 11:18:39
661
原创 数字IC/FPGA——时序分析
- 时序分析的本质是什么- 建立时间要求和保持时间要求是如何产生的- 时序路径共有几种- 如何确立建立时间要求及slack- 如何确立保持时间要求及slack- 建立时间和保持时间为何可以为负
2024-04-18 10:00:29
2231
原创 数字IC/FPGA——亚稳态及跨时钟域
- 什么是亚稳态- 亚稳态会造成什么- 平均故障间隔时间- 如何解决亚稳态- 同步时钟和异步时钟- 单bit电平信号如何跨时钟域- 单bit脉冲信号如何跨时钟域- 多bit信号如何跨时钟域(格雷码、独热码、DMUX同步)
2024-04-13 16:36:41
3401
原创 数字IC/FPGA——锁存器/触发器/寄存器
- 什么是触发器和锁存器- 门电路和触发器的区别- 什么是电平钟控触发器- 电平钟控触发器触发器和锁存器的区别- 触发器的分类方式:逻辑功能、触发方式、电路结构、存储数据原理、构成触发器的基本器件- 寄存器- 利用移位寄存器实现串并转换或并串转换
2024-04-12 17:48:09
3431
原创 无符号数和有符号数的运算
最近在书上看到这样一道题,由于知识缺乏导致很难对这道题完全理解和运算,因此在这里分享出来供大家参考。题目如下:c的输出值为多少。
2024-04-11 10:27:47
598
原创 数字IC/FPGA——复位篇
本文主要介绍以下几点:- 复位的作用及什么时候需要复位- 复位的分类- 全局复位、局部复位的目的- 如何选择全局复位和局部复位- 同步复位、异步复位及异步复位同步释放的原理、优缺点
2024-04-10 17:26:50
2931
1
原创 数字IC/FPGA(时钟简介)
本文主要介绍了-什么是时钟- 什么是外部时钟和内部时钟- 时钟偏斜skew、时钟延迟delay和时钟抖动jitter的定义、三者的区别- 时钟抖动、时钟偏斜、时钟延迟会引起或不会引起什么情况- 布线方式的影响,正偏差和负偏差的好处和坏处- 什么是同步电路- 什么是异步电路- 时钟域和时钟树- FPGA的时钟资源BUFG/BUFH/BUFR/BUFIO/BUMR/MMCM/PLL
2024-04-09 11:54:47
2278
Python与FPGA开发结合(一)- 生成指定速率的以太网帧模拟数据源
2023-08-30
主备切换的串口控制 Ctrl-ip设计
2023-08-25
FPGA实现SD卡控制器
2023-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人