【发布时间】:2015-03-16 09:27:08
【问题描述】:
我现在正在从 txt 文件中读取输入数据并将结果写入 txt 文件。
然而,结果在模拟中运行良好,但无法链接回 o = a+b 的 conv 模块;系统能够读取 x.txt 和 d.txt 中的值,但无法将其链接回 a 和 b。我的错误是什么以及如何改正?
从同样的情况下,我发现系统无法写出负十进制值,尽管它在 $fwrite 中更改为“%d\n”。有什么方法可以解决吗?我应该使用 $dumpfile 来获得负数作为输出吗??
这是d.txt中的内容
56
272
1
-62
75
x.txt 中的内容
562
2723
14
-620
751
这是我的模块代码:
module conv (input signed[15:0]a,b,
output signed[15:0] o);
assign o = a + b;
endmodule
我的测试平台代码:
module conv_tb();
reg clk;
reg signed [15:0]a[4:0];
reg signed [15:0]b[4:0];
wire signed [15:0]o[4:0];
integer ai,bi,oo,i;
conv U1(.a(a),.b(b),.o(o));
initial begin
clk <= 1'b0;
forever
#1 clk = ~clk;
end
initial begin
ai = $fopen("x.txt","r");
bi = $fopen("d.txt","r");
oo = $fopen("o.txt","w");
#1;
for (i = 0; i<5; i=i+1)
a <= $fscanf(ai,"%d\n",x);
b <= $fscanf(bi,"%d\n",d);
#4;
$fwrite(oo,"%d\n",o);
end
$fclose(ai);
$fclose(bi);
$fclose(oo);
$finish;
end
endmodule
【问题讨论】:
-
在 for 循环中添加 begin 并删除 tb 中的解压数组可能会有所帮助
-
@Emman 在 for 循环中添加 begin 并删除 tb 中的解压缩数组后,tb_conv.v(28) 出现问题:“$fclose”附近:语法错误,意外的 SYSTEM_IDENTIFIER
-
您使用的是哪个编译器?在这里它正在工作edaplayground.com/x/3P4
标签: io verilog fwrite fread negative-number