引言
在近代戰(zhàn)爭(zhēng)中,軍事信息傳遞,例如通過發(fā)電報(bào)的方式,電報(bào)信息難免被敵方截獲,而我們又不得不通過發(fā)電報(bào)傳輸信息(喲,都近代了,就別飛鴿傳書了),所以發(fā)送方需要對(duì)信息進(jìn)行加密,也就是編碼,然后以一種雙方事先溝通好的編碼方式(密碼本就是這樣來的),在接收方再進(jìn)行反編碼,也就是解碼,這樣,即使信息被截獲了,短時(shí)間內(nèi)也難以被破解;這就是編碼器的重要性。
編碼器的邏輯功能就是將多輸入的每一個(gè)高、低電平信號(hào)轉(zhuǎn)為一個(gè)對(duì)應(yīng)的二進(jìn)制代碼,它分為普通編碼器和優(yōu)先編碼器。對(duì)于普通編碼器,任何時(shí)刻只允許輸入一個(gè)編碼信號(hào),否則輸出將發(fā)生混亂。
一、普通編碼器的 Verilog 代碼實(shí)現(xiàn)和 RTL 電路實(shí)現(xiàn)
module Encoders(
input wire [7:0] d, // 輸入信號(hào)_未編碼
output reg [2:0] b = 3'b000 // 輸出信號(hào)_已編碼
);
always @ ( d ) begin
case ( d )
8'b0000_0001 : b <= 3'b000;
8'b0000_0010 : b <= 3'b001;
8'b0000_0100 : b <= 3'b010;
8'b0000_1000 : b <= 3'b011;
8'b0001_0000 : b <= 3'b100;
8'b0010_0000 : b <= 3'b101;
8'b0100_0000 : b <= 3'b110;
8'b1000_0000 : b <= 3'b111;
default : b <= 3'b000;
endcase
end
endmodule
這是一個(gè) 8 線 ? 3 線普通編碼器,基于查找表 LUT(Look Up Table)的方式實(shí)現(xiàn)的一個(gè)電路,其 RTL 電路圖如下所示:
普通編碼器的 RTL 電路圖
優(yōu)先編碼器其實(shí)就是允許同時(shí)在幾個(gè)輸入端有輸入信號(hào),編碼器按輸入信號(hào)排定的優(yōu)先順序,只對(duì)同時(shí)輸入的幾個(gè)信號(hào)中優(yōu)先權(quán)最高的一個(gè)進(jìn)行編碼,即已經(jīng)排好了隊(duì),從高位向低位遞減。比如,8 線 - 3 線優(yōu)先編碼器的輸入有 “0、1、2、3、4、5、6、7” 八位輸入,而輸出只有 “Y0、Y1、Y2” 三位輸出,在這里,就是當(dāng) “7” 為 “1” 的時(shí)候,即 “7” 為有效值的時(shí)候,無論 “0” 到 “6” 之間為何值,都只對(duì) “7” 進(jìn)行編碼,高位優(yōu)先判斷是否有效,以此類推。
二、優(yōu)先編碼器的 Verilog 代碼實(shí)現(xiàn)和 RTL 電路實(shí)現(xiàn)
module Encoders(
input wire [7:0] d, // 輸入信號(hào)_未編碼
output reg [2:0] b = 3'b000 // 輸出信號(hào)_已編碼
);
always @ ( d ) begin
casex ( d )
8'b0000_0001 : b <= 3'b000;
8'b0000_001x : b <= 3'b001;
8'b0000_01xx : b <= 3'b010;
8'b0000_1xxx : b <= 3'b011;
8'b0001_xxxx : b <= 3'b100;
8'b001x_xxxx : b <= 3'b101;
8'b01xx_xxxx : b <= 3'b110;
8'b1xxx_xxxx : b <= 3'b111;
default : b <= 3'bxxx;
endcase
end
endmodule
這是一個(gè) 8 線 ? 3 線優(yōu)先編碼器,基于查找表 LUT(Look Up Table)的方式實(shí)現(xiàn)的一個(gè)電路,其 RTL 電路圖如下所示:
優(yōu)先編碼器的 RTL 電路圖
附加說明,其實(shí),Verilog 中的 if - else 語句便隱含了優(yōu)先特性,可以進(jìn)行優(yōu)先編碼器的設(shè)計(jì)。中級(jí)及以上的 FPGA 玩家應(yīng)該能懂的。
總結(jié)
編碼器是非常重要的一個(gè)數(shù)字電路組合邏輯模塊,不僅可以大大減少傳輸數(shù)據(jù)的信號(hào)線的數(shù)量,還是密碼學(xué)的一部分,基于某種協(xié)議的編碼能夠讓雙方之間的通訊較為安全。
-
編碼器
+關(guān)注
關(guān)注
45文章
3811瀏覽量
138131 -
RTL
+關(guān)注
關(guān)注
1文章
390瀏覽量
61154 -
LUT
+關(guān)注
關(guān)注
0文章
50瀏覽量
12855 -
Verilog設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
20瀏覽量
6640
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)字電路—編碼器
招聘:數(shù)字電路設(shè)計(jì)師
數(shù)字電路設(shè)計(jì)的基本方法有哪些
基于LabVIEW的數(shù)字電路設(shè)計(jì)和仿真
高速數(shù)字電路設(shè)計(jì)
數(shù)字電路設(shè)計(jì)
旋轉(zhuǎn)編碼器抗抖動(dòng)接口電路設(shè)計(jì)
數(shù)字電路中的FPGA和verilog教程
旋轉(zhuǎn)編碼器抗抖動(dòng)接口電路設(shè)計(jì)
FPGA CPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)分享.

Verilog數(shù)字系統(tǒng)設(shè)計(jì)——復(fù)雜數(shù)字電路設(shè)計(jì)2(FIFO控制器設(shè)計(jì))

數(shù)字電路設(shè)計(jì)的基本流程
基于Verilog的經(jīng)典數(shù)字電路設(shè)計(jì)(5)譯碼器

評(píng)論