
FPGA接口开发
文章平均质量分 89
apple_ttt
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从零开始讲DDR(10)——AXI 接口MIG 使用(3)
本文中,我们将继续展开介绍boot_mode_gen,prbs_mode_gen,custom_mode_gen的原理。原创 2025-05-03 00:09:41 · 594 阅读 · 0 评论 -
从零开始讲DDR(9)——AXI 接口MIG 使用(2)
在之前的文章中,我们介绍了官方DDR MIG AXI接口的例程的整体框架,在本文中,我们将着重介绍例程中关于数据产生,及驱动到AXI接口的相关逻辑实现。原创 2025-05-03 00:03:21 · 899 阅读 · 0 评论 -
从零开始讲DDR(8)——AXI 接口MIG 使用(1)
我们简单拆解了MIG AXI接口中测试文件的整体框架,首先在sim_tb_top.sv文件中例化了DDR模型和example_top。在example_top中,又例化了MIG IP和一个流量产生器ddr4_v2_2_8_axi_tg_top。在ddr4_v2_2_8_axi_tg_top中的主要功能是分别例化了boot_mode_gen,prbs_mode_gen,custom_mode_gen和axi_opcode_gen。原创 2025-05-02 16:54:31 · 923 阅读 · 0 评论 -
从零开始讲DDR(7)——modelsim独立仿真DDR4
本文主要内容为DDR4 MIG ip核仿真,modelsim独立仿真DDR4。在进行DDR仿真的时候,我们会面临一个以往常规仿真不存在的问题:DDR本身并不是一个我们通过RTL代码设计出来的部件,常规的模块或者IP仿真,都是基于RTL代码就能进行的,但是回顾一下我们DDR的开发流程,调用的IP核也只是MIG ip,其本质是一个DDRC+DDRPYH的组合,并不能模拟任何DDR本身的行为,因此,在进行仿真之前,我们首先要做的就是获取DDR的仿真模型。原创 2025-01-12 17:02:32 · 1800 阅读 · 0 评论 -
PCIe配置篇(2)——如何进行配置操作(二)
内存访问被映射到配置请求的地址范围内,生成一个配置请求,不再需要两步操作。这意味着,当CPU发起对PCIe配置空间的访问时,它只需执行一个内存读或写操作,而不需要先通过配置地址端口(如传统PCI机制中的0xCF8端口)指定目标地址,然后通过配置数据端口(如0xCFC端口)进行访问。在一个单 RC 的系统中,Host-Bridge 的次级总线号应该被固定为 0,也就是它的可读可写的次级总线号寄存器从一复位就被强制置为0,或者说,Host-Bridge 知道它访问到的第一个总线一定是 Bus 0。原创 2024-10-08 13:33:00 · 1703 阅读 · 0 评论 -
PCIe配置篇(1)——如何进行配置操作(一)
我们基本了解了配置操作的主要参与者,被配置的对象是设备中的功能(Function),每个功能(Function)会有一个自己的唯一标识BDF。配置的发起者是总线与系统处理器的中介——RC。需要配置的配置地址空间里可以兼容PCI协议,此外对于PCIe做了一定的拓展。原创 2024-10-07 20:35:46 · 2485 阅读 · 0 评论 -
PCIe配置篇(0)——地址空间
这个时候,聪明的人们发现,CPU本身就有一块需要频繁进行数据交互的区域:内存(memory),我们直接把对外设的操作映射成对内存的操作,这样不是更方便了吗,让MMU到时候把对外设的操作转外设不就行了,从CPU的视角,所有的操作就都是对于内存的操作了(别管他是物理的还是虚拟的)。那么CPU如何高效地指挥外设就显得很重要了,最简单的方式,CPU直接把所有的控制信息线输出给外设,这种方式最直接也最愚蠢,当外设数量很多,这显然不是一种好的方式,设计复杂,灵活性差。,这是后话,我们稍后再聊。原创 2024-10-07 19:03:40 · 1255 阅读 · 0 评论 -
从零开始讲PCIe(11)——数据链路层介绍
数据链路层这一层的逻辑是用来负责链路管理的,它主要表现为 3 个功能TLP 错误纠正、流量控制以及一些链路电源管理。它是通过如图 2-24 所示的DLLP(Data Link Layer Packet)来完成这些功能的。原创 2024-10-06 15:50:29 · 1227 阅读 · 0 评论 -
从零开始讲PCIe(10)——事务层介绍
当数据包在各个路由设备(称为服务点)中传递时,数据包的出口端口将被锁定,意味着在路径解锁之前,任何其他数据包都无法沿该方向传递。这种锁定机制最早在PCI规范中提出,原因是当时的规范编写者预计PCI有可能取代处理器总线,因此在PCI规范中加入了处理器在总线上可能需要执行的操作(如锁定事务)的支持。如果完成方在处理过程中遇到问题,它将返回一个没有数据的锁定完成数据包(因为原始的读取请求应该会返回数据,如果没有数据就意味着出现了问题),并且状态字段会指示该错误的相关信息。内存读取请求中的一个重要部分是目标地址。原创 2024-10-06 15:06:22 · 1311 阅读 · 0 评论 -
从零开始讲PCIe(9)——PCIe总线体系结构
总体来说,设备发出的请求或完成数据包的内容首先在事务层(Transaction Layer)中组装,这个过程基于设备核心逻辑提供的信息,这些信息有时也被称为软件层(虽然规范中没有使用这个术语)。当数据包传递到数据链路层(Data Link Layer)时,会在数据包中添加额外的信息,以便在相邻的接收端进行错误检查,并且数据包的副本会在本地存储,以便在发生传输错误时能够重新发送。分层方法对硬件设计者是很有好的,因为如果逻辑划分得当,在迁移到新版本的PCIe规范时,可以只改变现有设计的某一层,而不影响其他层。原创 2024-10-06 15:06:05 · 1065 阅读 · 0 评论 -
从零开始讲PCIe(8)——PCIe拓扑与组件
从软件角度来看,根复合体内部的总线结构会被认为是一个标准的PCI总线,尽管实际上可能并不是物理的PCI总线,但它被设计为对软件呈现为PCI拓扑的一部分,以保持与旧版PCI软件的兼容性。这是由于其使用了非常高的传输速度。无论是根复合体内部的总线,还是交换机的多个端口,系统会通过与PCI相似的方式将其呈现给软件,使得传统的PCI枚举和配置流程能够继续使用。总体而言,根复合体不仅在物理上位于PCIe拓扑的顶部,而且在逻辑上也是整个PCIe系统的控制中心,它与系统中的所有PCIe设备建立连接,协调它们之间的通信。原创 2024-10-06 14:40:34 · 1951 阅读 · 0 评论 -
从零开始讲PCIe(7)——PCIe总线基本概念
PCI Express(PCIe)代表了从前代并行总线模型的重大转变。作为一种串行总线,它在设计上与早期的串行技术(如InfiniBand或Fibre Channel)更为相似,但在软件上保持了与PCI的完全向后兼容性。与许多高速串行传输一样,PCIe采用了双向通信,能够同时发送和接收信息。原创 2024-10-06 14:39:52 · 1607 阅读 · 0 评论 -
从零开始讲PCIe(6)——PCI-X概述
PCI-X 在硬件和软件上与 PCI 具有向后兼容性,同时提供了更高的性能和效率。它使用与 PCI 相同的连接器格式,因此 PCI-X 设备可以插入 PCI 插槽,反之亦然。而且,PCI-X 采用相同的配置模型,因此在 PCI 系统上运行的设备驱动程序、操作系统和应用程序也可以在 PCI-X 系统上运行。原创 2024-10-05 13:58:36 · 1149 阅读 · 0 评论 -
从零开始讲PCIe(5)——66MHZ的PCI总线与其限制
为提高性能,PCI通过增加总线位宽(从32位到64位)和提高时钟频率(从33 MHz到66 MHz)来提升带宽,达到每秒533 MB的传输速度。然而,PCI的并行架构在更高频率下受到电气负载和信号延迟的限制,特别是在66 MHz时,其扩展能力和信号完整性遇到了瓶颈。为了支持更多设备,系统通常需要增加PCI桥接器和更多总线,这不仅提高了成本,还占用了更多板载空间。此外,PCI的并行设计导致带宽共享问题,多个设备同时工作时总线带宽被分摊,影响了整体性能。原创 2024-10-05 13:57:40 · 1541 阅读 · 0 评论 -
从零开始讲PCIe(4)——PCI总线的地址空间分配
PCI架构支持三种地址空间,如图1-10所示:内存地址空间(Memory Map)、I/O地址空间(I/O Map)和配置地址空间(PCI Configure Space)。在x86处理器中,处理器可以直接访问内存和I/O空间。原创 2024-10-04 15:03:58 · 3103 阅读 · 0 评论 -
从零开始讲PCIe(3)——Functions&Device&Bus&System
功能(function):是PCI设备中独立的功能单元,最多可以有8个功能。设备(device):是物理设备,连接在PCI总线上,可能包含一个或多个功能。总线(bus):是设备和系统通信的通道,一个系统可以有多个总线,每个总线最多可以有32个设备。系统(system):是整个计算平台,包括CPU、内存、多个PCI总线和连接的设备与功能。原创 2024-10-04 13:33:14 · 2111 阅读 · 0 评论 -
从零开始讲PCIe(2)——PCI总线传输模型与机制
在之前的内容中,我们已经对PCI有了一些基本的认识,我们了解了PCI的一般架构,标准传输周期等相关的内容,接下来我们会进一步了解PCI具体的传输模型与机制原创 2024-10-04 13:30:20 · 2452 阅读 · 0 评论 -
从零开始讲PCIe(0)——外设与外设总线
凭借这些优势,PCI很快成为PC中标准的外围总线。ISA总线适用于设计时的286 16位设备,但对于更新的32位设备及其外设而言,ISA在带宽和功能上都有所不足,尤其是即插即用等改进功能的需求日益增加。这些设备可以是输入设备、输出设备、存储设备或通信设备等,外设(外围设备)通过输入、输出、存储和通信等方式帮助计算机与用户和其他设备进行交互,使计算机成为更通用、更灵活的工具。这种演变反映了技术上的妥协和改进:为了支持更高的传输速度和频率,必须减少总线上的设备数量或者改进总线架构,如从共享总线转向点对点互连。原创 2024-10-03 21:48:59 · 1185 阅读 · 0 评论 -
从零开始讲PCIe(1)——PCI概述
我们已经知道了PCIe是一种外设总线协议,其前身是PCI和PCI-X,虽然PCIe在硬件上有了很大的进步,但其使用的软件与PCI系统几乎保持不变。这种向后兼容性设计,目的是使从旧设计到新设计的迁移更加顺畅,通过尽可能简单、低成本的方式进行软件更改。因此,旧的PCI软件在PCIe系统中可以不做任何更改地运行,而新的软件也会继续使用相同的操作模型。虽然现在PCI和PCI-X已经基本退出市场,但是PCIe中的很多设计和机制都是源自于此,所以,理解PCI及其操作模型将有助于更好地理解PCIe的工作原理原创 2024-10-03 21:48:33 · 2377 阅读 · 0 评论 -
XDMA原理学习(1)——DMA技术详解
DMA 技术是Direct Memory Access的缩写,其意思是“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。DMA是所有现代计算机的重要特色,它允许不同速度的硬件设备进行沟通,而不需要依于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的数据复制到寄存器,然后把它们再次写回到新的地方。在这个时间里,中央处理器就无法执行其它的任务。原创 2024-07-08 19:49:39 · 5088 阅读 · 0 评论 -
从零开始讲DDR(6)——MIG IP核配置
xilinx的MIG IP核配置方式详细说明原创 2025-01-06 16:53:24 · 2554 阅读 · 4 评论 -
从零开始讲DDR(5)——读懂Datasheet
对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。原创 2024-09-22 23:47:53 · 3083 阅读 · 0 评论 -
从零开始讲DDR(4)——Xilinx方案
Xilinx UltraScale™架构中的DDR3/DDR4 SDRAM ip核旨在支持高性能的内存接口解决方案。这些ip可以用于将DDR3和DDR4 SDRAM内存类型集成到设计中,提供完整的内存控制器和物理层(PHY)解决方案。原创 2024-09-22 20:16:58 · 2594 阅读 · 0 评论 -
从零开始讲DDR(3)——DDRC与DDRPYH
显然对于一个DDR的使用者来说,我们不想应付这么复杂的初始化过程,这会大大增加我们的开发周期和难度,因此,最好有人可以给我们提供一个封装好的DDR操作接口,让我们只需要处理一些读写相关信号即可,芯片制造商也是这么想的,因此不同的厂商也会提供自己的解决方案原创 2024-09-20 15:39:11 · 3677 阅读 · 0 评论 -
从零开始讲DDR(2)——DDR的核心技术
我们知道DDR区分于之前的SDRAM最大的点就在于它可以做到“在时钟周期的上升沿和下降沿都能传输数据,这样它的传输速率就比SDRAM快了一倍”。其实要做到这点,背后需要的技术突破体现在很多层面原创 2024-09-19 21:56:49 · 2988 阅读 · 0 评论 -
从零开始讲DDR(1)——DDR简介
传统的SDRAM只在时钟信号的上升沿传输数据,而DDR可以同时在时钟的上升沿和下降沿传输数据,因此在同样的时钟频率下,DDR内存的传输速率是SDRAM的两倍。在这里我们暂时不关心cpu与DDR之间的联系了,我们聚焦于DDR内存芯片本身,对于一个完整的DDR芯片,我们把它考虑成一个chip的概念。chip不必多说,bank代表的就是区域,如果把DDR理解成一组存放了不同数据的表格,那么Bank(简写B)就是用来区分不同表格的,而row(简写R)表示行地址,Column(简写C)表示列地址。原创 2024-09-19 16:16:51 · 4119 阅读 · 0 评论 -
从零开始讲DDR(0)——DDR的前世今生
内存技术的发展一直围绕着存储速度、容量、功耗和成本的平衡展开,未来随着计算需求的增长和新材料、新工艺的发展,内存技术将继续向更高效、更密集的方向演进。本文 介绍了内存发展的基本历程和DDR的前世今生原创 2024-09-18 20:36:58 · 2326 阅读 · 0 评论