题目
根据下图中的真值表,实现8-3优先编码器。
信号 | 类型 | 输入/输出 | 位宽 |
---|---|---|---|
I | wire | Intput | 4 |
EI | wire | Intput | 1 |
Y | wire | Output | 3 |
GS | wire | Output | 1 |
EO | wire | Output | 1 |
答案
`timescale 1ns/1ns
module encoder_83(
input [7:0] I ,
input EI ,
output wire [2:0] Y ,
output wire GS ,
output wire EO
);
reg [2:0] sr_Y;
reg sr_GS,sr_EO;
always @(*)
begin
casex(I)
8'b0000_0000:begin sr_Y=3'd0; sr_GS=1'b0; sr_EO=1'b1; end
8'b1xxx_xxxx:begin sr_Y=3'd7; sr_GS=1'b1; sr_EO=1'b0; end
8'b01xx_xxxx:begin sr_Y=3'd6; sr_GS=1'b1; sr_EO=1'b0; end
8'b001x_xxxx:begin sr_Y=3'd5; sr_GS=1'b1; sr_EO=1'b0; end
8'b0001_xxxx:begin sr_Y=3'd4; sr_GS=1'b1; sr_EO=1'b0; end
8'b0000_1xxx:begin sr_Y=3'd3; sr_GS=1'b1; sr_EO=1'b0; end
8'b0000_01xx:begin sr_Y=3'd2; sr_GS=1'b1; sr_EO=1'b0; end
8'b0000_001x:begin sr_Y=3'd1; sr_GS=1'b1; sr_EO=1'b0; end
8'b0000_0001:begin sr_Y=3'd0; sr_GS=1'b1; sr_EO=1'b0; end
default:begin sr_Y=3'd0; sr_GS=1'b0; sr_EO=1'b1; end
endcase
end
assign Y = (EI) ? sr_Y : 3'b0;
assign GS = (EI) ? sr_GS : 1'b0;
assign EO = (EI) ? sr_EO : 1'b0;
endmodule