【问题标题】:how Byte Address memory in Altera FPGA?Altera FPGA中的字节地址存储器如何?
【发布时间】:2018-12-15 19:49:53
【问题描述】:

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

【问题讨论】:

  • 为了获得好的答案,我们需要更多信息。但很可能:对于读取,您需要选择正确的字节通道,对于写入,您必须生成一个启用字节写入的内存。
  • 我在 fpga 中设计一个 32bit CPU,ram 是 32bit 地址输入和 32bit 输出数据。我使用 Quartus 2 中的大型函数中的 lpm_ram_dq 作为 ram,但问题是它解决了 32 位(字节)而不是单个单独的字节。

标签: memory architecture fpga addressing


【解决方案1】:

我正在用 fpga 设计一个 32 位 CPU,

现在每个 CPU 地址总线都以字节为单位。因此,要访问您的 32 位宽内存,您不应连接 LS 2 地址位。读取时,您可以使用 A[1:0] 地址位从内存中选择一个字节(或仅使用 A[1] 的半字)。

您仍然需要四个字节的写使能信号。这允许您写入字、半字或字节。

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


后期编辑:

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

您要做的是从非对齐地址中读取一个单词。没有支持它的现有 32 位宽内存。我建议你看看 32 位宽内存是如何工作的。

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

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

您有多种选择:

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

  2. 调整您的期望。

我会选择后者。一般来说,它是基于错误的记忆是如何工作的。作为巩固:你不是这个网站上第一个认为这是你从记忆中阅读单词的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多