Memory Verilog访问内存地址

Memory Verilog访问内存地址,memory,file-io,location,verilog,fpga,Memory,File Io,Location,Verilog,Fpga,我正在做一个关于Nexys 3 FPGA的项目,用Verilog在Xilinx上编写,需要一些文件输入和输出(最好是到刚刚编程FPGA的计算机)。使用程序Adept,您可以写入其中一个FPGA存储器的特定地址。您还可以读取同一内存空间中的特定地址 这可能是解决我问题的完美方法,但是你如何使用Verilog访问这些内存呢 例如:在状态S2中,我想读取位置00000处的内存(我之前在步骤S1中使用Adept加载了该位置)。如何访问该数据、处理该数据,然后重写内存的不同部分?提前感谢。我记得,Adep

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

这可能是解决我问题的完美方法,但是你如何使用Verilog访问这些内存呢


例如:在状态S2中,我想读取位置00000处的内存(我之前在步骤S1中使用Adept加载了该位置)。如何访问该数据、处理该数据,然后重写内存的不同部分?提前感谢。

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

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

然后,您的逻辑可以控制RAM的数据、地址和控制线,以便对其进行读写


一旦您可以制作一个RAM,并且知道您正在使用Adept写入的RAM的许多块中的哪一块,那么您就必须确保FPGA构建工具将您的RAM块放置在正确的位置,以便您使用Adept访问正确的RAM块。无论是这样,还是每次构建FPGA时,您都必须检查它的去向,并更改您的熟练设置以访问不同的RAM。。。您确定这是与FPGA通信的最佳方式吗?

电路板具有不同类型的内存,您要写入哪种类型的内存?您是在写入FPGA内部的内存还是板上的某个内存? Nexyx 3在板上有以下3个存储器:

  • 16Mbyte微米蜂窝RAM
  • 16Mbyte微米并行PCM
  • 16字节微米四模SPI PCM
有些很容易访问,有些则更难,如果您澄清要访问哪一个,那么回答您的问题就会更容易

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

EDK项目,演示如何通过I/O多路复用器连接BSB共享总线,允许访问Nexys2-500上的RAM和闪存。使用EDK 11制作 您可以在此处找到这些文件:


谢谢,我想我必须做一些相当复杂的事情来在我的代码中设置RAM,但我如何协调Adept手动内存写入和Verilog合成内存访问之间的地址?我从未使用Adept访问内存,但我认为它访问内存就像您的Verilog代码应该访问的一样,而且位置应该是一样的。谢谢,我相信我是在写16MB的RAM,尽管Adept有写其他RAM的选项(如果这些选项在代码中更容易实现的话)。这个示例项目非常有用,我会看看是否能从中找到解决方案。