2013-10-03 111 views
0

我正在使用VHDL进行图像处理中的一个项目。它是使用另一个关键图像对一个图像进行加密的过程。图像处理非VHDL综合需要花费很多时间

我创建了图像的类型

type image is array (1 to 256,1 to 256) of std_logic_vector(7 downto 0); 

我使用的文件读取选项来读取image.i不得不perofrm原始图像和关键图像之间的EXOR运算,有的争先恐后像素的有做完了。

最初我将图像声明为信号。即使我获得了正确的输出,运行该程序也会让我的系统挂起。因此,我将所有图像转换为变量并顺利获得输出,没有任何悬而未决的问题。

但问题出在综合。现在的代码没有合成。我删除了文件的读写部分。我运行了一整天的综合。但我仍然没有得到结果。为什么它是需要这么多时间以及如何解决这个问题?

回答

2

您是否试图合成这个野兽?您正在尝试生成256x256x8位= 524k位的图像。这意味着只需存储一张使用524k寄存器的图像。对于很多FPGA而言,这比它们的可用性要多得多!你需要考虑你的芯片资源的利用率。

进行图像处理时,需要逐行进行处理。除非您正在使用DDR存储器之类的片外存储器,或者您小心使用内部Block RAM存储器,否则无法一次存储整个映像。处理图像时,一次读出一行,将其缓存到FIFO中,然后执行任何需要执行的操作,然后将结果写回到DDR存储器或块RAM。

试图保留整个图像在分布式RAM是一个坏主意。

+0

如果我正在使用信号而不是变量呢?是否会出现同样的问题? – MSD

+1

变量与信号无关。这些工具仍在尝试合成512k的分布式RAM。以下是关于差异的一篇文章:http://stackoverflow.com/questions/15485749/vhdl-variable-vs-signal – Russell

相关问题