在數字 IC 設計中,有時候需要從一組輸入數據中挑出某一個數據出來,比如,輸入有 ** “** A、B、C、D” 四個數據,我們需要在特定的條件和特定的時刻輸出特定的數據,如何輸出特定的數據就是 ** “選擇開關” ** ;又或者,可以理解成多個通道輸入映射到 單個通道輸出 ;于是, 數據選擇器(Data Selector) 或 多路開關(Multiplexer) 的數字邏輯電路就應運而生。
基于 2 選 1 的數據選擇器的 Verilog 代碼和 RTL 電路
module Multiplexer( // MUX
input wire a , // 輸入數據信號
input wire b , // 輸入數據信號
input wire sel , // 輸入控制信號
output result // 輸出數據信號_已選擇
);
assign result = sel ? a : b;
endmodule
基于 4 選 1 的數據選擇器的 Verilog 代碼和 RTL 電路
module Multiplexer( // MUX
input wire a , // 輸入數據信號
input wire b , // 輸入數據信號
input wire c , // 輸入數據信號
input wire d , // 輸入數據信號
input wire [1:0] sel , // 輸入控制信號
output reg result // 輸出數據信號_已選擇
);
always @(sel, a, b, c, d) begin
case (sel)
2'b00: result <= a;
2'b01: result <= b;
2'b10: result <= c;
2'b11: result <= d;
endcase
end
endmodule
代碼詳解
基于 2 選 1 的數據選擇器的設計代碼,非常簡單明了,主要是輸入數據 a 和 b,然后通過 sel 信號來決定輸出是 a 還是 b。倘若 sel 拉高 (1) ,那么就輸出 ** “a”** ,反之,倘若 sel 拉低 (0) ,那么就輸出 ** “b”** 。
基于 4 選 1 的數據選擇器的設計是基于 查找表 LUT(Look Up Table) (查找表在 FPGA 中非常重要,軟件思維可以理解為 “索引”,它是 FPGA 芯片架構的重要組成部分,合理利用查找表,能夠使你的 FPGA 硬件工程達到一定程度的優化設計)的方式實現的一個電路。
數據選擇器在實際生活中應用廣泛。比如,在實際中對選手進行挑選,比如在歌手舞臺對 “啊三” 編號為 “a”,對 “啊四” 編號為 “b”。然后 “sel” 這個選擇信號就交給 “裁判”,倘若 “啊三” 唱歌功底勝出,那么就輸出 “a”,反之那么就輸出 “b”,非常的形象!!!
所以還是那句話,數字電路模塊沒有哪一個模塊是平白無故添加出來的,每一個數字電路的小模塊在實際生活中都有著非常重要的應用。所有的復雜的模塊,都是由這些小模塊構成的。 計算機再強大、AI 再智能,都離不開最基本的電路設計單元。
因此,學好數字電路的基礎知識之后,才能翱翔于數字電路的世界中,如果基礎知識都學不好的話,那么更復雜的就更不用說了。
-
IC設計
+關注
關注
37文章
1292瀏覽量
103780 -
數字電路
+關注
關注
193文章
1601瀏覽量
80513 -
LUT
+關注
關注
0文章
49瀏覽量
12487 -
數據選擇器
+關注
關注
2文章
116瀏覽量
16429 -
FPGA芯片
+關注
關注
3文章
246瀏覽量
39784
發布評論請先 登錄
相關推薦
評論