用vivado设计一个带有使能端的三八译码器,要求使能端输入由三个,一个高电平输入有效,两个低电平输入有效,输入端是高电平输入有效,输出端是低电平输出有效,即74LS138,拨码开关作为输入,发光二极管作为输出。
时间: 2024-03-16 22:41:02 浏览: 85
以下是用Vivado设计带有使能端的三八译码器的步骤:
1. 创建一个新的Vivado工程,并创建一个新的RTL模块,命名为“decoder_3_8”。
2. 在RTL模块中添加输入和输出端口,如下所示:
```
module decoder_3_8 (
input [2:0] in,
input en,
output [7:0] out
);
```
3. 添加一个三八译码器的代码,如下所示:
```
assign out[0] = (!in[2] && !in[1] && !in[0] && !en);
assign out[1] = (!in[2] && !in[1] && in[0] && !en);
assign out[2] = (!in[2] && in[1] && !in[0] && !en);
assign out[3] = (!in[2] && in[1] && in[0] && !en);
assign out[4] = ( in[2] && !in[1] && !in[0] && !en);
assign out[5] = ( in[2] && !in[1] && in[0] && !en);
assign out[6] = ( in[2] && in[1] && !in[0] && !en);
assign out[7] = ( in[2] && in[1] && in[0] && !en);
```
4. 添加一个反相器,将输出信号反相,如下所示:
```
assign out = ~out;
```
5. 添加一个约束文件,为输入和输出端口分配物理引脚。例如,可以将拨码开关连接到FPGA开发板上的GPIO引脚,将发光二极管连接到FPGA开发板上的LED引脚。
6. 在Vivado中生成比特流文件,然后将比特流文件下载到FPGA开发板上进行测试。
完整的Verilog代码如下:
```
module decoder_3_8 (
input [2:0] in,
input en,
output [7:0] out
);
assign out[0] = (!in[2] && !in[1] && !in[0] && !en);
assign out[1] = (!in[2] && !in[1] && in[0] && !en);
assign out[2] = (!in[2] && in[1] && !in[0] && !en);
assign out[3] = (!in[2] && in[1] && in[0] && !en);
assign out[4] = ( in[2] && !in[1] && !in[0] && !en);
assign out[5] = ( in[2] && !in[1] && in[0] && !en);
assign out[6] = ( in[2] && in[1] && !in[0] && !en);
assign out[7] = ( in[2] && in[1] && in[0] && !en);
assign out = ~out;
endmodule
```
阅读全文