8421码和格雷码编码的38译码器

使用环境:Quartus II 8.0 + DE2(Cyclone II EP2C35F627C6)

//
---------------------------------------------------
//Copyright
//All right reserved
//File name: decoder3to8.v
//Author: dpc525
//---------------------------------------------------
//Major funtion:
//
//---------------------------------------------------
//Note:
//---------------------------------------------------
//Modification history :
// Mod. Date :2011-5-4
// V1.0: Initial Revision
//---------------------------------------------------
//8421码
module decoder3to8(data_in ,EN ,data_out );

input [2:0] data_in ;
input EN ;
output [7:0] data_out ;
reg [7:0] data_out ;

always @(data_in or EN )
begin
data_out
= {8{1'b0}};
if (EN == 1)
begin
case (data_in )
3'b000 : data_out = 8'b0000000;
3'b001 : data_out = 8'b0000001;
3'b010 : data_out = 8'b0000010;
3'b011 : data_out = 8'b0000100;
3'b100 : data_out = 8'b0001000;
3'b101 : data_out = 8'b0010000;
3'b110 : data_out = 8'b0100000;
3'b111 : data_out = 8'b1000000;
default : data_out = {8{1'b0}};
endcase
end
end

endmodule

8421码仿真时序图

 

//格雷码译码 
module decoder3to8(data_in ,EN ,data_out );

input [2:0] data_in ;
input EN ;
output [7:0] data_out ;
reg [7:0] data_out ;

always @(data_in or EN )
begin
data_out
= {8{1'b0}};
if (EN == 1)
begin
case (data_in )
3'b000 : data_out = 8'b0000000;
3'b001 : data_out = 8'b0000001;
3'b011 : data_out = 8'b0000010;
3'b010 : data_out = 8'b0000100;
3'b110 : data_out = 8'b0001000;
3'b111 : data_out = 8'b0010000;
3'b101 : data_out = 8'b0100000;
3'b100 : data_out = 8'b1000000;
default : data_out = {8{1'b0}};
endcase
end
end
endmodule


格雷码仿真时序图

总结:从以上可以看到格雷码译码会消除毛刺,通过实验发现仿真时与芯片型号,仿真时间长短几乎看不出有什么影响。

posted on 2011-05-04 14:59  dpc525  阅读(1172)  评论(0编辑  收藏  举报

导航