在尝试将32位浮点矢量连接成线性函数移位寄存器时,所有这些都适合于行为模拟。然而,在后合成中,"random_float“网被截断为31位。似乎“标志”被忽视了。有什么想法吗?
logic [7:0] exponent_seed = 8'b01100101;
logic [22:0] mantissa_seed = 23'b01001011101011110010100;
logic [31:0] random_float = 32'b00000000000000000000000000000000;
logic [7:0] exponent = exponent_seed;
logic [22:0] mantissa = mantissa_seed;
logic sign = 1'b0;
wire exponent_feedback = exponent[7] ^ exponent[5] ^ exponent[4] ^ exponent[3];
always @ (exponent or mantissa or sign)
begin
random_float <= {sign, exponent, mantissa};
end
always @ (posedge clk or posedge reset)
begin
if (reset)
begin
exponent <= exponent_seed;
mantissa <= mantissa_seed;
end
else
begin
//use concatenation to shift and feed the vector.
exponent <= {exponent[6:0], exponent_feedback};
mantissa <= {mantissa[21:0], mantissa_feedback};
end
end PS我只包括了我认为是相关的代码。
发布于 2015-07-16 22:59:44
对于后代而言,以下内容阻止合成优化常量:
(*KEEP = "TRUE"*) logic [31:0] random_float = 32'b00000000000000000000000000000000;https://stackoverflow.com/questions/31462911
复制相似问题