【发布时间】: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