ozg*_*ral 4 verilog fpga system-verilog quartus
我正在尝试编译用于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
Run Code Online (Sandbox Code Playgroud)
我按如下方式访问它
if( mem_R[total_current-127510] > 0)
begin
menu_red = 1;
end
Run Code Online (Sandbox Code Playgroud)

首先,一些背景:
由于图像的大小,你可能会得到"未满足时序要求" - 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