下面是我的模块的代码:
module sext(input in[3:0], output out[7:0]);
always_comb
begin
if(in[3]==1'b0)
assign out = {4'b0000,in};
else
assign out = {4'b1111,in};
end
endmodule
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这不起作用。它不是符号扩展,而是零扩展。为什么会出现这种情况的任何想法?
我假设你的意思是(input [3:0] in, output [7:0] out)。如果这是真的,那么你只需要写
module sext(input signed [3:0] in, output signed [7:0] out);
assign out = in;
endmodule
Run Code Online (Sandbox Code Playgroud)
你也可以写
module sext(input [3:0] in, output [7:0] out);
assign out = 8'(signed'(in));
endmodule
Run Code Online (Sandbox Code Playgroud)
也许您甚至不需要将其编写为单独的模块。