如何给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循环追问

请问这些数据放程序的什么位置

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com