Verilog HDL例题
时间: 2023-08-28 19:08:10 浏览: 79
以下是一个简单的 Verilog HDL 例题,实现一个 2:1 的多路选择器:
```verilog
module mux_2to1(input sel, input a, input b, output reg out);
always @ (sel, a, b) begin
if (sel == 0) begin
out <= a;
end else begin
out <= b;
end
end
endmodule
```
在这个例子中,我们定义了一个名为 `mux_2to1` 的模块,该模块有三个输入端口(`sel`、`a` 和 `b`)和一个输出端口(`out`)。其中,`sel` 输入端口用于选择需要输出的数据,当 `sel` 为 0 时,输出 `a`;当 `sel` 为 1 时,输出 `b`。
我们使用 `always` 块来描述模块的行为。`always` 块是一个 Verilog HDL 中的关键字,用于定义时序逻辑。在这个例子中,我们使用 `always @ (sel, a, b)` 来定义当 `sel`、`a` 或 `b` 发生变化时,需要执行的操作。
在 `always` 块中,我们使用 `if...else...` 语句来实现多路选择器的逻辑。当 `sel` 为 0 时,将 `a` 输出到 `out` 端口;当 `sel` 为 1 时,将 `b` 输出到 `out` 端口。
注意,我们在 `out` 端口定义时使用了 `reg` 关键字。这是因为在 Verilog HDL 中,输出端口需要使用寄存器型变量来存储数据。因此,我们需要在 `out` 端口定义时添加 `reg` 关键字。
以上就是一个简单的 Verilog HDL 例题,实现了一个 2:1 的多路选择器。