一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

使用Verilog/SystemVerilog硬件描述語(yǔ)言練習(xí)數(shù)字硬件設(shè)計(jì)

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-08 09:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

HDLBits: 在線(xiàn)學(xué)習(xí) SystemVerilog(五)-Problem 19-23

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

Problem 19-Module

從這題開(kāi)始會(huì)接觸到一個(gè)“熟悉的陌生人”-模塊module

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

模塊例化的基本語(yǔ)法 :模塊名 實(shí)例名(定義連接 port 的信號(hào));

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

模塊信號(hào)連接的三種方式:

在實(shí)例化模塊時(shí),使用Verilog時(shí)有兩種常用的方式來(lái)進(jìn)行模塊端口的信號(hào)連接:按端口順序以及按端口名稱(chēng)連接端口。

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

按端口名稱(chēng),mod_a instance2 ( .out(wc), .in1(wa), .in2(wb) ); 在這種方式中根據(jù)端口名稱(chēng)指定外部信號(hào)的連接。這樣一來(lái)就和端口聲明的順序完全沒(méi)有關(guān)系。一旦模塊出現(xiàn)改動(dòng),只要修改相應(yīng)的部分即可。實(shí)際上,一般都使用這種方式來(lái)進(jìn)行模塊實(shí)例化。

這里建議初學(xué)者統(tǒng)一使用按端口名稱(chēng)進(jìn)行模塊例化,避免不必要的功能錯(cuò)誤。

題目說(shuō)明

在上面已經(jīng)定義了一個(gè)模塊mod_a,請(qǐng)例化該模塊,下圖時(shí)模塊mod_a定義。

941868f0-2f0e-11ed-ba43-dac502259ad0.png 圖片來(lái)自 HDLBits

這個(gè)題目的核心就是將上面的圖片里的模塊mod_a進(jìn)行例化。

模塊端口聲明

moduletop_module(inputa,inputb,outputout);

題目解析

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

moduletop_module(inputlogica,inputlogicb,outputwirelogicout);

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

endmodule


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

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

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

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

這一題就結(jié)束了。

Problem 20-Module_pos

題目說(shuō)明

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

模塊端口聲明

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

題目解析

這道題難度不大,和上一題類(lèi)似,加大對(duì)模塊例化的理解。

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

endmodule

在本題中對(duì)于給出的模塊來(lái)說(shuō),我們并不知道m(xù)od_a這個(gè)模塊的端口名是什么,所以對(duì)于本題來(lái)說(shuō),只能按照位置的順序來(lái)連接。

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

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

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

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

這一題就結(jié)束了。

Problem 21-Module_name

題目說(shuō)明

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

94ec8a04-2f0e-11ed-ba43-dac502259ad0.png 圖片來(lái)自 HDLBits

mod_a的定義如下:

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

模塊端口聲明

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

題目解析

本題考查的和上一題一樣,只不過(guò)上一題沒(méi)有給出mod_a的端口定義,這一題給出了端口定義,所以我們需要使用按端口名稱(chēng)來(lái)例化模塊。

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

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


這道題有人覺(jué)得和上一道題一樣,也是同樣使用上一道題進(jìn)行解答,但是會(huì)報(bào)錯(cuò),這是因?yàn)槌鲱}者考慮到了這種問(wèn)題,所以題目給出的out1, out2, a, b, c, d不是mod_a正確的順序,只能按照名稱(chēng)去例化。

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

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

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

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

這一題就結(jié)束了。

Problem 22-Module_shift

題目說(shuō)明

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

提供的模塊是:

modulemy_dff(inputclk,inputd,outputq);

請(qǐng)注意,要建立內(nèi)部連接,需要聲明一些wire。wire和模塊例化時(shí)候命名要小心:名稱(chēng)必須是唯一的。

958a3a6a-2f0e-11ed-ba43-dac502259ad0.png 圖片來(lái)自 HDLBits

問(wèn)題的核心就是上面的圖片,例化和連線(xiàn)需要注意。

模塊端口聲明

moduletop_module(inputclk,inputd,outputq);

題目解析

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

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

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

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

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

這一題就結(jié)束了。

Problem 23-Module shift8

本題是上一題的擴(kuò)展。使用向量作為端口的連線(xiàn)。正如Verilog的語(yǔ)法一樣,端口的向量長(zhǎng)度不必與連接到它的導(dǎo)線(xiàn)匹配,但這將導(dǎo)致向量的零填充或截?cái)?。在本練?xí)中不使用具有不匹配的向量連接。

題目說(shuō)明

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

95fa3946-2f0e-11ed-ba43-dac502259ad0.png 圖片來(lái)自 HDLBits

這個(gè)題目的核心就是將上面的圖片里的模塊my_dff8進(jìn)行例化。

模塊端口聲明

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

