Verilog访问内存地址

时间:2013-05-01 02:34:23

标签: memory file-io location verilog fpga

我正在开发一个Nexys 3 FPGA项目,用Xilinx上的Verilog编写,需要一些文件输入和输出(最好是编程FPGA的计算机。)使用程序Adept,你可以编写到一个FPGA存储器的某个特定地址。您还可以读取同一内存空间中的特定地址。

这可能是解决我的问题的完美解决方案 - 但是如何使用Verilog访问这些记忆?

例如:在状态S2中,我想在内存中读取位置00000(我之前在步骤S1中使用Adept加载过。)如何访问此数据,处理它,然后重写记忆的另一部分?提前谢谢。

2 个答案:

答案 0 :(得分:1)

我记得,Adept在通常的FPGA逻辑“外部”工作,通过JTAG访问RAM。它可能会将它们映射为一个大的“块” - 您必须阅读文档以找出RAM的访问顺序。

如果你想从Verilog访问它们,你首先需要实例化(即直接写一些代码“使用像这样的ram块”)或推断出一块RAM(编写“看起来像”行为的代码一个RAM时钟 - 然后工具将把它搞清楚。如果您阅读合成器的文档,它将描述这两种方法。

然后你的逻辑可以控制RAM的数据,地址和控制线,以便从中读取和写入。

一旦你可以创建一个RAM,并且知道你用Adept写入了多少块RAM,那么你必须确保FPGA构建工具将你的RAM块放在正确的位置以便你访问与Adept合适的人。无论是那个或每次构建FPGA,你都要检查它的去向并改变你的Adept设置以访问不同的RAM ......你确定这是与FPGA通信的最佳方式吗?

答案 1 :(得分:1)

董事会有不同类型的内存,你写的是哪一个?您是在写入FPGA内部的存储器还是板上的一个存储器? Nexyx 3拥有这三个记忆:

  • 16Mbyte Micron Cellular RAM
  • 16Mbyte Micron Parallel PCM
  • 16Mbyte Micron四模SPI PCM
有些很容易访问有些更难,如果你澄清你想要访问哪一个,它将更容易回答你的问题。

您可以从Nexys 2的示例文件中找到帮助:

  

“EDK项目,演示了如何通过I / O多路复用器连接BSB共享总线,允许访问Nexys2-500上的RAM和FLASH存储器。使用EDK 11制作。”   您可以在此处找到这些文件:http://www.robotshop.com/content/ZIP/nexys2-500-edk-11-ram-flash-nexys2-500k.zip