[signed][input]Verilog的有符号数输入测试
[signed][input]Verilog的有符号数输入测试
git://github.com/adream307/signedTest.git
一直错误得以为Verilog中的数据是无符号的。
测试脚本,在QuartusII中成功编译,且下载在硬件上运行。
- //SIG.v
- module SIG(
- iCLK,
- oSY,
- oUY
- );
- input iCLK;
- output [7:0] oSY;
- output [7:0] oUY;
- reg [7:0] x;
- wire [3:0] x1 = x[3:0];
- wire [3:0] x2 = x[7:4];
- wire [7:0] sy;
- wire [7:0] uy;
- assign oSY = sy;
- assign oUY = uy;
- always@(negedge iCLK) begin
- x<=x+8'd1;
- end
- SIGNED SIG_1(
- .iX1(x1),
- .iX2(x2),
- .oY(sy)
- );
- UNSIGNED USIG_1(
- .iX1(x1),
- .iX2(x2),
- .oY(uy)
- );
- endmodule
- //SIGNED.v
- module SIGNED(
- iX1,
- iX2,
- oY
- );
- input signed [3:0] iX1;
- input signed [3:0] iX2;
- output signed [7:0] oY;
- assign oY = iX1*iX2;
- endmodule
- //UNSIGNED.v
- module UNSIGNED(
- iX1,
- iX2,
- oY
- );
- input [3:0] iX1;
- input [3:0] iX2;
- output [7:0] oY;
- assign oY = iX1*iX2;
- endmodule
上图为SignalTapII的运行截图,可以发现当x=0xFF时,此时x1=0xF,x2=0xF。
对于SIGNED,有符号运算,x1=-1,x2=-1,所以结果为1。
而对于UNSIGNED,无符号运算,x1=15,x2=15,所以结果为225,即0xE1。
评论暂时关闭