【问题标题】:verilog $readmemh takes too much time for 50x50 pixel rgb imageverilog $readmemh 对于 50x50 像素 rgb 图像需要太多时间
【发布时间】:2015-08-05 18:07:34
【问题描述】:

我正在尝试为 FPGA 编程编译一个 verilog 代码,我将在其中实现一个 VGA 应用程序。我使用 QuartusII 和 Altera。我正在尝试正确使用 readmemh 逐像素获取图片。

目前,我已经使用 matlab 将图片转换为 rgb 文本。每个都具有以下格式,仅此而已(示例): 03 A0 15 B7 ...

目前我没有收到任何语法错误,但是我必须定义三个寄存器,每个寄存器都有 50x50 = 2500 位,而且它的编译速度很慢,并且我收到“不满足时序要求”警告。

当我想使用分辨率更高的文件时(640x480 会很好,但它似乎是禁区),情况要糟糕得多。获得 200x200 像素图像需要 15 分钟,.sof 文件大约 6MB。

难道没有办法将 readmemh 用于大输入吗?

这就是我所做的阅读

...
reg [7:0] mem_R[0:2499];
reg [7:0] mem_G[0:2499];
reg [7:0] mem_B[0:2499];

initial begin

...

$readmemh("menuR.txt", mem_R);
$readmemh("menuG.txt", mem_G);
$readmemh("menuB.txt", mem_B);

end

我按如下方式访问它

if( mem_R[total_current-127510] > 0)
begin
menu_red   = 1;
end

【问题讨论】:

  • 我对此并不熟悉,但是使用 C++ Gdi,获取和设置像素函数非常慢。我相信这是因为每次调用它都必须计数。 Ex: Set(0, 6) to color 它必须从头开始,然后是 0, 1, 2, 3, 4, 5, 6,然后继续。
  • 你知道用 C++ 解决它的方法吗?感觉应该是有的,因为即使插上VGA接口,载入画面也是640x480的高画质。我不认为 Altera 等待他们格式化他们的 FPGA 只是为了放一张图片。
  • 你能在你的编译报告中显示截图吗?
  • 我刚加了,50x50的时间是5分钟,100x100跳到12分钟

标签: verilog fpga system-verilog quartus


【解决方案1】:

首先,一些背景:

由于图像的大小,您可能会收到“未满足时序要求” - 50x50x8x3 是相当多的存储位,如果它试图将它们存储到逻辑而不是片上 RAM 中则更是如此。

640x480 图像为 900 kB,因此只有最大的 FPGA 才能存储它们,即使在片上 RAM 中也是如此 - 例如,最大的 Cyclone IV 只有 810 kB 的嵌入式存储器。如果您打算使用这种大小的图像,请考虑连接片外 RAM。

您在启动时看到的图像可能是存储在 EPCS 中的图像 - 一个 2MB 到 16MB 的闪存,用于在启动时加载默认配置。它加载配置(就像通过 USB 编程一样)和任何片上存储器。如果您使用的是 Altera DE 系列板卡之一,则启动图像不会存储为 640x480 - 它由硬件放大到该分辨率。

另外,您提到的 15 分钟是指编译时间还是将 .sof 加载到芯片所需的时间?请注意,如果您指的是 HDL 编译,则并非不合理。 Quartus 不仅需要编译您的 HDL,还需要确定它需要哪些逻辑元素、将它们放置在芯片上的什么位置以及如何连接它们。大型设计可能需要数小时或更长时间才能构建。

最后,至于您的问题,您可能还想查看 .mif(内存初始化文件)和/或 .hex 文件与片上/片外 RAM IP 内核相结合,因为它们可能更适合您的需要。见:http://quartushelp.altera.com/14.1/master.htm#mergedProjects/reference/glossary/def_mif.htm

【讨论】:

  • 我指的是编译时间,这导致提到的 6MB 胆汁。非常感谢您的洞察力,它帮助了很多。现在我知道我应该使用 50x50、100x100 之类的东西,或者将数据存储在某个地方。由于我没有太多时间来完成我的项目,我会先选择较小的规模。但是,如果您还知道一种仅使用 verilog 存储完整图像的快速方法,我将非常感激。 (我还应该将 SD 卡等连接到 FPGA 吗?)我发现这个有用的链接和示例可能有助于解决问题:alteraforum.com/forum/showthread.php?t=3770
猜你喜欢
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多