极术小姐姐 · 2019年12月19日

部分字访问Altera Avalon存储器映射从站

当我说部分字访问时,是指16位(两个字节)或8位(字节)读/写。

背景:

在我们最近的项目之一中,Cyclone V SoC用于替换现有产品中的386 CPU。

我负责开发板和FPGA设计。另一位软件工程师正在DS5环境下开发软件。

Avalon MM从接口用于FPGA端。

问题描述:

在Altera系统控制台上一切正常。但是,当软件工程师在DS5上调试其代码时,其行为会有所不同。

他无法从不是4的倍数的地址中读取数据。

例如,他可以从地址0x800读取一个字(32位)或半字(16位)或一个字节,但他不能从地址0x802读取任何内容(始终返回零)。

进行故障排除:

我认为这与数据应放在32位数据总线上的位置有关。因此,我修改了FPGA代码以复制32位总线上的数据,

但是DS5仍然读取全零。

还尝试运行SignalTap捕获波形,但DS5和SignalTap

不能通过同一JTAG连接器同时运行。

有人知道可能是什么问题吗?

1 个回答 得票排序 · 时间排序
棋子 · 2019年12月19日

我昨天刚解决了这个问题。

问题在于
AXI-Avalon桥生成的可收视信号。声明仅在一个时钟周期内校正值。

要访问地址0x802,小对象必须为“ 1100”,并且
在整个事务过程中应保持相同的值。但是,它
仅在一个时钟周期内保持有效,然后更改为其他值。

我必须修改我的FPGA代码以锁存可扩展信号,
并在FPGA逻辑中使用锁存值。

Altera系统控制台使用的Avalon Master
在整个交易过程中会生成正确的可变信号。这就是为什么我的FPGA
在系统控制台上运行良好,但在DS-5上却失败的原因。

你的回答