HDLBits 是一組小型電路設(shè)計(jì)習(xí)題集,使用 Verilog/SystemVerilog 硬件描述語(yǔ)言 (HDL) 練習(xí)數(shù)字硬件設(shè)計(jì)~
網(wǎng)址如下:
https://hdlbits.01xz.net/
關(guān)于HDLBits的Verilog實(shí)現(xiàn)可以查看下面專(zhuān)欄:
https://www.zhihu.com/column/c_1131528588117385216
縮略詞索引:
- SV:SystemVerilog
從今天開(kāi)始新的一章-Circuits,包括基本邏輯電路、時(shí)序電路、組合電路等。
今天更新整個(gè)多路選擇器一小節(jié)題目,多路選擇器也是組合電路的基本電路。
Problem 60-Mux2to1
題目說(shuō)明
創(chuàng)建一個(gè)一位寬2路選擇器。當(dāng) sel=0 時(shí),選擇 a。當(dāng) sel=1 時(shí),選擇 b。
模塊端口聲明
moduletop_module(
inputa,b,sel,
outputout);
題目解析
這個(gè)題目沒(méi)什么難度,看下面參考代碼即可:
moduletop_module(
inputlogica,b,sel,
outputlogicout);
assignout=sel?b:a;
endmodule

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 61-Mux2to1v
題目說(shuō)明
創(chuàng)建一個(gè)100位寬2路選擇器。當(dāng) sel=0 時(shí),選擇 a。當(dāng) sel=1 時(shí),選擇 b。
模塊端口聲明
moduletop_module(
input[99:0]a,b,
inputsel,
output[99:0]out);
題目解析
這道題難度不大核心代碼只有一行。
簡(jiǎn)單解答
moduletop_module(
inputlogic[99:0]a,b,
inputlogicsel,
outputlogic[99:0]out);
assignout=sel?b:a;
endmodule

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 62-Mux9to1v
題目說(shuō)明
創(chuàng)建一個(gè) 16 位寬的 9 選 1 多路選擇器。sel=0 選擇 a,sel=1 選擇 b,等等。對(duì)于未使用的情況(sel=9 到 15),將所有輸出位設(shè)置為“1”。
模塊端口聲明
moduletop_module(
input[15:0]a,b,c,d,e,f,g,h,i,
input[3:0]sel,
output[15:0]out);
題目解析
這種多路選擇,用條件運(yùn)算顯然不合適,所以我們選擇使用case。
moduletop_module(
inputlogic[15:0]a,b,c,d,e,f,g,h,i,
inputlogic[3:0]sel,
outputlogic[15:0]out);
always_combbegin
case(sel)
4'd0:begin
out=a;
end
4'd1:begin
out=b;
end
4'd2:begin
out=c;
end
4'd3:begin
out=d;
end
4'd4:begin
out=e;
end
4'd5:begin
out=f;
end
4'd6:begin
out=g;
end
4'd7:begin
out=h;
end
4'd8:begin
out=i;
end
default:begin
out=16'hffff;
end
endcase
end
endmodule

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。
這一題就結(jié)束了。
Problem 63-Mux256to1
題目說(shuō)明
創(chuàng)建一個(gè) 1 位寬、256 選 1 的多路選擇器。256 個(gè)輸入打包成一個(gè) 256 位輸入向量。sel=0 應(yīng)該選擇in[0], sel=1 選擇in[1]位, sel=2 選擇in[2]位,等等。
模塊端口聲明
moduletop_module(
input[255:0]in,
input[7:0]sel,
outputout);
題目解析
題目輸入是一個(gè)向量,我們?cè)谠O(shè)計(jì)的時(shí)候不可能按照case或者三元運(yùn)算去做設(shè)計(jì)(工作量巨大),所以我們需要觀察這個(gè)題目的特點(diǎn),輸入是256位寬,是不是2^8次方?
根據(jù)題目提示:選擇運(yùn)算符的 index 可以為變量,只要變量的位寬和向量的長(zhǎng)度匹配即可。
So?
moduletop_module(
inputlogic[255:0]in,
inputlogic[7:0]sel,
outputlogicout);
assignout=in[sel];
endmodule

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

