Image processing Verilog代码,用于从输入图像帧计算行数和列数
我遇到了verilog模块的问题,它是一个非常大的CMOS相机图像代码的一小部分。该模块接收clk和reset作为输入,并输出hsync、vsync、pixclk和像素数据。该代码读取图像并将其保存到内存中,然后执行一系列if else语句,如:Image processing Verilog代码,用于从输入图像帧计算行数和列数,image-processing,verilog,Image Processing,Verilog,我遇到了verilog模块的问题,它是一个非常大的CMOS相机图像代码的一小部分。该模块接收clk和reset作为输入,并输出hsync、vsync、pixclk和像素数据。该代码读取图像并将其保存到内存中,然后执行一系列if else语句,如: if (row_count<NUM_ROWS-1) && (col_count< NUM_COLS) begin vsync <=1; hsync <=1 ; pixe_data <= mem[
if (row_count<NUM_ROWS-1) && (col_count< NUM_COLS)
begin
vsync <=1;
hsync <=1 ;
pixe_data <= mem[row_count*NUM_ROWS+col_count];
end
else if
......
if(row\u count约束操作的非法操作数可能是由于mem
的维度造成的。维度需要是常量,例如reg[DATA\u SIZE-1:0]mem[row\u MAX*COL\u MAX-1:0];
您需要确定要处理的最大图像大小。如果最大尺寸不是2**N
,则需要实施一些保护措施,例如,发出错误信号,不处理任何内容、截断图像或其他内容
我不知道如何在不编写自定义PLI的情况下找到未知图像尺寸的行和列。$fscanf
可以读取图像数据,您很可能希望使用%u
用于格式化组件。如果图像在文件本身中包含有关其尺寸的信息,则可以使用$fscanf
或$fread
提取信息
其他注意事项,从原始代码中剪掉它:
pixe_data <= mem[row_count*NUM_ROWS+col_count];
pixe_数据我假设使用文件实用程序仅用于测试台目的,并且DUT(主模块)将获得x和y分辨率。
pixe_data <= mem[row_count*NUM_COLS+col_count];