Un método de simulación de procesamiento de imágenes FPGA de Modelsim + matlab

1. Estructura básica

       Utilice la herramienta modelsim, llame a la función del sistema Verilog, lea los datos de la imagen en el grupo de memoria del banco de pruebas. Después del procesamiento, llame a la función del sistema para guardar los datos como un archivo. Estas funciones del sistema no se pueden integrar en el hardware y solo se utilizan para pruebas de simulación. Los datos de imagen deben ser generados por matlab, porque las imágenes ordinarias se comprimen y almacenan, y las imágenes deben restaurarse al flujo de datos rgb o ycrcb original. De la misma manera, los datos originales de la imagen guardada deben ser procesados ​​por matlab y convertidos a un formato de imagen que se pueda usar para mostrar.

2. Llamar a funciones del sistema relacionadas

1 、 $ readmemh

Método de llamada: $ readmemh ("<nombre del archivo de datos>", <nombre de la memoria>); Por ejemplo:

`timescale 10ns/1ns
module test;
reg set;
reg[15:0] memory[0:7];    //注意这里每个存储单元的长度为16位,因为每个数字是四位十六进制数,换算成二进制数是16位
reg[4:0] n;
initial
	begin
		$readmemh("file2.txt",memory);
	for(n=0;n<=7;n=n+1)
		$display("%h",memory[n]);
	end
endmodule
————————————————
版权声明:本文为CSDN博主「east1203」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_38037810/article/details/79598647

expandir:

(1) $ readmemh lee el archivo en formato hexadecimal, de manera similar $ readmemb lee el archivo en formato binario

(2) El archivo "file2.txt" puede incluir una ruta. Si la ruta no está incluida, se almacenará en el mismo directorio de archivos del banco de pruebas de forma predeterminada. Cuando incluya la ruta, use "/",

       如 "D: /xxx/file2.txt"

2 、 $ fopen 、 $ fdisplay

       Escribir un archivo es un poco más problemático. Necesita definir una variable y usar la instrucción $ fopen para abrir un archivo para obtener el identificador del archivo, y luego usar el comando $ fdisplay para escribir. Por supuesto, hay otros comandos de escritura de archivos, pero cada vez que se escribe $ fdisplay Cambiará automáticamente a la siguiente línea, que es más conveniente de usar

integer out_frame0;
initial
begin//获取文件句柄
    out_frame0 =  $fopen("C:/Users/...../out_frame0.dat","w");
end

always @(posedge pclk)
begin
    if (file_out_en == 1)
        $fdisplay(out_frame0,"%h",pixel_data_wr);
end

 

Supongo que te gusta

Origin blog.csdn.net/a1254484594/article/details/105562302
Recomendado
Clasificación