在testbench中输入txt文件时,通常需要用到$readmemb或者$readmemh函数,它们的输入分别是二进制数和十六进制数,这个时候通常需要将有符号的二进制数转换为对应的二进制数和十六进制数,但是matlab中的函数dec2bin和dec2hex要求输入数据为非负数,此时就需要将有符号数进行转换然后再使用dec2bin函数和dec2hex函数。
下面为自己写的一个十进制有符号数转二进制的matlab代码:
Q = sof_gen_instDout_Q;
L = length(Q);
for i = 1:1:L
if(Q(i,1) < 0)
Q_b(i,1) = 2^16+Q(i,1);
else
Q_b(i,1) = Q(i,1);
end
end
Q_DATA = dec2bin(Q_b);