基於FPGA的2選1多路選擇器設計
阿新 • • 發佈:2021-07-26
1. 專案介紹
多路選擇器,也叫資料選擇器或多路開關,在多路資料傳送過程中,能夠根據需要將其中任意一路選出來的電路。資料選擇器用於控制有效資料的輸出,能夠通過地址選擇線來選定相應的通道作為輸出,提高了資料的傳輸效率。(資料分配器用於資料的傳輸途徑,在訊號傳輸過程中能夠通過地址選擇線選擇傳輸通道)。
2. 設計要求
設計一個2選1多路選擇器,輸入有兩個單bit訊號,和一個單bit的選擇訊號。當選擇訊號為低電平時,將第一路訊號輸出,當選擇訊號為高電平時,將第二路訊號輸出。
3. 設計原理
該設計命名為mux2_1,第一路訊號命名為dataa,第二路訊號命名為datab,選擇訊號命名為sel,輸出訊號命名為odata,系統框圖如下圖所示。
根據設計要求,得真值表:
dataa | datab | sel | odata |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
根據真值表,得到邏輯表示式:
轉化為Verilog表示式為
Odata = datab&sel | dataa&(~sel);
4. 設計實現
1 module mux2_1( 2 3 input wire dataa, 4 input wire datab,5 input wire sel, 6 7 output wire odata 8 ); 9 10 assign odata = (datab & sel) | (dataa & (~sel)); 11 12 endmodule
5. 模擬驗證
1 `timescale 1ns/1ps 2 3 module mux2_1_tb(); 4 5 reg dataa; 6 reg datab;7 reg sel; 8 9 wire odata; 10 11 mux2_1 mux2_1_inst( 12 .dataa (dataa), 13 .datab (datab), 14 .sel (sel), 15 .odata (odata) 16 ); 17 18 initial begin 19 dataa = 1'b0; datab = 1'b0; sel = 1'b0; #20; 20 dataa = 1'b0; datab = 1'b0; sel = 1'b1; #20; 21 dataa = 1'b0; datab = 1'b1; sel = 1'b0; #20; 22 dataa = 1'b0; datab = 1'b1; sel = 1'b1; #20; 23 dataa = 1'b1; datab = 1'b0; sel = 1'b0; #20; 24 dataa = 1'b1; datab = 1'b0; sel = 1'b1; #20; 25 dataa = 1'b1; datab = 1'b1; sel = 1'b0; #20; 26 dataa = 1'b1; datab = 1'b1; sel = 1'b1; #20; 27 end 28 29 endmodule
參考資料: