1. 程式人生 > 其它 >基於FPGA的2選1多路選擇器設計

基於FPGA的2選1多路選擇器設計

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

參考資料:

  (1)陪您一起學習FPGA-郝旭帥團隊_嗶哩嗶哩_bilibili