我从视频文件生成帧,然后从我的测试平台读取。 我到目前为止所做的是加载相同的内存" mem "每次调用任务时都使用不同的内存映像文件,这非常合适:
task play_frame(input [31:0] total_pixels, input [12:0] pic_num);
begin
@(posedge clk);
case (pic_num)
0: $readmemh("img_data/1920x1080/video_frame_1.mem", mem);
1: $readmemh("img_data/1920x1080/video_frame_2.mem", mem);
2: $readmemh("img_data/1920x1080/video_frame_3.mem", mem);
...
...
...
endcase
repeat (total_pixels) begin
.
.
.
end
end
endtask
现在的问题是我想要将此任务调用1000次。这意味着我必须为每个案例写下我想要加载到内存mem_s中的文件的名称。
有没有办法实现自动化?
可能是这样的:
task play_frame(input [31:0] total_pixels, input [12:0] pic_num);
begin
@(posedge clk);
$readmemh("img_data/1920x1080/video_frame_*$(pic_num)*.mem", mem);
repeat (total_pixels) begin
.
.
.
end
end
endtask
答案 0 :(得分:3)
使用$ sformatf
$readmemh($sformatf("img_data/1920x1080/video_frame_%0d.mem",pic_num), mem);