色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

使用Verilog/SystemVerilog硬件描述語言練習數字硬件設計

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-08 09:04 ? 次閱讀

HDLBits: 在線學習 SystemVerilog(五)-Problem 19-23

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

網址如下:

https://hdlbits.01xz.net/

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

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

縮略詞索引

SV:SystemVerilog

Problem 19-Module

從這題開始會接觸到一個“熟悉的陌生人”-模塊module

截止目前,我們已經對 Verilog 中模塊這一概念建立了初步的印象:模塊是一個電路,通過輸入輸出端口和外部的電路聯系。無論多大,多復雜的數字電路都是由一個個模塊以及其他組成部分(比如 assign 賦值語句以及 always 過程塊)互相連接所構成的。在一個模塊中可以例化下一級的模塊,這就形成了層級的概念(hierarchy)。

模塊例化的基本語法 :模塊名 實例名(定義連接 port 的信號);

比如 mod_a instance1 ( wa, wb, wc );

模塊信號連接的三種方式:

在實例化模塊時,使用Verilog時有兩種常用的方式來進行模塊端口的信號連接:按端口順序以及按端口名稱連接端口。

按端口順序,mod_a instance1 ( wa, wb, wc ); wa, wb, wc 分別連接到模塊的 第一個端口(in1),第二個端口(in2)以及第三個端口(out)。這里所謂的端口順序指的是模塊端口的定義順序。這種方式的弊端在于,一旦端口列表發生改變,所有模塊實例化中的端口連接都需要改變。

按端口名稱,mod_a instance2 ( .out(wc), .in1(wa), .in2(wb) ); 在這種方式中根據端口名稱指定外部信號的連接。這樣一來就和端口聲明的順序完全沒有關系。一旦模塊出現改動,只要修改相應的部分即可。實際上,一般都使用這種方式來進行模塊實例化。

這里建議初學者統一使用按端口名稱進行模塊例化,避免不必要的功能錯誤。

題目說明

在上面已經定義了一個模塊mod_a,請例化該模塊,下圖時模塊mod_a定義。

941868f0-2f0e-11ed-ba43-dac502259ad0.png 圖片來自 HDLBits

這個題目的核心就是將上面的圖片里的模塊mod_a進行例化。

模塊端口聲明

moduletop_module(inputa,inputb,outputout);

題目解析

這個題目重點是模塊例化,可以使用上面介紹的任何一種方式(按端口順序以及按端口名稱連接端口)。

moduletop_module(inputlogica,inputlogicb,outputwirelogicout);

mod_am1(
.in1(a),
.in2(b),
.out(out)
);

endmodule


9441900e-2f0e-11ed-ba43-dac502259ad0.png

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

9466a880-2f0e-11ed-ba43-dac502259ad0.png

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

這一題就結束了。

Problem 20-Module_pos

題目說明

這道題也和上一題一樣,給出了一個模塊mod_a,該模塊按順序具有 2 個輸出和 4 個輸入。必須將6個端口按位置順序與頂層的端口out1,out2,a,b,c和d相連接。

模塊端口聲明

moduletop_module(
inputa,
inputb,
inputc,
inputd,
outputout1,
outputout2
);

題目解析

這道題難度不大,和上一題類似,加大對模塊例化的理解。

moduletop_module(
inputlogica,b,c,d,
outputwirelogicout1,out2
);
mod_am1(
out1,
out2,
a,
b,
c,
d
);

endmodule

在本題中對于給出的模塊來說,我們并不知道mod_a這個模塊的端口名是什么,所以對于本題來說,只能按照位置的順序來連接。

9497ed46-2f0e-11ed-ba43-dac502259ad0.png

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

94bf8022-2f0e-11ed-ba43-dac502259ad0.png

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

這一題就結束了。

Problem 21-Module_name

題目說明

這道題和上一題一樣,給出了一個名為mod_a的模塊,該模塊按某種順序具有2個輸出和4個輸入。必須將6個端口通過按名字的方法與頂層的端口相連接。

94ec8a04-2f0e-11ed-ba43-dac502259ad0.png 圖片來自 HDLBits

mod_a的定義如下:

modulemod_a(outputout1,outputout2,inputin1,inputin2,inputin3,inputin4);
9509d6b8-2f0e-11ed-ba43-dac502259ad0.png 圖片來自 HDLBits

模塊端口聲明

moduletop_module(
inputa,
inputb,
inputc,
inputd,
outputout1,
outputout2
);

題目解析

本題考查的和上一題一樣,只不過上一題沒有給出mod_a的端口定義,這一題給出了端口定義,所以我們需要使用按端口名稱來例化模塊。

