我这种输入方法需要输入的是ASCII码值,所以只有转换成.RAW类型的grayscale才可以实现,而且最大可以实现65533bit
以下为程序:
// Verilog Test Fixture Template
`timescale 1 ns / 1 ps
module pic();
parameter size = 4096;
reg CLK;
reg nRESET;
reg [7:0] image_b [0:size-1];
integer read_image_point;
integer image_point;
reg [7:0]data_out;
reg[12:0] write_addr;
integer write_text_point; %integer和reg都是定义寄存器,其中integer是定义有符号数.
initial begin
CLK = 0;
nRESET = 0;
read_image_point = $fopen("pic64.raw", "rb+"); %rb为只读,rb+为读写
image_point = $fread(image_b, read_image_point);
write_addr = 0;
write_text_point = $fopen("pic.txt", "wb+");
#10;
nRESET = 1;
end
initial
begin
forever begin
#5 CLK = ~CLK;
end
end
integer m,n;
always@(posedge CLK)
begin
for(m=0;m<=63;m=m+1)
for(n=0;n<=63;n=n+1)
begin
write_addr = 64*n + m;
data_out = image_b[write_addr];
$fwrite(write_text_point,"%h",data_out);
$fwrite(write_text_point,",");
end
$fclose(write_text_point);
end
endmodule