gpt4 book ai didi

verilog $readmemh 对于 50x50 像素的 rgb 图像花费太多时间

转载 作者:行者123 更新时间:2023-12-05 00:59:40 25 4
gpt4 key购买 nike

我正在尝试为 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

compilation report for 50x50 pixels

最佳答案

首先介绍一下背景:

由于图像的大小,您很可能会遇到“未满足时序要求” - 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

关于verilog $readmemh 对于 50x50 像素的 rgb 图像花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com