verilog问题 为下面的代码 写个测试信号(.vt文件) 用于modelsim仿真 (急用)

2024-12-03 03:17:08
推荐回答(2个)
回答1:

`timescale 1 ns/ 1 ps

module shift_tb;

reg clk;
reg din;
wire dout;

parameter Period = 10;

shift u1 (
.clk(clk),
.din(din),
.dout(dout)
);

initial
begin
clk = 0;
din = 1'b0; // 初始化输入din
rst = 0; // 低电平复位
#100
rst = 1; // 复位结束
end

always #(Period/2) clk <= ~clk; // clk为10ns

always @(posedge clk)
begin
din <= {$random} % 2; // 产生0和1的随机数,用来做随机输入值
end

endmodule

建立.v文件,文件名为 shift_tb.v ,这个就是仿真文件。

回答2:

输入信号:
`timescale 1ns/1ns
module shiftsig(sclk,dout);
out sclk;
output dout;
reg sclk;
reg dout;
reg [3:0] data;
initial
begin
sclk=0;
dout=0;
data=0;
end
always #50
begin
sclk=~sclk;
data=data+1;
dout=data[3];
end

endmodule
测试top模块
`timescale 1ns/1ns
module shift_top;
wire clock,datain;
wire [3:0] dataout;
shiftsig(.clk(clock),.dout(datain));
shift t1(.clk(clock),.din(datain),.dout(dataout));
endmodule