问题描述
74LS148是带有扩展功能的8-3线优先编码器,它有8个信号输入端,3个二进制码输出端(0-7),一个输入使能端(EI),一个选通输出端(EO)和一个扩展端(GS)。使能端为“0”时,该芯片被选中,否则不被选中。选通输出端和扩展端主要用于功能扩展。

74LS148真值表
0-7 编码输入端(低电平有效)
A0、A1、A2 三位二进制编码输出信号即编码 输 出 端(低电平有效)
GS 片优先编码输出端即宽展端(低电平有效)
EO 选通输出端,即使能输出端
verilog代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| module code83(in8,out3,EI,GS,EO); input[7:0] in8; input EI; output reg[2:0] out3; output reg GS; output reg EO; always@(in8,EI) begin out3=3'b111; EO=1; GS=1; if(~EI) begin GS=0; case(in8) 8'b11111111: begin EO=0; GS=1; out3=3'b111; end 8'b00000000: out3=3'b000; 8'b10000000: out3=3'b001; 8'b11000000: out3=3'b010; 8'b11100000: out3=3'b011; 8'b11110000: out3=3'b100; 8'b11111000: out3=3'b101; 8'b11111100: out3=3'b110; 8'b11111110: out3=3'b111; default: out3=3'b001; endcase end end endmodule
|
仿真测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| `timescale 1 ps/ 1 ps module code83_vlg_tst(); reg eachvec; reg EI; reg [7:0] in8; wire EO; wire GS; wire [2:0] out3; integer i; code83 i1 ( .EI(EI), .EO(EO), .GS(GS), .in8(in8), .out3(out3) ); initial begin $display("Running testbench"); EI=1;in8=8'b0; #5; EI=0; in8=8'b11111111; #1; for(i=0;i<8;i=i+1) begin in8=in8<<1; #1; end end initial $monitor($realtime,,,"EI:%b; input:%b; output:%b GS:%b; EO:%b",EI,in8,out3,GS,EO); endmodule
|
仿真结果
