使用环境: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
??
格雷码仿真时序图
总结:从以上可以看到格雷码译码会消除毛刺,通过实验发现仿真时与芯片型号,仿真时间长短几乎看不出有什么影响
文章评论(0条评论)
登录后参与讨论