PS:目前手上仍然沒有板子,按照野火視頻的講解,目前我們只能做到前面六步(其實第一步設計規劃也是需要看板子的硬件的,但是現在沒有板子就完全與野火傳授的板子一致來看)
首先我們以最簡單的2路選擇器MUX2_1為例。
1 設計規劃及波形繪制
設計規劃:MUX的原理是根據sel的值選擇對應輸入連到輸出。
對應的真值表及波形圖繪制如下:
2 代碼編寫
rtl文件:(這里用always進行功能描述,故輸入必須是reg型)
module MUX2_1
(input in1,in2,sel,output reg out);always@(*)if(sel == 1'b0)out = in1;elseout = in2;endmodule
?3 邏輯仿真及波形驗證
仿真文件編寫如下:
`timescale 1ns/1nsmodule tb_MUX2_1();reg tb_in1,tb_in2,tb_sel;
wire tb_out;initial begintb_in1 <= 1'b0;tb_in2 <= 1'b0;tb_sel <= 1'b0; endalways #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_sel <= {$random} % 2;MUX2_1 MUX2_1_inst
(.in1 (tb_in1),.in2 (tb_in2),.sel (tb_sel),.out (tb_out)
); endmodule
得到的仿真波形圖如下(注意:1中畫出的波形圖是自己隨意畫的一個波形,而這里仿真文件是隨機生成Sel,in1和in2的,所以這三個與1中畫的輸入就不同,輸出也自然不同,但是依然可以看到,輸出根據sel選擇對應的輸入,仿真通過。)
4? 四選一,八選一...
類似上述2選一選擇器的設計思路,需要更改的點主要是:
sel的位數根據多少輸入來確定:比如四選一有4個輸入,需要兩位sel(00,01,10,11);八選一有8個輸入,需要三位sel(000,001,010,011,100,101,110,111)即
n選一需要x位sel ,滿足
4.1 代碼編寫
當輸入比較多時,用if...else語句可能比較麻煩,可以使用case語句,比較清晰明了。
module MUX4_1
(input in1,input in2,input in3,input in4,input [1:0] sel,output reg out);always@(*)begincase(sel)2'b00: out = in1;2'b01: out = in2;2'b10: out = in3;2'b11: out = in4;default out = 1'bx;endcase
endendmodule
4.2 邏輯仿真及波形驗證
注意,這里輸入in1~in4都是一位的,生成隨機數對2取模(得0,1),而sel是兩位的,要求有00,01,10,11四種情況,則不能再對2取模,而是對4取模。
always #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_in3 <= {$random} % 2;
always #10 tb_in4 <= {$random} % 2;
always #10 tb_sel <= {$random} % 4;
`timescale 1ns/1nsmodule tb_MUX4_1();reg tb_in1;
reg tb_in2;
reg tb_in3;
reg tb_in4;
reg [1:0] tb_sel;wire tb_out;initial begintb_in1 <= 1'b0;tb_in2 <= 1'b0;tb_in3 <= 1'b0;tb_in4 <= 1'b0;tb_sel <= 2'b00;
endalways #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_in3 <= {$random} % 2;
always #10 tb_in4 <= {$random} % 2;
always #10 tb_sel <= {$random} % 4;MUX4_1 MUX4_1_inst
(.in1(tb_in1),.in2(tb_in2),.in3(tb_in3),.in4(tb_in4),.sel(tb_sel),.out(tb_out)
);endmodule
(本貼僅是個人經驗,參考嗶哩嗶野火視頻:06-第六講-簡單組合邏輯---多路選擇器(一)_嗶哩嗶哩_bilibili。如有侵權請聯系我~)