HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數(shù)字硬件設計~
網(wǎng)址如下:
https://hdlbits.01xz.net/
關于HDLBits的Verilog實現(xiàn)可以查看下面專欄:
https://www.zhihu.com/column/c_1131528588117385216
縮略詞索引:
- SV:SystemVerilog
Problem 7-Xnorgate
題目說明
創(chuàng)建一個 XNOR 門的模塊。

這個題目的核心就是上面的圖片,模塊和端口已經(jīng)被定義好了,黑色的框圖以及箭頭代表模塊和端口。我們需要做的工作是完成圖中綠色的部分,即完成一個XNOR 門。
模塊端口聲明
moduletop_module(
inputa,
inputb,
outputout);
題目解析
這個題目重點還是看懂題目的圖片,還是復習一下:

題目中的綠色部分就是上圖的同或門,主要由
這里也可以利用數(shù)電邏輯來寫代碼,同或門的邏輯就是同或門 (XNor Gate) 是異或門 (Nor Gate) 的取反輸出。異或門的輸入輸出可以概括為:(輸入)相同(輸出)為 0 ,不同為 1
moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);
assignout=~(a^b);
endmodule

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅(后面會展示)。
這一題就結束了。
Problem 3-Wire4
題目說明
創(chuàng)建一個具有 3 個輸入和 4 個輸出的模塊,其行為類似于下面演示的這些連線:
a->w
b->x
b->y
c->z

這個題目的核心就是上面的圖片,模塊和端口已經(jīng)被定義好了,黑色的框圖以及箭頭代表模塊和端口。我們需要做的工作是完成圖中綠色的部分,即完成這條連線。
模塊端口聲明
moduletop_module(
inputa,b,c,
outputw,x,y,z);
題目解析
主要使用assign語句實現(xiàn)上面的連線,難度較低。
moduletop_module(
inputlogica,b,c,
outputlogicw,x,y,z
);
assignw=a;
assignx=b;
assigny=b;
assignz=c;
endmodule

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅(后面會展示)。
這一題就結束了。
Problem 4-Notgate
題目說明
創(chuàng)建一個實現(xiàn)非門(Notgate)的模塊。

從這個題目開始實現(xiàn)幾個經(jīng)典組合電路,非門的的核心就是上面的圖片,模塊和端口已經(jīng)被定義好了,黑色的框圖以及箭頭代表模塊和端口。我們需要做的工作是完成圖中綠色的部分,實現(xiàn)一個非門。
模塊端口聲明
moduletop_module(inputin,outputout);
題目解析
主要使用assign語句實現(xiàn)非門,也很簡單就一個語句“assign out = ~in;”。這里注意一個邏輯取反和逐位取反的區(qū)別。
moduletop_module(inputlogicin,
outputlogicout
);
assignout=~in;
endmodule
上面使用“assign out = ~in ;”和“assign out = !in ;”無區(qū)別,因為只有一位變量。

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅(后面會展示)。
這一題就結束了。
Problem 5-Andgate
題目說明
創(chuàng)建一個與門(Andgate)模塊。。

與門的的核心就是上面的圖片,模塊和端口已經(jīng)被定義好了,黑色的框圖以及箭頭代表模塊和端口。我們需要做的工作是完成圖中綠色的部分,實現(xiàn)一個與門。
模塊端口聲明
moduletop_module(
inputa,
inputb,
outputout);
題目解析
主要使用assign語句實現(xiàn)與門,也很簡單就一個語句“assign out = a & b;”。值得注意的是 & 和 && 的區(qū)別。
moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);
assignout=a&b;
endmodule

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅(后面會展示)。
這一題就結束了。
Problem 6-Norgate
題目說明
創(chuàng)建一個實現(xiàn) NOR 門的模塊?;蚍情T(Norgate)是一個輸出反相的或門。用 Verilog 編寫的 NOR 門需要兩個運算符。

或非門的的核心就是上面的圖片,模塊和端口已經(jīng)被定義好了,黑色的框圖以及箭頭代表模塊和端口。我們需要做的工作是完成圖中綠色的部分,實現(xiàn)一個或非門。從圖中可以看出就是一個或門輸出取反,核心就是先實現(xiàn)一個或門,之后再輸出端取反即可,可以使用兩個assign語句或者一個assign語句實現(xiàn)。
模塊端口聲明
moduletop_module(
inputa,
inputb,
outputout);
題目解析
這一題的關鍵是看懂題目給的符號,給大家一個常用的門電路示意圖:

HDLbits網(wǎng)站上的使用的是國外流行圖形符號一欄,從題目給定的符號,對比上一圖就是典型的或非門,由或門和非門組合實現(xiàn)。
moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);
assignout=~(a|b);
endmodule
代碼中(a|b)實現(xiàn)一個或門,然后取反即可~(a | b)。

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。
錯誤示范
一開始代碼寫錯了,寫成:
moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);
assignout=~a|b;
endmodule
仿真結果如下:

造成上面結果的主要原因還是因為Verilog/SV中邏輯操作,運算符等有優(yōu)先級(和數(shù)學里的加減乘除乘除一樣),具體優(yōu)先級如下:

所以上面的代碼會優(yōu)先做~a然后在和b或,加上括號解決。
總結
今天的5道題就結束了,整體難度不大,后面的題目難度會越來越大~
最后我這邊做題的代碼也是個人理解使用,有錯誤歡迎大家批評指正,祝大家學習愉快~
代碼鏈接:
https://github.com/suisuisi/SystemVerilog/tree/main/SystemVerilogHDLBit
-
模塊
+關注
關注
7文章
2787瀏覽量
50200 -
電路設計
+關注
關注
6705文章
2536瀏覽量
214422
原文標題:HDLBits: 在線學習 SystemVerilog(二)-Problem 7-9
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄


KMPHM在線監(jiān)測系統(tǒng) 讓設備故障無處遁形#在線監(jiān)測#振動在線監(jiān)測
億緯鋰能亮相2025德國慕尼黑智慧能源展覽會
華為智能光儲產(chǎn)品亮相Intersolar Europe 2025

使用wavevison5軟件時,F(xiàn)PGA中的程序是在線加載的,CY7C68013A中的固件也是在線加載的嗎?
《具身智能機器人系統(tǒng)》第7-9章閱讀心得之具身智能機器人與大模型

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

快來KM振動在線監(jiān)測系統(tǒng)參與石化設備運維大會的風采吧!#振動在線監(jiān)測#振動監(jiān)測

KM振動在線監(jiān)測系統(tǒng)助力設備煥新升級#振動在線監(jiān)測#振動監(jiān)測#在線監(jiān)測
如何學習ARM?
賽盛EMC在線學習平臺:揭秘學習寶典&工具秘籍!


評論