moduletop_module(
inputlogica,
inputlogicb,
inputlogicc,
inputlogicd,
outputwirelogicout1,
outputwirelogicout2
);

mod_am1(
.out1(out1),
.out2(out2),
.in1(a),
.in2(b),
.in3(c),
.in4(d)
);
endmodule


這道題有人覺得和上一道題一樣,也是同樣使用上一道題進行解答,但是會報錯,這是因為出題者考慮到了這種問題,所以題目給出的out1, out2, a, b, c, d不是mod_a正確的順序,只能按照名稱去例化。

95368406-2f0e-11ed-ba43-dac502259ad0.png

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

95598dc0-2f0e-11ed-ba43-dac502259ad0.png

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

這一題就結束了。

Problem 22-Module_shift

題目說明

給定一個名為my_dff(實現 D 觸發器功能)模塊,該模塊具有兩個輸入和一個輸出。實例化三次,將它們鏈接在一起制作一個長度為 3 的移位寄存器。clk端口需要連接到所有實例。

提供的模塊是:

modulemy_dff(inputclk,inputd,outputq);

請注意,要建立內部連接,需要聲明一些wire。wire和模塊例化時候命名要小心:名稱必須是唯一的。

958a3a6a-2f0e-11ed-ba43-dac502259ad0.png 圖片來自 HDLBits

問題的核心就是上面的圖片,例化和連線需要注意。

模塊端口聲明

moduletop_module(inputclk,inputd,outputq);

題目解析

這個題目還是模塊例化,需要理解例化的概念。需要將第一個例化的輸出,作為第二個例化模塊的輸入,以此類推。

moduletop_module(inputlogicclk,
inputlogicd,
outputlogicq
);

wirelogicq0,q1;

my_dfff1(
.clk(clk),
.d(d),
.q(q0)
);

my_dfff2(
.clk(clk),
.d(q0),
.q(q1)
);

my_dfff3(
.clk(clk),
.d(q1),
.q(q)
);

endmodule


95ab095c-2f0e-11ed-ba43-dac502259ad0.png

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

95cb52c0-2f0e-11ed-ba43-dac502259ad0.png

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

這一題就結束了。

Problem 23-Module shift8

本題是上一題的擴展。使用向量作為端口的連線。正如Verilog的語法一樣,端口的向量長度不必與連接到它的導線匹配,但這將導致向量的零填充或截斷。在本練習中不使用具有不匹配的向量連接。

題目說明

給出了一個名為my_dff8的模塊,包含兩個輸入和一個輸出(實現一個8bit的D觸發器)。請實例化三次,并將它們連接在一起,形成一個長度為3的8bit移位寄存器。此外,再寫出一個4選1多路復用器(未提供模塊模型),根據輸入的sel[1:0]選擇要輸出的內容:輸入D的值,在第一個D觸發器之后的值,第二個或第三個D觸發器之后的值。(可以說sel選擇的是輸入延遲的的周期數,0~3個時鐘周期不等。)

95fa3946-2f0e-11ed-ba43-dac502259ad0.png 圖片來自 HDLBits

這個題目的核心就是將上面的圖片里的模塊my_dff8進行例化。

模塊端口聲明

moduletop_module(
inputclk,
input[7:0]d,
input[1:0]sel,
output[7:0]q
);

題目解析

這個題目重點是模塊例化,和上一題差不多,注意一下向量定義及端口連接即可。

moduletop_module(
inputclk,
inputlogic[7:0]d,
inputlogic[1:0]sel,
outputlogic[7:0]q
);
logic[7:0]q0,q1,q2;

my_dff8d0(
.clk(clk),
.d(d),
.q(q0)
);

my_dff8d1(
.clk(clk),
.d(q0),
.q(q1)
);

my_dff8d2(
.clk(clk),
.d(q1),
.q(q2)
);

always_combbegin
uniquecase(sel)
2'b00:
q=d;
2'b01:
q=q0;
2'b10:
q=q1;
2'b11:
q=q2;
default:
q=2'bzz;
endcase
end


endmodule


這題中,涉及到了SV的組合邏輯設計,基本語法和Verilog類似,主要涉及到了一個unique決策修飾符,使用unique會指示綜合編譯器可以并行計算case項。這部分內容會在SV的系列教程里繼續展開描述。

9622b5d8-2f0e-11ed-ba43-dac502259ad0.png

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

9647c242-2f0e-11ed-ba43-dac502259ad0.png

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

這一題就結束了。

總結

今天的幾道題就結束了,主要考察模塊例化問題~

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

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

    關注

    11

    文章

    3315

    瀏覽量

    66206
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110078
  • 端口
    +關注

    關注

    4

    文章

    964

    瀏覽量

    32058

