AdriftCoreFPGA芯研社专栏头像

AdriftCoreFPGA芯研社 订阅号

已收录 13 篇技术文章 0 位工程师关注
致力于FPGA、数字IC分享
专栏矩阵

专栏文章列表(13)

FPGA基础:一文吃透CRC算法(下)——CRC硬件加速原理深度解析

FPGA基础:一文吃透CRC算法(下)——CRC硬件加速原理深度解析

前言 在很多以太网、SATA 或其他高速接口项目中,我们经常会接触到 CRC(循环冗余校验)。通常,工程师会通过网站或软件工具生成一整套带异或操作的组合逻辑来实现 CRC 算法,而不去深入理解其原理——只知道可以这样用。事实上,在大多数情况下,确实不需要了解

漫谈PCIe——BAR是什么

漫谈PCIe——BAR是什么

前言 对于主机而言,FPGA-PCIe 设备通过其 BAR(Base Address Register)被识别和访问。主机必须通过读写 BAR 所映射的地址空间,才能与 FPGA-PCIe 正确通信。这相当于将 FPGA-PCIe 内部的地址区域映射到主机的内

FPGA漫谈PCI-E:TLP包

FPGA漫谈PCI-E:TLP包

前言 本系列不会从零讲PCIe,也不会照搬规范条款,标准文档已经够厚,这里更像是一份工程师视角下的PCIe手边笔记 , 以更简洁的方式记录PCIe的关键点。 TLP包 由于PCIe-DMA的实现始终在事务层通过TLP包完成,因此深入理解TLP包的构成至关重要。

【芯片工具】在Verdi上“量带宽”的tcl脚本

【芯片工具】在Verdi上“量带宽”的tcl脚本

这个脚本在多年之前我就想做出来的,算是很执念的一件事。但是无奈自己的tcl编程能力和Verdi相关指令行掌握的太弱了,尝试了几次都没有成功。而这次我决定借助大模型力量再试一次,所以对着DS描述了这个脚本的行为: 但是后面想了想,描述的不够准确,于是进行了第二

开源AFX-SATA-DMA 控制器:高速存储接口的完整实现(附源码)

前言 开源 AFX-SATA-DMA 控制器:高速存储接口的完整实现(附源码) SATA 的开源并不是我的主要目的。这个项目最初的出发点,其实是想借此验证和实践 cocotb 仿真的完整流程,以及构建一套自主可控的 FPGA 开发工具链。可以说,是为了这点醋,

高性能存储硬件推荐:FMC-FPGA扩展卡(含SATA+NVMe源码)

高性能存储硬件推荐:FMC-FPGA扩展卡(含SATA+NVMe源码)

  前言 在做 FPGA 存储接口实验 时,经常会遇到一个尴尬的情况:开发板自带的存储接口要么数量有限,要么干脆没有。而市面上自带 SATA 或 NVMe 的 FPGA 开发板本来就非常少见,就算有,价格也往往高得离谱。这样一来,如果想要同时研究 SATA 和

用Python给Verilog设计自仿进阶:仿真器是如何工作的?一文看懂时序模型

用Python给Verilog设计自仿进阶:仿真器是如何工作的?一文看懂时序模型

很多FPGA/IC工程师擅长设计,但在仿真方面较为薄弱。我认为主要问题在于,完整的仿真实现学习成本较高,如学习UVM需要掌握大量新的内容。而单纯使用Verilog自仿又难以满足需求,以报文仿真为例,我们需要解析报文,若仅依赖Verilog自仿,就相当于要自己

用Python给Verilog设计自仿(一):Cocotb环境初探

1前言 很多FPGA/IC工程师擅长设计,但在仿真方面较为薄弱。我认为主要问题在于,完整的仿真实现学习成本较高,如学习UVM需要掌握大量新的内容。而单纯使用Verilog自仿又难以满足需求,以报文仿真为例,我们需要解析报文,若仅依赖Verilog自仿,就相当于

用Python给Verilog设计自仿(11):协程、阻塞勘误及AXIS开源验证剖析

用Python给Verilog设计自仿(11):协程、阻塞勘误及AXIS开源验证剖析

前言 在上一篇文章中,我们提到相同协程是阻塞的,不同协程是并发的这一说法。然而,这种理解存在偏差,所以第一个现象并不像我们之前想象的那样。今天,我们将专门梳理协程的概念,深入剖析其本质,以纠正上次关于协程与阻塞的说明。 案例说明 下面我将介绍一种非常典型的现象

用Python给Verilog设计自仿(11):仿真的玄学问题——协程、阻塞、 事件驱动、时间驱动

用Python给Verilog设计自仿(11):仿真的玄学问题——协程、阻塞、 事件驱动、时间驱动

前言 在使用 cocotb 编写测试时,很多人可能都会遇到一些让人困惑的现象:比如说,你明明在发送一帧完整数据之后,加了 await RisingEdge(clk) 想等待 5 个周期再发下一帧,但在波形上却发现帧与帧之间并没有间隔;或者你在别的地方加了 Ti

用Python给Verilog设计自仿进阶:FPGA仿真如何极致压榨CPU

用Python给Verilog设计自仿进阶:FPGA仿真如何极致压榨CPU

对于许多FPGA/IC工程师而言,设计实现游刃有余,验证仿真却常成短板——传统验证方法面临两难困局:学习UVM需投入大量时间成本,而纯Verilog自仿又会陷入重复造轮子的低效循环。以通信协议仿真为例,仅报文解析就需要重写整套解析逻辑,相当于用Verilog再

漫谈PCIe——如何进行内存读写

漫谈PCIe——如何进行内存读写

DMA与MMIO的读写操作均通过三种基本报文实现:MWr(写请求)、MRd(读请求)和CPLD(完成带数据)。 MMIO的读写机制较为简单:写操作直接发起一次MWr请求;读操作则先发起MRd请求,然后等待一个包含数据的CPLD报文作为响应。 相比之下,DMA的

SystemVerilog如何优雅的提升FPGA开发效率

SystemVerilog如何优雅的提升FPGA开发效率

• 前言 • SV的优劣 • 最方便的信号类型(logic) • 定义复杂信号的优雅方式(struct) • 最省心的状态机利器(enum) • 提前发现多驱 • 让数据结构更清爽的秘诀(typedef) • 最常用的批量信号写法(packed array