FPGA的学习:3线8线译码器的实现
Posted 石小舟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FPGA的学习:3线8线译码器的实现相关的知识,希望对你有一定的参考价值。
首先来看系统框图和原理图。
输入信号有三个,然后2的3次方是8,所以输出有8个。
了解了时序后,对功能进行编码实现。
`timescale 1ns/1ns
module decoder3_8
(
input wire in1 , //输入信号in1
input wire in2 , //输入信号in2
input wire in3 , //输入信号in2
output reg [7:0] out //输出信号out
);
//out:根据3个输入信号选择输出
always@(*)
case({in1, in2, in3})
3'b000 : out = 8'b0000_0001;
3'b001 : out = 8'b0000_0010;
3'b010 : out = 8'b0000_0100;
3'b011 : out = 8'b0000_1000;
3'b100 : out = 8'b0001_0000;
3'b101 : out = 8'b0010_0000;
3'b110 : out = 8'b0100_0000;
3'b111 : out = 8'b1000_0000;
default: out = 8'b0000_0001; //这边的default状态可以指向其他的
endcase
endmodule
完成代码实现后,进行仿真。
`timescale 1ns/1ns
module tb_decoder3_8();
//wire型变量的定义
wire [7:0] out;
//reg型变量的定义
reg in1;
reg in2;
reg in3;
//初始化输入信号
initial begin
in1 <= 1'b0;
in2 <= 1'b0;
in3 <= 1'b0;
end
//in1:产生输入随机数,模拟输入端1的输入情况
always #10 in1 <= {$random} % 2;
always #10 in2 <= {$random} % 2;
always #10 in3 <= {$random} % 2;
initial begin
$timeformat(-9, 0, "ns", 6);
$monitor("@time %t: in1=%b in2=%b in3=%b out=%b", $time, in1, in2, in3, out);
end
//实例化
decoder3_8 decoder3_8_inst(
.in1 (in1), //input in1
.in2 (in2), //input in2
.in3 (in3), //input in3
.out (out) //output [7:0] out
);
endmodule
以上是关于FPGA的学习:3线8线译码器的实现的主要内容,如果未能解决你的问题,请参考以下文章
如何用双2-4线译码器转换为3-8线译码器?电路图怎么设计?