0

我正在使用 VHDL 进行图像处理项目。它是使用另一个密钥图像对一个图像进行加密的过程。

我为图像创建了一个类型

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

我使用文件读取选项来读取图像。我必须在原始图像和关键图像之间执行异或运算,并且必须进行一些像素加扰。

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

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

4

1 回答 1

2

你是想合成这头野兽吗?您正在尝试生成 256x256x8 位 = 524k 位的图像。这意味着您使用 524k 寄存器来存储一个图像。对于很多 FPGA 来说,这已经超出了他们所能提供的范围!您需要考虑您对芯片资源的利用。

在进行图像处理时,您需要逐行进行处理。您不能一次存储整个图像,除非您使用片外存储(例如 DDR 存储器)或者您仔细利用内部 Block RAM 存储。处理图像时,您一次读取一行,将其缓冲到 FIFO,然后执行您需要执行的任何操作,并将结果写回 DDR 内存或块 RAM。

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

于 2013-10-03T13:57:51.163 回答