如何给Verilog中的数组初始化赋值?
发布网友
发布时间:2022-04-20 07:28
我来回答
共4个回答
热心网友
时间:2023-09-19 22:28
【1】Image_BMP应该是一个memory,数组是C元语言的叫法
【2】如果你只是仿真的话,可以用verilog的for循环语句把图片的数据一一存入
【3】如果用于综合,如果是Quartus的软件,建议你用
(* ram_init_file = "my_init_file.mif" *) reg [7:0]Image_BMP[391680:0];
这样的综合属性语句,my_init_file.mif存放你的BMP数据,请参考http://quartushelp.altera.com/11.1/mergedProjects/hdl/vlog/vlog_file_dir_ram_init.htm了解详情
【4】欢迎采纳,欢迎提问,祝你好运追问请问大侠
【1】(* ram_init_file = "my_init_file.mif" *) reg [7:0]Image_BMP[391680:0]; //这个语句放在程序的什么位置?
【2】这个图片数据(0xFF)是以什么样的格式或结构存放于my_init_file.mif中的呢?
可以举个例子吗?
追答【1】综合属性,放在memory变量声明的位置
【2】你是想问怎么得到mif文件吧,你用BmpToMif.exe这个软件就好了
【3】欢迎采纳!欢迎提问
热心网友
时间:2023-09-19 22:29
Image_BMP应该是个memory吧. 如果不是testbench那就用一些时钟周期写进去啊.
reg [8*391691:0] Image_Vector = "你的数据字符串";
integer i;
reg init;
always@(posedge clk, negedge rst) begin
if(rst) begin
i = 0;
init = 1'b1;
end else begin
if(i < 391681) begin
i = i + 1;
end else begin
init = 1'b0;
end
end
end
always@(posedge clk) begin
if(init) begin
Image_BMP[i] = Image_Vector[8*(i+1):8*i];
end
end
否则可以用for写入
reg [8*391691:0] Image_Vector = "你的数据字符串";
integer i;
initial begin
for(i = 0; i < 391691; i = i +1) begin
Image_BMP[i] = Image_vector[8*(i+1):8*i];
end
end
热心网友
时间:2023-09-19 22:29
用一个for循环;
例如
for(i=0;i++;i<=391680)
begin
reg[i] = 8'h你的数据;
end
热心网友
时间:2023-09-19 22:30
用个for循环追问
请问这些数据放程序的什么位置