基於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM