Verilog HDL 之 8-3优先编码器 原理: 在数字系统中,常常会有几个部件同时发出服务请求的可能,而在同一时刻只能给其中一个部件发出允许操作信号。因此,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。
编码器有8个输入端,3个输出端。还有一个输入使能EI,输出使能EO和优先编码器工作状态标志GS。编码器以低为有效。当EI=0 时,编码器工作;输出全为高。输入优先级别的次序为7,6,5,…,0。当某一输入端有低电平输入,且比它优先级高的输入没有低电平输入时,输出端才输出相应输入端的代码。 二、实现 在设计文件中输入Verilog代码。
- `timescale 1 ns / 1 ps
-
- module yxbm8_3 ( A ,I ,GS ,EO ,EI );
-
- input [7:0] I ;
- wire [7:0] I ;
- input EI ;
- wire EI ;
-
- output [2:0] A ;
- reg [2:0] A ;
- output GS ;
- reg GS ;
- output EO ;
- reg EO ;
-
- always @ ( I or EI )
- if ( EI )
- 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
复制代码
|