0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA逻辑中关于地址映射说明

454398 来源:CSDN博主 作者:慕田会 2020-11-20 15:28 次阅读

背景与问题

CPU+FPGA架构,CPU做RC、FPGA做EP;

• FPGA逻辑(Vivado ->BD -> Address Editor)中如何设置PCIe to AXI Translation;

• FPGA逻辑中如何设置AXI to PCIe Address Translation。

1. Root Complex到Endpiont

1.1 Root Complex到Endpiont,即PCIe域(Root Complex中的系统地址空间)到AXI域(FPGA逻辑中的AXI地址空间)。PCIe发起的对Endpoint的访问应在Endpoint申请的BAR空间内,Endpoint申请BAR空间时申明了地址空间的大小(比如256M,而且我们假设这256M空间对应AXI域中0x3000_0000~0x3FFF_FFFF),而Root Complex则根据实际情况决定从某个地址开始分配一段地址空间给Endpoint(比如0x4000_0000~0x4FFF_FFFF)。

1.2 PCIe想对Endpoint中的0x3000_0010地址发起一次访问。PCIe发出访问的地址为0x4000_0010,FPGA的PCIe Core会收到相应BAR空间中的有效地址偏移0x10,PCIe Core使用有效地址偏移+ C_PCIEBAR2AXIBAR(根据1.1中的假设,这个值为0x3000_0000)作为其AXI总线访问的地址。

2. Endpiont到Root Complex

2.1 假设PCIe域和AXI域的映射跟1. Root Complex到Endpiont的设定相同。

2.2 来自映射地址为0x3000_0000~0x3FFF_FFFF的AX总线访问给出的地址0x3000_1234会被PCIe Core剥离出有效偏移地址0x1234,使用该偏移地址+C_AXIBAR2PCIEBAR作为PCIe TLP的地址发送给Root Complex。C_AXIBAR2PCIEBAR的值应该设为Root Complex给Endpoint分配的地址空间的首地址,即0x4000_0000。

图1 地址映射说明

3. 总结与疑问

3.1 总结

• 地址空间的有效偏移地址。

• 地址空间的首地址。

3.2 疑问

CPU发出的访问地址到FPGA的PCIe IP是如何被提取出有效偏移地址的? PCIe的配置空间里记录了CPU分配的BAR空间的首地址?

参考文献
[1] pg055-axi-bridge-pcie↩︎.
[2] Xilinx_Answer_65062_AXI_PCIe_Address_Mapping↩︎.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21281

    浏览量

    592856
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10412

    浏览量

    206467
  • PCIe
    +关注

    关注

    13

    文章

    1079

    浏览量

    80741
收藏 人收藏

    评论

    相关推荐

    操作系统中的逻辑地址和物理地址

    本文是关于操作系统中逻辑地址和物理地址之间的区别。计算机操作系统中的内存使用两种不同类型的地址;物理地址
    发表于 09-14 14:26 3126次阅读

    Matlab算法映射FPGA硬件逻辑

    引言:本文分享一篇技术PPT,该PPT主要介绍如何将算法映射FPGA或ASIC硬件架构。
    的头像 发表于 01-30 17:37 1941次阅读

    Linux内核地址映射模型与Linux内核高端内存详解

    的数据可能不在内存中。 Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型。进程代码中的地址
    发表于 05-08 10:33 3325次阅读
    Linux内核<b class='flag-5'>地址</b><b class='flag-5'>映射</b>模型与Linux内核高端内存详解

    关于ARM地址映射的理解

    对于刚刚学习ARM嵌入式的人来说,遇到的第一个难点我觉得就是地址映射的原理,往往会被一些概念弄得稀里糊涂(比如像我这种智商不高的)。所以就静下心自己好好研读了以下杜春雷《ARM体系结构与编程》有关
    发表于 12-08 09:37

    关于6678 SRIO地址映射

    您好!       两块6678DSP通过SRIO建立连接,对于SRIO来说:      1.这两块DSP的地址是怎样映射的?       2.映射是怎样建立的?      3. 双方的设备ID有没有参与到
    发表于 06-21 09:37

    hyperlink地址映射方式不对

    的,core0的映射地址是segment0,2,4,6 core1映射地址是segment1,3,5,7我不知道我对于privid的理解是否正确,希望能得到解答!下图是
    发表于 12-28 11:09

    地址映射问题

    ............................. 在ccs调试 显示update()地址是 0x80005000,那 怎么看update(point)在该位置的,内存映射呢? 地址
    发表于 06-13 11:35

    C6678逻辑地址映射问题

    `按照TI手册示例,通过设置XMPAX寄存器将MSMC映射到不同的不同的逻辑地址区域。映射后,逻辑地址
    发表于 04-24 16:38

    地址映射和寄存器映射原理分别是什么

    映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给物理存储器分配逻辑地址的过程就称为存储器
    发表于 03-02 06:36

    ARM启动代码及地址映射

    ARM启动代码及地址映射
    发表于 02-11 11:00 104次下载
    ARM启动代码及<b class='flag-5'>地址</b><b class='flag-5'>映射</b>

    逻辑信道到传输信道的映射

    逻辑信道到传输信道的映射
    发表于 09-18 15:21 1247次阅读

    可编程逻辑阵列fpga和cpld说明

    可编程逻辑阵列fpga和cpld说明
    发表于 03-30 09:30 25次下载

    STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化

    文章目录一、STM32F103系列芯片的地址映射和寄存器映射原理1.寄存器2.地址映射和寄存器映射
    发表于 12-05 14:21 10次下载
    STM32F103系列芯片的<b class='flag-5'>地址</b><b class='flag-5'>映射</b>和寄存器<b class='flag-5'>映射</b>原理,GPIO端口的初始化

    2020.4.14 第四次 寄存器地址名称映射

    中的操作:GPIOA->ODR=0x00000000;以GPIOA为例说明STM32寄存器和名称的映射:GPIOA下的某个寄存器,挂载在GPIOA下,地址为GPIOA基地址+偏移
    发表于 12-08 17:51 9次下载
    2020.4.14  第四次 寄存器<b class='flag-5'>地址</b>名称<b class='flag-5'>映射</b>

    STM32/CPU地址映射的概念

    很多人对总线和地址映射的概念都是一头雾水,但是我们如果知道为何需要总线和地址映射,他们是在什么背景下被衍化出来的,自然而然对此概念就清清楚楚了。
    的头像 发表于 07-24 11:14 615次阅读
    STM32/CPU<b class='flag-5'>地址</b><b class='flag-5'>映射</b>的概念