自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 首字置出FIFO(FWFT)及各FIFO深度问题

首字置出FIFO的差别:1.空信号的断言;2.FIFO的深度和设置的不同

2024-06-04 09:15:00 1828

原创 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

原创 数字IC除法器结构

除法器是通过加法器/减法器和移位寄存器来实现的

2024-05-21 09:30:00 759

原创 Verilog实现格雷码和二进制码的转换

【代码】Verilog实现格雷码和二进制码的转换。

2024-05-17 09:30:00 1596

原创 为什么状态机最好要采用独热码

二进制编码:也称连续编码,属于压缩编码方式,可以使用较少的触发器对应更多的状态;格雷码:属于压缩编码方式,由于其编码特性,相邻两个格雷码之间只有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

原创 数字电路中常用的几种数据处理方法

1.对某一位置12.对某一位置03.保留最低位的1其余置04.保留高位连续的1低位置0

2024-05-14 11:15:17 740

原创 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

原创 数字IC乘法器结构

我们可以发现,整个乘法过程需要进行多次两个数据以及进位的相加,这样的结构很适合利用加法器来实现

2024-05-09 09:30:00 2813 1

原创 Case中default的综合结果

在使用case语句时,不完备的case语句会导致Vivado综合时推断出锁存器。

2024-05-06 15:09:29 737

原创 Xinlinx FPGA如何降低Block RAM的功耗

FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的以及。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现,我们可以通过综合选项得到一个折中的效果,下面将具体介绍。

2024-04-29 14:43:12 832 1

原创 数字IC/FPGA中为什么电路中最好不要有锁存器

1.电路不稳定;2.不利于时序分析;3.资源浪费

2024-04-29 10:06:45 420

原创 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

原创 Vivado中的加法器电路结构

加法器在SLICE中的体现/SLICE中进位链的作用

2024-04-23 10:00:00 2126

原创 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

原创 SLICEM是如何将查找表配置为分布式RAM/移位寄存器的

将6输入LUT配置为ROM、分布式RAM、移位寄存器

2024-04-20 09:30:00 1249

原创 异步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

原创 为什么会有BCD码以及余三码的优点详解

BCD码的意义以及余三码的优点

2024-04-19 10:29:54 1894

原创 一文学会时序约束

- 主时钟约束命令/生成时钟约束命令- IO输入输出延迟约束命令及效果- 最大最小延迟命令及作用- 多周期路径怎么约束- 什么情况设置伪路径- 时钟组设置的三个选项

2024-04-18 11:18:39 661

原创 数字IC/FPGA——时序分析

- 时序分析的本质是什么- 建立时间要求和保持时间要求是如何产生的- 时序路径共有几种- 如何确立建立时间要求及slack- 如何确立保持时间要求及slack- 建立时间和保持时间为何可以为负

2024-04-18 10:00:29 2231

原创 建立时间/保持时间为负是什么情况

建立时间/保持时间为负是由于CELL内部数据路径延迟和时钟路径延迟的相对关系

2024-04-15 21:59:51 1656 2

原创 数字IC/FPGA——亚稳态及跨时钟域

- 什么是亚稳态- 亚稳态会造成什么- 平均故障间隔时间- 如何解决亚稳态- 同步时钟和异步时钟- 单bit电平信号如何跨时钟域- 单bit脉冲信号如何跨时钟域- 多bit信号如何跨时钟域(格雷码、独热码、DMUX同步)

2024-04-13 16:36:41 3401

原创 数字IC/FPGA——锁存器/触发器/寄存器

- 什么是触发器和锁存器- 门电路和触发器的区别- 什么是电平钟控触发器- 电平钟控触发器触发器和锁存器的区别- 触发器的分类方式:逻辑功能、触发方式、电路结构、存储数据原理、构成触发器的基本器件- 寄存器- 利用移位寄存器实现串并转换或并串转换

2024-04-12 17:48:09 3431

原创 异步FIFO深度为何只能为偶数

格雷码具有相邻两个地址只有1bit会反转

2024-04-11 16:12:17 1326

原创 无符号数和有符号数的运算

最近在书上看到这样一道题,由于知识缺乏导致很难对这道题完全理解和运算,因此在这里分享出来供大家参考。题目如下: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

PCI-Express-Base-Specification-Revision5.0

PCIe Spec V5.0主要介绍了PCIe的相关内容

2024-11-03

Python与FPGA开发结合(一)- 生成指定速率的以太网帧模拟数据源

运行、文件夹下的**ethernet.exe**会得到如下界面: 在输入栏中填写指定的6字节的目的MAC、6字节的源MAC、20字节的IP头、8字节的UDP头、用户时钟周期(ns)、需要产生的帧速率(Mbps)、产生的帧帧长(字节)、需要产生的帧数量,之后点击生成,就可以在当前文件夹生成一个名为ethernet_source的.v文件,其中包含一个task,用于产生指定格式的帧。

2023-08-30

主备切换的串口控制 Ctrl-ip设计

1.接收并解析主备控制串口传来的数据 2.通道切换 对于控制通道,初始为主通道,支持以下场景: ● 当前控制通道为主,主用通道发来切为备指令,可以进行切换; ● 当前控制通道为主,备用通道发来切为备指令,可以进行切换; ● 当前控制通道为备,主用通道发来切为主指令,可以进行切换; ● 当前控制通道为备,备用通道发来切为主指令,可以进行切换。 对于其他指令,仅接收当前通道发来的,即当前控制通道为主,备用通道发来 0001-0100指令,各个输出信号均无变化,仅维护本地寄存器信息。

2023-08-25

FPGA实现SD卡控制器

介绍SD卡及如何使用的文章有很多,这里不再赘述,这里给大家推荐几个相关的文章都介绍的比较详细;本文重点介绍如何在SPI模式下使用SD卡,包括初始化的步骤,读写数据的操作步骤及SD卡的响应内容等,最后附上完整的工程文件及简单的仿真(模拟SD卡的.v文件目前只能够响应命令,对写入数据后的响应没有涉及,可以直接上板观察具体响应) SD2.0协议详解:命令格式、初始化/读取/写入 基于FPGA的SD卡的数据读写实现(SD NAND FLASH) SD卡的使用过程如下: SD卡初始化—— SD卡写数据(单个数据块)—— SD卡读数据(单个数据块) rtl文件夹中一共有6个.v文件,从上至下分别代表初始化时钟生成、模式选择、初始化、SD卡、SD卡写以及顶层文件。各部分介绍如下: clk_init_gen:用于生成初始化需要的时钟; mode_sel:表示目前的工作模式为初始化、SD卡写还是SD卡读; sd_init:完成SD卡的初始化; sd_read:完成SD卡的读功能; sd_write:完成SD卡的写功能 SD_top的这一部分为产生写数据,然后存入到sd_write模块的fifo中,

2023-08-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除