关于verilog:FPGA大输入数据

FPGA large input data

我正在尝试向 FPGA 发送一个 4 KB 的字符串,最简单的方法是什么?

这是我正在使用的 fpga 的链接。我正在使用 Verilog 和 Quartus。


您的问题的答案很大程度上取决于将这些数据输入 FPGA 的原因。即使您不需要遵守特定的协议(SPI、以太网、USB 等),也存在您需要多快接受数据以及数据必须传输多远的问题。如果速度很慢,您可以使用带有并行数据总线和时钟的常规 IO 引脚创建一个简单的接口。如果它更快,您可能需要探索使用高速串行接口和芯片上可用的特殊硬逻辑来处理这些速度。即使速度较慢,但??数据需要传输一段距离,串行接口也可能是降低电缆成本的好主意。

我想在@gbuzogany 的回答中添加一件事:您可能希望将 FPGA 中的内存块配置为 FIFO,这样您就可以处理以不同于 FPGA 内部时钟的速率运行的数据输入时钟.


您可以使用您的 FPGA 模块在 FPGA 芯片内创建一个存储器(您可以在 Quartus 中做到这一点)。创建助手允许你用任何你想要的东西来初始化这个内存(例如:一个 4KB 的字符串)。问题是 FPGA 内存使用了您的许多 FPGA 块,但对于这样的板,它一定不是问题。

这是一个视频,解释了如何在 Quartus 上做到这一点:

https://www.youtube.com/watch?v=1nhTDOpY5gU


有两种方式:
1. 您可以使用 Xilinx Core Generator 创建一个内存块,然后将初始数据加载到内存中,然后将这些数据用于代码。当然,您必须将字符串转换为二进制数据。
2. 你可以写一段代码,它有一个内存来存储字符串,它可以是一个先进先出的 FIFO 内存。然后,您编写一个测试台来从文本文件中读取字符串并将数据写入 FIFO。您的 FPGA 可以从 FIFO 中读取字符串。


您可以使用字符串进行内存初始化。在 Verilog 中的"初始开始结束"块中很容易。