注意圖中無(wú)波形。
這一題就結(jié)束了。
Problem 64-Mux256to1v
題目說(shuō)明
本題中需要實(shí)現(xiàn)一個(gè) 256 選 1 選擇器,sel 信號(hào)作為選擇信號(hào),當(dāng) sel = 0 時(shí)選擇 in[3:0],sel = 1 時(shí)選擇 in[7:4],以此類(lèi)推。同上一題的區(qū)別在于,位寬從 1 位變到了 4 位。
模塊端口聲明
moduletop_module(
input[1023:0]in,
input[7:0]sel,
output[3:0]out);
題目解析
將上一題答案稍加改造即可,選擇的位跨4位并且+4。
moduletop_module(
inputlogic[1023:0]in,
inputlogic[7:0]sel,
outputlogic[3:0]out);
assignout=in[sel*4+:4];
endmodule

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

注意圖中無(wú)波形。
這一題就結(jié)束了。
總結(jié)
今天的幾道題就結(jié)束了,整體比較簡(jiǎn)單,沒(méi)有復(fù)雜的代碼,沒(méi)有復(fù)雜的設(shè)計(jì)思路。
最后我這邊做題的代碼也是個(gè)人理解使用,有錯(cuò)誤歡迎大家批評(píng)指正,祝大家學(xué)習(xí)愉快~
代碼鏈接:
https://github.com/suisuisi/SystemVerilog/tree/main/SystemVerilogHDLBits
審核編輯 :李倩
-
邏輯電路
+關(guān)注
關(guān)注
13文章
503瀏覽量
44249 -
Verilog
+關(guān)注
關(guān)注
31文章
1374瀏覽量
114718 -
選擇器
+關(guān)注
關(guān)注
0文章
111瀏覽量
15160
原文標(biāo)題:HDLBits: 在線學(xué)習(xí) SystemVerilog(十一)-Problem 60-64
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
KM在線監(jiān)測(cè)方案落地蘇州 實(shí)現(xiàn)風(fēng)機(jī)健康管理
KM在線監(jiān)測(cè)廠家閃耀2026國(guó)際TnPM大會(huì)#在線監(jiān)測(cè)#振動(dòng)監(jiān)測(cè)
KM在線監(jiān)測(cè)方案實(shí)現(xiàn)智能運(yùn)維
KM在線監(jiān)測(cè)實(shí)現(xiàn)設(shè)備高效管理#在線監(jiān)測(cè)
KM工業(yè)運(yùn)維在線監(jiān)測(cè)源頭廠家#振動(dòng)監(jiān)測(cè)
KM設(shè)備在線監(jiān)測(cè)方案 靈活部署 減少80%維修成本#在線監(jiān)測(cè)
激光雪深監(jiān)測(cè)站—實(shí)時(shí)在線監(jiān)測(cè)積雪厚度
KM在線監(jiān)測(cè)方案保障水泵安全生產(chǎn)#在線監(jiān)測(cè)
破解平壓平模切機(jī)監(jiān)測(cè)難題!KMPHM在線監(jiān)測(cè)方案大揭秘 #在線監(jiān)測(cè)
KM告訴你 人工監(jiān)測(cè)VS在線監(jiān)測(cè) 誰(shuí)才是效率王者?#在線監(jiān)測(cè)
KM在線監(jiān)測(cè)標(biāo)桿計(jì)劃招募中#在線監(jiān)測(cè)
KMPHM在線監(jiān)測(cè)系統(tǒng) 讓設(shè)備故障無(wú)處遁形#在線監(jiān)測(cè)#振動(dòng)在線監(jiān)測(cè)
HDLBits: 在線學(xué)習(xí)SystemVerilog-Problem
評(píng)論