題目解析

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

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的組合邏輯設(shè)計(jì),基本語(yǔ)法和Verilog類(lèi)似,主要涉及到了一個(gè)unique決策修飾符,使用unique會(huì)指示綜合編譯器可以并行計(jì)算case項(xiàng)。這部分內(nèi)容會(huì)在SV的系列教程里繼續(xù)展開(kāi)描述。

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

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

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

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

這一題就結(jié)束了。

總結(jié)

今天的幾道題就結(jié)束了,主要考察模塊例化問(wèn)題~

最后我這邊做題的代碼也是個(gè)人理解使用,有錯(cuò)誤歡迎大家批評(píng)指正,祝大家學(xué)習(xí)愉快~

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3485

    瀏覽量

    67534
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112321
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1046

    瀏覽量

    32965

原文標(biāo)題:HDLBits: 在線(xiàn)學(xué)習(xí) SystemVerilog(五)-Problem 19-23

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    verilog硬件描述語(yǔ)言課程講義

    verilog硬件描述語(yǔ)言課程講義
    發(fā)表于 08-06 11:35

    Verilog HDL硬件描述語(yǔ)言

    Verilog HDL硬件描述語(yǔ)言
    發(fā)表于 01-13 14:40

    Verilog_HDL硬件描述語(yǔ)言

    Verilog_HDL硬件描述語(yǔ)言 FPGA的資料
    發(fā)表于 02-26 14:03

    Verilog硬件描述語(yǔ)言描述.

    本書(shū)簡(jiǎn)要介紹了Verilog硬件描述語(yǔ)言的基礎(chǔ)知識(shí),包括語(yǔ)言的基本內(nèi)容和基本結(jié)構(gòu) ,以及利用該語(yǔ)言在各種層次上對(duì)
    發(fā)表于 03-27 23:44 ?101次下載

    VERILOG HDL硬件描述語(yǔ)言

    本書(shū)簡(jiǎn)要介紹了Verilog硬件描述語(yǔ)言的基礎(chǔ)知識(shí),包括語(yǔ)言的基本內(nèi)容和基本結(jié)構(gòu) ,以及利用該語(yǔ)言在各種層次上對(duì)
    發(fā)表于 07-20 11:36 ?0次下載

    Verilog HDL硬件描述語(yǔ)言【書(shū)籍

    本書(shū)簡(jiǎn)要介紹了Verilog 硬件描述語(yǔ)言的基礎(chǔ)知識(shí),包括語(yǔ)言的基本內(nèi)容和基本結(jié)構(gòu),以及利用該語(yǔ)言在各種層次上對(duì)
    發(fā)表于 07-02 14:55 ?124次下載

    verilog硬件描述語(yǔ)言課程講義

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

    Verilog硬件描述語(yǔ)言參考手冊(cè)

    Verilog硬件描述語(yǔ)言參考手冊(cè),Verilog語(yǔ)法內(nèi)容介紹
    發(fā)表于 11-12 17:20 ?0次下載

    Verilog HDL硬件描述語(yǔ)言

    Verilog HDL硬件描述語(yǔ)言 有需要的下來(lái)看看
    發(fā)表于 12-29 15:31 ?0次下載

    Verilog硬件描述語(yǔ)言

    VHDL語(yǔ)言編程學(xué)習(xí)Verilog硬件描述語(yǔ)言
    發(fā)表于 09-01 15:27 ?0次下載

    Verilog HDL硬件描述語(yǔ)言

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

    基于Verilog硬件描述語(yǔ)言的IEEE標(biāo)準(zhǔn)硬件描述語(yǔ)言資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是基于Verilog硬件描述語(yǔ)言的IEEE標(biāo)準(zhǔn)硬件描述語(yǔ)言資料合集免費(fèi)下載:1995、2001、2005;
    發(fā)表于 06-18 08:00 ?11次下載

    Verilog硬件描述語(yǔ)言的學(xué)習(xí)課件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Verilog硬件描述語(yǔ)言的學(xué)習(xí)課件免費(fèi)下載。
    發(fā)表于 01-22 12:13 ?17次下載
    <b class='flag-5'>Verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語(yǔ)言</b>的學(xué)習(xí)課件免費(fèi)下載

    Verilog硬件描述語(yǔ)言參考手冊(cè)免費(fèi)下載

    Verilog 硬件描述語(yǔ)言參考手冊(cè)是根據(jù)IEEE 的標(biāo)準(zhǔn)“Verilog 硬件描述語(yǔ)言參考手
    發(fā)表于 02-05 16:24 ?79次下載
    <b class='flag-5'>Verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語(yǔ)言</b>參考手冊(cè)免費(fèi)下載

    使用Verilog/SystemVerilog硬件描述語(yǔ)言練習(xí)數(shù)字硬件設(shè)計(jì)

    HDLBits 是一組小型電路設(shè)計(jì)習(xí)題集,使用 Verilog/SystemVerilog 硬件描述語(yǔ)言 (HDL) 練習(xí)
    的頭像 發(fā)表于 08-31 09:06 ?2124次閱讀