Altera FPGA如何存储字节地址?

时间:2018-12-15 19:49:53

标签: memory architecture fpga addressing

我使用宏功能在fpga中生成32位数据存储器。但是输出一次被寻址为32位(4字节),如何进行1字节寻址? 我有Altera Cyclone IV ep4ce6e22c8。

1 个答案:

答案 0 :(得分:2)

  

我正在fpga中设计32位CPU,

如今,每个CPU地址总线都以字节为单位工作。因此,不要访问LS 2地址位来访问32位宽的存储器。读取时,可以使用A [1:0]地址位从存储器中选择一个字节(或仅使用A [1]使用半字)。

您仍然需要四个字节的写使能信号。这使您可以写字,半字或字节。

看看现有的CPU总线或现有的连接标准,例如AHB或AXI。


帖子编辑:

  

但是读取地址0001,我得到0x05060708,但所需值为0x02030405。

您要执行的操作是从未对齐的地址中读取一个单词。没有现有的支持该功能的32位宽内存。我建议您看看32位宽的内存如何工作。

旧的摩托罗拉68020架构支持这一点。它需要一个特殊的存储器控​​制器,该控制器首先从地址0读取数据,然后从地址4读取数据,然后将数据重新组合为一个新的32位字。

随着内存成本的下降和减少CPU周期变得越来越重要,没有现代的CPU支持这一点。他们抛出了一个异常:未对齐的内存访问。

您有几种选择:

  1. 构建一个特殊的内存控制器,该控制器支持未对齐的访问。

  2. 调整您的期望。

我会选择后者。通常,它是基于错误的思想来说明存储器是如何工作的。作为合并:您不是本网站上第一个认为这是您从记忆中读取单词的人。