原文標題:HDLBits: 在線學習 SystemVerilog(五)-Problem 19-23

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

收藏 人收藏

    評論

    相關推薦

    verilog硬件描述語言課程講義

    verilog硬件描述語言課程講義
    發表于 08-06 11:35

    Verilog HDL硬件描述語言

    Verilog HDL硬件描述語言
    發表于 01-13 14:40

    Verilog_HDL硬件描述語言

    Verilog_HDL硬件描述語言 FPGA的資料
    發表于 02-26 14:03

    Verilog硬件描述語言描述.

    本書簡要介紹了Verilog硬件描述語言的基礎知識,包括語言的基本內容和基本結構 ,以及利用該語言在各種層次上對
    發表于 03-27 23:44 ?101次下載

    VERILOG HDL硬件描述語言

    本書簡要介紹了Verilog硬件描述語言的基礎知識,包括語言的基本內容和基本結構 ,以及利用該語言在各種層次上對
    發表于 07-20 11:36 ?0次下載

    Verilog HDL硬件描述語言【書籍

    本書簡要介紹了Verilog 硬件描述語言的基礎知識,包括語言的基本內容和基本結構,以及利用該語言在各種層次上對
    發表于 07-02 14:55 ?124次下載

    verilog硬件描述語言課程講義

    verilog硬件描述語言課程講義
    發表于 05-21 15:01 ?33次下載
    <b class='flag-5'>verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語言</b>課程講義

    Verilog硬件描述語言參考手冊

    Verilog硬件描述語言參考手冊,Verilog語法內容介紹
    發表于 11-12 17:20 ?0次下載

    Verilog HDL硬件描述語言

    Verilog HDL硬件描述語言 有需要的下來看看
    發表于 12-29 15:31 ?0次下載

    Verilog硬件描述語言

    VHDL語言編程學習Verilog硬件描述語言
    發表于 09-01 15:27 ?0次下載

    Verilog HDL硬件描述語言

    Verilog HDL硬件描述語言,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-11 11:20 ?11次下載

    基于Verilog硬件描述語言的IEEE標準硬件描述語言資料合集免費下載

    本文檔的主要內容詳細介紹的是基于Verilog硬件描述語言的IEEE標準硬件描述語言資料合集免費下載:1995、2001、2005;
    發表于 06-18 08:00 ?10次下載

    Verilog硬件描述語言的學習課件免費下載

    本文檔的主要內容詳細介紹的是Verilog硬件描述語言的學習課件免費下載。
    發表于 01-22 12:13 ?17次下載
    <b class='flag-5'>Verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語言</b>的學習課件免費下載

    Verilog硬件描述語言參考手冊免費下載

    Verilog 硬件描述語言參考手冊是根據IEEE 的標準“Verilog 硬件描述語言參考手
    發表于 02-05 16:24 ?73次下載
    <b class='flag-5'>Verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語言</b>參考手冊免費下載

    使用Verilog/SystemVerilog硬件描述語言練習數字硬件設計

    HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習
    的頭像 發表于 08-31 09:06 ?1692次閱讀
    主站蜘蛛池模板: 99久久爱看免费观看| 神马老子影院午夜伦| 久久99r66热这里有精品| 国产成人免费观看在线视频| 被黑人掹躁10次高潮| avtt天堂网2014| av天堂网2014在线| 99久久久精品| 99国产精品久久人妻无码| 中文字幕在线久热精品| 中文字幕日本久久2019| 在线观看国产人视频免费中国| 亚洲欧美中文在线一区| 亚洲欧美无码2017在线| 亚洲区偷拍自拍29P| 野花高清在线观看免费3中文| 亚洲在线2018最新无码| 伊人久久综合成人亚洲| 真人美女精美小穴| 91av欧美| yellow视频免费观看| 成人毛片在线播放| 国产精品一区二区AV白丝在线| 国产午夜伦伦伦午夜伦| 久久re热线视频国产| 口工漫画r18全彩啪啪| 男人私gay挠脚心vk视频| 热久久伊大人香蕉网老师| 世界上第一个得抑郁症的人是谁| 玩弄朋友娇妻呻吟交换电影| 亚洲 日韩 欧美 另类 蜜桃| 亚洲婷婷天堂综合国产剧情| 在线观看亚洲免费视频| chinese学生gv video| 动漫美女脱小内内露尿口| 国产精品亚洲高清一区二区 | 色欲AV精品人妻一区二区三区| 丝瓜涩涩屋黄瓜香蕉丝瓜| 亚洲精品国产AV成人毛片| 中文字幕在线播放| 大香伊人久久|