硬件描述语言范例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

硬件描述语言语言设计实例

1、8-3编码器

module encode_verilog ( a ,b );

input [7:0] a ; //编码器输入

wire [7:0] a ;

output [2:0] b ; //编码器输出

reg [2:0] b;

always @ ( a )

begin

case ( a ) //编码器某一输入端口为高电平输出相应的3位二进制数

8'b0000_0001 : b<=3'b000; //0

8'b0000_0010 : b<=3'b001; //1

8'b0000_0100 : b<=3'b010; //2

8'b0000_1000 : b<=3'b011; //3

8'b0001_0000 : b<=3'b100; //4

8'b0010_0000 : b<=3'b101; //5

8'b0100_0000 : b<=3'b110; //6

8'b1000_0000 : b<=3'b111; //7

default : b<= 3'b000; //其他情况编码器输出3’b000

endcase

end

endmodule

2、8-3优先编码器

module p_encode_verilog ( A ,I ,GS ,EO ,EI ); //编码器以低为有效

input [7:0] I ; //编码器输入

wire [7:0] I ;

input EI ; //输入使能,EI=0时,编码器正常工作

wire EI ;

output [2:0] A ; //编码器输出

reg [2:0] A ;

output GS ; //优先编码器工作状态标志,编码器的八个输入端有信号输入时,GS=0 reg GS ;

output EO ; //输出使能,

reg EO ;

always @ ( I or EI )

if ( EI ) //使用if、else if表明条件的优先级顺序

begin

A <= 3'b111;

GS <= 1;

EO <= 1;

end

else if ( I[7] == 0 )

begin

A <= 3'b000;

GS <= 0;

EO <= 1;

end

else if ( I[6] == 0 )

begin

A <= 3'b001;

GS <= 0;

EO <= 1;

end

else if ( I[5] == 0 )

begin

A <= 3'b010;

GS <= 0;

EO <= 1;

end

else if ( I[4] == 0 )

begin

A <= 3'b011;

GS <= 0;

EO <= 1;

end

else if ( I[3] == 0 )

begin

A <= 3'b100;

GS <= 0;

EO <= 1;

end

else if ( I[2] == 0 )

begin

A <= 3'b101;

GS <= 0;

EO <= 1;

end

else if ( I[1] == 0 )

begin

A <= 3'b110;

GS <= 0;

EO <= 1;

end

else if ( I[0] == 0 )

begin

A <= 3'b111;

GS <= 0;

EO <= 1;

end

else if ( I == 8'b11111111)

begin

A <= 3'b111;

GS <= 1;

EO <= 0;

end

endmodule

3、3-8译码器

module decoder_verilog ( G1 ,Y ,G2 ,A ,G3 ); input G1 ; //使能输入,高有效

wire G1 ;

input G2 ; //使能输入,低有效

wire G2 ;

input [2:0] A ; //3位译码器输入,为高有效wire [2:0] A ;

input G3 ; //使能输入

wire G3 ; //使能输入,低有效

output [7:0] Y ; //8位译码器输出,为低有效reg [7:0] Y ;

reg s;

always @ ( A ,G1, G2, G3)

begin

s <= G2 | G3 ;

if ( G1 == 0) //G1为低有效

Y <= 8'b1111_1111;

else if ( s)

Y <= 8'b1111_1111;

else

case ( A )

3'b000 : Y<= 8'b1111_1110;

3'b001 : Y<= 8'b1111_1101;

3'b010 : Y<= 8'b1111_1011;

3'b011 : Y<= 8'b1111_0111;

3'b100 : Y<= 8'b1110_1111;

3'b101 : Y<= 8'b1101_1111;

3'b110 : Y<= 8'b1011_1111;

3'b111 : Y<= 8'b0111_1111;

endcase

end

endmodule

4、数据选择器

module mux8_1_verilog ( Y ,A ,D0, D1,

D2, D3, D4, D5, D6, D7 ,G );

相关文档
最新文档