<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

HDLBits: 在線學習SystemVerilog-Problem

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-10-20 09:21 ? 次閱讀

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

網址如下:

https://hdlbits.01xz.net/

關于HDLBits的Verilog實現可以查看下面專欄:

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

縮略詞索引

  • SV:SystemVerilog

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

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

Problem 60-Mux2to1

題目說明

創建一個一位寬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是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 61-Mux2to1v

題目說明

創建一個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是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 62-Mux9to1v

題目說明

創建一個 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是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 63-Mux256to1

題目說明

創建一個 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次方?

根據題目提示:選擇運算符的 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

題目說明

本題中需要實現一個 256 選 1 選擇器,sel 信號作為選擇信號,當 sel = 0 時選擇 in[3:0],sel = 1 時選擇 in[7:4],以此類推。同上一題的區別在于,位寬從 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


審核編輯 :李倩


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

    關注

    13

    文章

    476

    瀏覽量

    42291
  • Verilog
    +關注

    關注

    28

    文章

    1328

    瀏覽量

    109466
  • 選擇器
    +關注

    關注

    0

    文章

    105

    瀏覽量

    14364

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

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

收藏 人收藏

    評論

    相關推薦

    在Vivado Synthesis中怎么使用SystemVerilog接口連接邏輯呢?

    SystemVerilog 接口的開發旨在讓設計中層級之間的連接變得更加輕松容易。 您可以把這類接口看作是多個模塊共有的引腳集合。
    的頭像 發表于 03-04 15:25 ?511次閱讀
    在Vivado Synthesis中怎么使用<b class='flag-5'>SystemVerilog</b>接口連接邏輯呢?

    分享一些SystemVerilog的coding guideline

    本文分享一些SystemVerilog的coding guideline。
    的頭像 發表于 11-22 09:17 ?390次閱讀
    分享一些<b class='flag-5'>SystemVerilog</b>的coding  guideline

    SystemVerilog相比于Verilog的優勢

    我們再從對可綜合代碼的支持角度看看SystemVerilog相比于Verilog的優勢。針對硬件設計,SystemVerilog引入了三種進程always_ff,always_comb
    的頭像 發表于 10-26 10:05 ?439次閱讀
    <b class='flag-5'>SystemVerilog</b>相比于Verilog的優勢

    systemverilog:logic比reg更有優勢

    systemverilog協議中,logic定義四態值,即向量(vector)的每個位(bit)可以是邏輯0, 1, Z或X,與verilog協議中的reg很接近。但是logic有個很明顯的優勢,不允許多驅動。
    的頭像 發表于 10-26 09:32 ?490次閱讀
    <b class='flag-5'>systemverilog</b>:logic比reg更有優勢

    SystemVerilog在硬件設計部分有哪些優勢

    談到SystemVerilog,很多工程師都認為SystemVerilog僅僅是一門驗證語言,事實上不只如此。傳統的Verilog和VHDL被稱為HDL(Hardware Description
    的頭像 發表于 10-19 11:19 ?553次閱讀
    <b class='flag-5'>SystemVerilog</b>在硬件設計部分有哪些優勢

    SystemVerilog中的聯合(union)介紹

    SystemVerilog 中,聯合只是信號,可通過不同名稱和縱橫比來加以引用。
    的頭像 發表于 10-08 15:45 ?729次閱讀
    <b class='flag-5'>SystemVerilog</b>中的聯合(union)介紹

    systemverilog:logic比reg更有優勢?

    systemverilog協議中,logic定義四態值,即向量(vector)的每個位(bit)可以是邏輯0, 1, Z或X,與verilog協議中的reg很接近。但是logic有個很明顯的優勢,不允許多驅動。
    的頭像 發表于 09-28 17:34 ?2020次閱讀
    <b class='flag-5'>systemverilog</b>:logic比reg更有優勢?

    SystemVerilog的隨機約束方法

    上一篇文章《暗藏玄機的SV隨機化》介紹了SystemVerilog的各種隨機化方法,本文將在其基礎上引入SystemVerilog的隨機約束方法(constraints)。通過使用隨機約束,我們可以將隨機限制在一定的空間內,有針對性地提高功能覆蓋率。
    的頭像 發表于 09-24 12:15 ?582次閱讀

    網絡解碼矩陣:助力在線教育,讓學習更高效!

    隨著互聯網技術的飛速發展,在線教育逐漸成為教育領域的一種重要形式,為廣大學生提供了便捷的學習途徑。然而,在線教育也面臨著視頻流暢度、畫質清晰度等挑戰。為了解決這些問題,越來越多的在線
    的頭像 發表于 09-04 10:19 ?317次閱讀
    網絡解碼矩陣:助力<b class='flag-5'>在線</b>教育,讓<b class='flag-5'>學習</b>更高效!

    verilog/systemverilog中隱藏的初始化說明

    在Verilog和SystemVerilog中經常需要在使用變量或者線網之前,期望變量和線網有對應的初始值
    的頭像 發表于 08-25 09:47 ?674次閱讀
    verilog/<b class='flag-5'>systemverilog</b>中隱藏的初始化說明

    如何實現全面的SystemVerilog語法覆蓋

    SystemVeirlog的全面支持是開發商用仿真器的第一道門檻。市面上可以找到不少基于純Verilog的仿真器,但是真正能完整支持SystemVerilog 的仍然屈指可數。如何全面地支持SystemVerilog語言,是開發仿真器的一個重要任務。
    的頭像 發表于 07-14 15:15 ?413次閱讀
    如何實現全面的<b class='flag-5'>SystemVerilog</b>語法覆蓋

    SystemVerilog里的regions以及events的調度

    本文講一下SystemVerilog的time slot里的regions以及events的調度。SystemVerilog語言是根據離散事件執行模型定義的,由events驅動。
    的頭像 發表于 07-12 11:20 ?914次閱讀
    <b class='flag-5'>SystemVerilog</b>里的regions以及events的調度

    開源的Bluespec SystemVerilog (BSV)語言表現如何?

    Bluespec SystemVerilog (BSV) 是由Arvind 開發的 Bluespec 語言,這是一種高級功能 硬件 描述編程語言,本質上是Haskell(Haskell
    的頭像 發表于 06-27 10:14 ?446次閱讀
    開源的Bluespec <b class='flag-5'>SystemVerilog</b> (BSV)語言表現如何?

    SystemVerilog的覆蓋率建模方式

    為了確保驗證的完備性,我們需要量化驗證目標。SystemVerilog提供了一套豐富的覆蓋率建模方式。
    的頭像 發表于 06-25 10:44 ?669次閱讀

    Systemverilog中的Driving Strength講解

    systemverilog中,net用于對電路中連線進行建模,driving strength(驅動強度)可以讓net變量值的建模更加精確。
    的頭像 發表于 06-14 15:50 ?936次閱讀
    <b class='flag-5'>Systemverilog</b>中的Driving Strength講解
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>