用verilog hdl语言编写一个8—3译码器程序
1个回答
展开全部
首先要纠正一下,相对多的输入转化成为相对少的输出,一般叫编码器;相对少的输入转化成为相对多的输出,一般叫译码器。所以,确切地说你要做的应该是8-3编码器(还是3-8译码器)。
//8-3编码器verilog代码
module enc_83(datain, dataout, en);
input [7:0] datain;
input en;
output [2:0] dataout;
reg [2:0] dataout;
always @*
if (~en)
dataout = 3'b0;
else case(datain)
8'b0000_0001: dataout = 3'b000;
8'b0000_0010: dataout = 3'b001;
8'b0000_0100: dataout = 3'b010;
8'b0000_1000: dataout = 3'b011;
8'b0001_0000: dataout = 3'b100;
8'b0010_0000: dataout = 3'b101;
8'b0100_0000: dataout = 3'b110;
8'b1000_0000: dataout = 3'b111;
default: dataout = 3'b000;
endcase
endmodule
//关于上述代码的说明
1) 上述实现的是8-3普通编码器,即同一时刻输入保证只有一位有效;
2) 上述代码没有输出编码有效的标识位,如果需要的话可自行添加。
//8-3编码器verilog代码
module enc_83(datain, dataout, en);
input [7:0] datain;
input en;
output [2:0] dataout;
reg [2:0] dataout;
always @*
if (~en)
dataout = 3'b0;
else case(datain)
8'b0000_0001: dataout = 3'b000;
8'b0000_0010: dataout = 3'b001;
8'b0000_0100: dataout = 3'b010;
8'b0000_1000: dataout = 3'b011;
8'b0001_0000: dataout = 3'b100;
8'b0010_0000: dataout = 3'b101;
8'b0100_0000: dataout = 3'b110;
8'b1000_0000: dataout = 3'b111;
default: dataout = 3'b000;
endcase
endmodule
//关于上述代码的说明
1) 上述实现的是8-3普通编码器,即同一时刻输入保证只有一位有效;
2) 上述代码没有输出编码有效的标识位,如果需要的话可自行添加。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询