1. 程式人生 > 其它 >基於FPGA的74ls148設計

基於FPGA的74ls148設計

1 74ls148簡介

74ls148是8線-3線優先編碼器,將 8 條資料線(0-7)進行 3 線(4-2-1)二進位制(八進位制)優先編碼,即對最高位資料線進行譯碼。利用選通端(EI)和輸出選通端(EO)可進行八進位制擴充套件。

2 74ls148管腳圖和邏輯圖

管腳介紹

  0-7 編碼輸入端(低電平有效)

  EI 選通輸入端(低電平有效)

  A0、A1、A2 三位二進位制編碼輸出訊號即編碼輸出端(低電平有效)

  GS 片優先編碼輸出端即寬展端(低電平有效)

  EO 選通輸出端,即使能輸出端

3 74ls148真值表

4 74ls148工作原理

  該編碼器有8個訊號輸入端,3個二進位制碼輸出端。此外,電路還設定了輸入使能端EI,輸出使能端EO和優先編碼工作狀態標誌GS。當EI=0時,編碼器工作;而當EI=1時,則不論8個輸入端為何種狀態,3個輸出端均為高電平,且優先標誌端和輸出使能端均為高電平,編碼器處於非工作狀態。這種情況被稱為輸入低電平有效,輸出也為低電來有效的情況。當EI為0,且至少有一個輸入端有編碼請求訊號(邏輯0)時,優先編碼工作狀態標誌GS為0。表明編碼器處於工作狀態,否則為1。

5 74ls148的Verilog設計

 1 module ttl_74148(
 2     input     wire         D0,D1,D2,D3,D4,D5,D6,D7, //輸入訊號,低電平有效
 3     input     wire         EI,                            //輸入使能
 4     output    reg         A0,A1,A2, //輸出訊號,
 5     output     reg         GS,        //優先編碼工作狀態標誌,0表示工作狀態
 6     output     reg         EO            //
輸出使能 7 ); 8 9 always@(*)begin 10 if(EI) 11 begin {A2,A1,A0} = 3'b111; GS = 1'b1; EO = 1'b1; end 12 else if({D7,D6,D5,D4,D3,D2,D1,D0} == 8'b1111_1111) 13 begin {A2,A1,A0} = 3'b111; GS = 1'b1; EO = 1'b0; end 14 else if(!D7) 15 begin {A2,A1,A0} = 3
'b000; GS = 1'b0; EO = 1'b1; end 16 else if(!D6) 17 begin {A2,A1,A0} = 3'b001; GS = 1'b0; EO = 1'b1; end 18 else if(!D5) 19 begin {A2,A1,A0} = 3'b010; GS = 1'b0; EO = 1'b1; end 20 else if(!D4) 21 begin {A2,A1,A0} = 3'b011; GS = 1'b0; EO = 1'b1; end 22 else if(!D3) 23 begin {A2,A1,A0} = 3'b100; GS = 1'b0; EO = 1'b1; end 24 else if(!D2) 25 begin {A2,A1,A0} = 3'b101; GS = 1'b0; EO = 1'b1; end 26 else if(!D1) 27 begin {A2,A1,A0} = 3'b110; GS = 1'b0; EO = 1'b1; end 28 else 29 begin {A2,A1,A0} = 3'b111; GS = 1'b0; EO = 1'b1; end 30 end 31 32 endmodule

6 波形模擬測試結果

參考資料:
(1)優先編碼器74ls148引腳圖及功能介紹(工作原理,邏輯圖及應用電路) - 電子常識 - 電子發燒友網 (elecfans.com)