gpt4 book ai didi

verilog - Iverilog 帮助组合移位乘数

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:11 24 4
gpt4 key购买 nike

我的代码可以编译但不会为 gtkwave 转储任何 dat 文件。我正在尝试实现一个组合移位乘数对象。我认为我的测试仪不正确。

module combinational_mult(product,multiplier,multiplicand);
input [31:0] multiplier;
input[63:0] multiplicand;
output reg [63:0] product;
reg c;
reg [31:0] m;
integer i;

always @( multiplier or multiplicand )
begin
//initialize
product[63:32] = 16'b0000_0000_0000_0000;
product[32:16] = multiplier;
m = multiplicand;
c = 1'b0;


//add,shift algorithm for unsigned multiplication.
//following the notes.
for(i=0; i<32; i=i+1)
begin

if(product[0]) {c,product[63:32]} = product[63:32] + m ;

product[63:0] = {c,product[63:1]};
c = 0;
end


end
endmodule

module tester(output reg [31:0] multiplier, output reg [63:0] multiplicand, output reg [63:0] product, output reg c, output reg i);



initial begin
i = 0;

$dumpfile("USAMv1.dat");
$dumpvars;

#10 multiplier = 16'b1101_1001_1101_1001;
multiplicand = 16'b0110_1010_1101_1000;
#50 $finish;

end
endmodule

module testbench;
wire[31:0] multiplier;
wire[63:0] multiplicand;
wire[63:0] product;
wire c, i;

tester sim( multiplier, multiplicand, product, c, i);
combinational_mult dut ( product, multiplier, multiplicand);
endmodule

最佳答案

我在 EDA Playground 上创建了一个版本它删除了测试器并仅在测试台中运行测试程序。

我已将 dump.dat 重命名为 dump.vcd 以与 EDA Playground 一起使用。运行时应启动波形窗口。

除了将测试程序移至测试台并向测试向量添加第二个数据点以便观察它们之外,没有对代码进行真正的更改。否则 VCD 在它们改变的地方结束。

module testbench;
reg [31:0] multiplier;
reg [63:0] multiplicand;

initial begin
$dumpfile("dump.vcd");
$dumpvars;

#10ns;
multiplier = 16'b1101_1001_1101_1001;
multiplicand = 16'b0110_1010_1101_1000;

#50ns;
multiplier = 16'b0;
multiplicand = 16'b0;

$finish;
end

combinational_mult dut ( product, multiplier, multiplicand);
endmodule

关于verilog - Iverilog 帮助组合移位乘数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26993089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com