組合邏輯電路的輸出信號(hào)只與當(dāng)前時(shí)刻的輸入信號(hào)有關(guān),與其他時(shí)刻的輸入狀態(tài)無關(guān),無存儲(chǔ)電路或反饋電路。 多路選擇器是在多路數(shù)據(jù)傳送過程中,根據(jù)需要選擇一條電路。 如果還沒看懂功能,結(jié)合真值表就好理解了。
A1A0是選擇線,D0-D3是數(shù)據(jù)線,A1A0構(gòu)成00-11共4種選擇,對(duì)應(yīng)著D的下標(biāo),被選中的數(shù)據(jù)線作為輸出。 8選1,16選1同理。 在本例中,選擇最簡單的2選1電路。
設(shè)計(jì)規(guī)劃
這個(gè)示例中,采用兩個(gè)按鍵作為信號(hào)輸入,一個(gè)按鍵作為信號(hào)選擇,LED作為數(shù)據(jù)輸出。 需要實(shí)現(xiàn)的功能是,當(dāng)按下按鍵sel時(shí)(sel=0),LED燈狀態(tài)取決于按鍵in2,當(dāng)不按下sel時(shí)(sel=1),LED燈狀態(tài)取決于按鍵in1。 h繪制波形圖如圖所示。
編寫代碼
module mux2_1(
input wire in1,
input wire in2,
input wire sel,
output wire out);
assign out=(sel==1'b1)?in1:in2;
endmodule
這里的組合邏輯電路可以采用always中if-else實(shí)現(xiàn)方法,always中case實(shí)現(xiàn)方法,assign中條件運(yùn)算符(三元運(yùn)算符)實(shí)現(xiàn)方法。 涉及到always的語句還沒進(jìn)行總結(jié),這里采用最簡單的assign語句,用到了很熟悉的三元運(yùn)算符。 編寫好.v文件后編譯通過。
點(diǎn)擊RTL viewer可以查看設(shè)計(jì)的硬件電路結(jié)構(gòu),和我們?cè)O(shè)計(jì)所表達(dá)的意思相同。
編寫testbench
`timescale 1ns/1ns
module tb_mux2_1();
//在testbench中待測(cè)試RTL模塊的輸入永遠(yuǎn)是reg型變量
reg in1;
reg in2;
reg sel;
//在testbench中待測(cè)試RTL模塊的輸出永遠(yuǎn)是wire型變量
wire out;
initial
begin
in1 <=1'b0;
in2 <=1'b0;
sel <=1'b0;
end
//每隔10ns產(chǎn)生輸入隨機(jī)數(shù)0或1
always #10 in1 <= {$random} % 2;
always #10 in2 <= {$random} % 2;
always #10 sel <= {$random} % 2;
//------------------------mux2_1_inst------------------------
mux2_1 mux2_1_inst
(
.in1(in1), //input in1
.in2(in2), //input in2
.sel(sel), //inputsel
.out(out) //output out
);
endmodule
和上一節(jié)中結(jié)構(gòu)類似,tb_mux2_1模塊中,首先定義初始的輸入信號(hào)in_1,in_2,sel為低電平(一般時(shí)序電路使用非阻塞賦值<=),延遲10個(gè)時(shí)間單位(ns)產(chǎn)生隨機(jī)數(shù)0或1賦值給輸入,就完成了輸入信號(hào)的波形設(shè)計(jì)。 根據(jù)實(shí)例化的講解,第2-6行和第22-28行完成的功能是將上一個(gè)mux2_1.v文件中mux2_1模塊與tb_mux2_1模塊相連。 這樣隨機(jī)生成的輸入信號(hào)就被加到mux2_1模塊上,并得到輸出mux2_1_out,通過驗(yàn)證mux2_1_out與我們期望的輸出是否一致,就知道我們的設(shè)計(jì)是否正確。
對(duì)比波形
波形顯示當(dāng)sel為高電平時(shí),out與in1一致,sel為低電平時(shí),out與in2一致。
分配管腳
全編譯后上板驗(yàn)證
按下S2(sel=0)時(shí),按下S1(in2=0)LED就亮(out=in2=0),只按下S0(in1=0)LED就亮(out=in1=0)。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21925瀏覽量
612719 -
led
+關(guān)注
關(guān)注
242文章
23628瀏覽量
669612 -
反饋電路
+關(guān)注
關(guān)注
11文章
148瀏覽量
37578 -
組合邏輯電路
+關(guān)注
關(guān)注
6文章
71瀏覽量
14844 -
多路選擇器
+關(guān)注
關(guān)注
1文章
22瀏覽量
6648
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA基礎(chǔ)學(xué)習(xí)筆記--組合邏輯電路-多路選擇器與多路分解器
至芯科技之a(chǎn)ltera 系列FPGA教程 第九篇 二選一多路選擇器的設(shè)計(jì)
至芯科技之a(chǎn)ltera 系列FPGA教程 第十篇 二選一多路選擇器激勵(lì)的設(shè)計(jì)
4選1多路選擇器是什么?
基于FPGA的多路選擇器設(shè)計(jì)(附代碼)
譯碼器及多路選擇器的使用( EDA 仿真) 實(shí)驗(yàn)

4選1多路選擇器電路圖(四款多路選擇器電路)

eda四選一多路選擇器的設(shè)計(jì)

8選1多路選擇器電路圖(五款8選1多路選擇器電路)

Verilog HDL之多路選擇器設(shè)計(jì)

寫出一個(gè)包含觸發(fā)器和多路選擇器的子模塊
【教程分享】零基礎(chǔ)學(xué)習(xí):基于FPGA的多路選擇器設(shè)計(jì)(附代碼)
零基礎(chǔ)學(xué)習(xí):基于FPGA的多路選擇器設(shè)計(jì)(附代碼)

評(píng)論