关键问题
由于英特尔® Quartus® Prime 专业版软件版本 19.3 出现问题,适合 PCI Express 的英特尔® P-Tile/H-Tile Avalon®内存映射 (Avalon-MM) IP 配置了多个不同尺寸的 BAR,BAM 上层地址不会根据 BAR 大小正确进行屏蔽。如果系统不将 BAR 物理地址与最高 BAR 大小对齐,则用户侧大小上的地址字段将不正确。
例如,BAR0:64KB 和 BAR2:1MB,系统分配以下物理地址:
面向 BAR0 的 F021000
面向 BAR2 的 F020000
BAM 地址为 20 位
当系统发出针对 BAR0 偏移0x800的写入或读取请求时,BAM 接口将输出地址0x10800,而不是0x00800
为解决英特尔® Quartus® Prime Pro Edition 软件版本 19.3 和 19.4 的这一问题,应用可以在外部使用 BAM BAR 管道 (bam_bar_o) 和 BAR 大小实施地址遮盖。
例如:
分配 bam_address_fix = (bam_bar_o== 3'b000) ?{4'b0,bam_address_o [15:0]} :bam_address_o;
英特尔® Quartus® Prime Pro Edition 软件版本 20.1 解决了此问题。