verilog仿真代码
时间: 2023-10-10 16:08:59 浏览: 48
以下是一个简单的 Verilog 仿真代码示例:
```verilog
module testbench;
// 定义被测模块的输入输出端口
reg [7:0] input;
wire [7:0] output;
// 实例化被测模块
dut dut_instance(
.input(input),
.output(output)
);
// 定义时钟信号
reg clk = 0;
// 定义仿真时间
integer time = 0;
// 时钟信号生成器
always #5 clk = ~clk;
// 输入数据生成器
initial begin
input = 8'h00;
#10 input = 8'h01;
#10 input = 8'h02;
#10 input = 8'h03;
#10 input = 8'h04;
#10 input = 8'h05;
#10 input = 8'h06;
#10 input = 8'h07;
#10 input = 8'h08;
#10 input = 8'h09;
#10 $finish;
end
// 模拟输出
always @(posedge clk) begin
$display("Time: %d, Input: %d, Output: %d", time, input, output);
time = time + 1;
end
endmodule
// 被测模块
module dut(
input [7:0] input,
output [7:0] output
);
// 定义被测模块的内部逻辑
always @(*) begin
output = input + 1;
end
endmodule
```
在这个示例中,我们创建了一个名为 `testbench` 的模块,它实例化了一个名为 `dut` 的被测模块。我们定义了一个 8 位的输入端口和一个 8 位的输出端口,以及一个时钟信号 `clk` 和一个仿真时间 `time`。我们使用 `always` 块定义时钟信号生成器和模拟输出,同时使用 `initial` 块定义输入数据生成器。被测模块 `dut` 的内部逻辑是简单地将输入加 1,并使用 `always` 块定义。最后,我们使用 `$display` 函数打印出仿真结果。