0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

HDLBits: 在線學習SystemVerilog-Problem

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-10-20 09:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數(shù)字硬件設計~

網(wǎng)址如下:

https://hdlbits.01xz.net/

關于HDLBits的Verilog實現(xiàn)可以查看下面專欄:

https://www.zhihu.com/column/c_1131528588117385216

縮略詞索引

  • SV:SystemVerilog

從今天開始新的一章-Circuits,包括基本邏輯電路、時序電路、組合電路等。

今天更新整個多路選擇器一小節(jié)題目,多路選擇器也是組合電路的基本電路。

Problem 60-Mux2to1

題目說明

創(chuàng)建一個一位寬2路選擇器。當 sel=0 時,選擇 a。當 sel=1 時,選擇 b。

模塊端口聲明

moduletop_module(
inputa,b,sel,
outputout);

題目解析

這個題目沒什么難度,看下面參考代碼即可:

moduletop_module(
inputlogica,b,sel,
outputlogicout);

assignout=sel?b:a;


endmodule

f837d93a-5013-11ed-a3b6-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

f84fbac8-5013-11ed-a3b6-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 61-Mux2to1v

題目說明

創(chuàng)建一個100位寬2路選擇器。當 sel=0 時,選擇 a。當 sel=1 時,選擇 b。

模塊端口聲明

moduletop_module(
input[99:0]a,b,
inputsel,
output[99:0]out);

題目解析

這道題難度不大核心代碼只有一行。

簡單解答

moduletop_module(
inputlogic[99:0]a,b,
inputlogicsel,
outputlogic[99:0]out);


assignout=sel?b:a;

endmodule
f887119e-5013-11ed-a3b6-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

f8af938a-5013-11ed-a3b6-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 62-Mux9to1v

題目說明

創(chuàng)建一個 16 位寬的 9 選 1 多路選擇器。sel=0 選擇 a,sel=1 選擇 b,等等。對于未使用的情況(sel=9 到 15),將所有輸出位設置為“1”。

模塊端口聲明

moduletop_module(
input[15:0]a,b,c,d,e,f,g,h,i,
input[3:0]sel,
output[15:0]out);

題目解析

這種多路選擇,用條件運算顯然不合適,所以我們選擇使用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

f8ddef00-5013-11ed-a3b6-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

f8ee8d88-5013-11ed-a3b6-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 63-Mux256to1

題目說明

創(chuàng)建一個 1 位寬、256 選 1 的多路選擇器。256 個輸入打包成一個 256 位輸入向量。sel=0 應該選擇in[0], sel=1 選擇in[1]位, sel=2 選擇in[2]位,等等。

模塊端口聲明

moduletop_module(
input[255:0]in,
input[7:0]sel,
outputout);

題目解析

題目輸入是一個向量,我們在設計的時候不可能按照case或者三元運算去做設計(工作量巨大),所以我們需要觀察這個題目的特點,輸入是256位寬,是不是2^8次方?

根據(jù)題目提示:選擇運算符的 index 可以為變量,只要變量的位寬和向量的長度匹配即可。

So?

moduletop_module(
inputlogic[255:0]in,
inputlogic[7:0]sel,
outputlogicout);
assignout=in[sel];
endmodule
f9229506-5013-11ed-a3b6-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

f93b6ea0-5013-11ed-a3b6-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

Problem 64-Mux256to1v

題目說明

本題中需要實現(xiàn)一個 256 選 1 選擇器,sel 信號作為選擇信號,當 sel = 0 時選擇 in[3:0],sel = 1 時選擇 in[7:4],以此類推。同上一題的區(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
f945828c-5013-11ed-a3b6-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

f95fab4e-5013-11ed-a3b6-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

總結

今天的幾道題就結束了,整體比較簡單,沒有復雜的代碼,沒有復雜的設計思路。

最后我這邊做題的代碼也是個人理解使用,有錯誤歡迎大家批評指正,祝大家學習愉快~

代碼鏈接:

https://github.com/suisuisi/SystemVerilog/tree/main/SystemVerilogHDLBits


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 邏輯電路
    +關注

    關注

    13

    文章

    502

    瀏覽量

    43305
  • Verilog
    +關注

    關注

    29

    文章

    1367

    瀏覽量

    112160
  • 選擇器
    +關注

    關注

    0

    文章

    110

    瀏覽量

    14810

原文標題:HDLBits: 在線學習 SystemVerilog(十一)-Problem 60-64

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    KM亮相石油化工展#在線監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2025年06月20日 15:41:55

    KM告訴你什么是在線監(jiān)測?#

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2025年06月19日 14:07:22

    KMPHM在線監(jiān)測系統(tǒng) 讓設備故障無處遁形#在線監(jiān)測#振動在線監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2025年05月22日 16:30:08

    #諧波在線監(jiān)測裝置操作界面

    在線監(jiān)測
    aozhuogeng
    發(fā)布于 :2025年05月01日 09:23:46

    #諧波在線監(jiān)測裝置核心作用

    在線監(jiān)測
    aozhuogeng
    發(fā)布于 :2025年04月22日 09:06:09

    KMPHM在線監(jiān)測平臺賦能設備管理升級#在線監(jiān)測#振動監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2025年03月06日 14:51:51

    實現(xiàn)工廠效益最大化 KMPHM在線監(jiān)測高效代替人工巡檢#在線監(jiān)測 #振動監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2025年02月28日 09:21:03

    微氣象在線監(jiān)測裝置氣象環(huán)境實時在線監(jiān)測數(shù)據(jù)穩(wěn)定可靠

    在線監(jiān)測
    jf_96960730
    發(fā)布于 :2024年12月27日 09:17:07

    KMPHM在線監(jiān)測平臺實現(xiàn)設備高效管理#在線監(jiān)測#振動監(jiān)測#振動在線監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2024年12月24日 13:34:35

    KM振動在線監(jiān)測系統(tǒng)助力設備煥新升級#振動在線監(jiān)測#振動監(jiān)測#在線監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2024年10月23日 14:59:48

    賽盛EMC在線學習平臺:揭秘學習寶典&工具秘籍!

    《賽盛在線學習及工具應用》線上發(fā)布會SESOnline【經(jīng)驗結晶,智啟未來之路】在電磁兼容浩瀚海洋中,我們深耕近二十年,積累了豐富的EMC(電磁兼容)技術經(jīng)驗及培訓經(jīng)驗。此刻,這份深厚積累匯成知識
    的頭像 發(fā)表于 10-11 08:03 ?1757次閱讀
    賽盛EMC<b class='flag-5'>在線</b><b class='flag-5'>學習</b>平臺:揭秘<b class='flag-5'>學習</b>寶典&amp;amp;工具秘籍!

    KMPHM振動在線監(jiān)測助力企業(yè)輕裝上陣#振動在線監(jiān)測 #在線監(jiān)測 #振動監(jiān)測

    在線監(jiān)測
    KM預測性維護專家
    發(fā)布于 :2024年09月29日 15:17:03

    Verilog testbench問題求助

    這是我在HDLbits網(wǎng)站上做到的一道題,是testbench,請問這個代碼為什么input都是低電平0?我設置的時鐘就是周期10ns,占空比50%的時鐘信號?。吭趺磿霈F(xiàn)這種情況......
    發(fā)表于 07-21 11:14

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品