在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何靈活使用三元運算符

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-28 17:07 ? 次閱讀

HDLBits: 在線學習 SystemVerilog(九)-Problem 36-42

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

縮略詞索引

SV:SystemVerilog

今天的幾道題主要是補充SV的一些補充語法練習。

Problem 36-Conditional

這道題主要是考察條件(三元)運算符的用法,具體詳見《SystemVerilog-條件(三元)運算符》!

題目說明

給定四個無符號數(shù),請找出最小值。無符號數(shù)可以與標準比較運算符(a < b)進行比較。使用條件運算符描述一個兩路的最小值電路,然后組合它來創(chuàng)建一個4路最小電路。可能需要一些線向量作為中間結(jié)果。

模塊端口聲明

moduletop_module(
input[7:0]a,b,c,d,
output[7:0]min);

題目解析

這個題目重點是靈活使用三元運算符,因為這個語法比較簡單,所以大家注意一下使用方式即可~

moduletop_module(
inputlogic[7:0]a,b,c,d,
outputlogic[7:0]min
);



assignmin=((a
f7585eac-3eea-11ed-9e49-dac502259ad0.png

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

f77d4bae-3eea-11ed-9e49-dac502259ad0.png

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

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

Problem 37-Reduction

這題是考察歸約運算符,本來想在SV系列文章里寫的,這次作為一個專題在下面一篇文章中。

題目說明

當通過不完善的通道傳輸數(shù)據(jù)時,奇偶校驗通常用作檢測錯誤的簡單方法。創(chuàng)建一個電路,計算 8 位字節(jié)的奇偶校驗位(將向該字節(jié)添加第9位)。 我們將使用偶校驗,其中奇偶校驗位只是所有8個數(shù)據(jù)位的XOR

模塊端口聲明

moduletop_module(
input[7:0]in,
outputparity);

題目解析

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

簡單解答

moduletop_module(
inputlogic[7:0]in,
outputlogicparity
);
assignparity=^in;
endmodule


f7b55fda-3eea-11ed-9e49-dac502259ad0.png

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

f7d2deb6-3eea-11ed-9e49-dac502259ad0.png

注意圖中的無波形。

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

Problem 38-Gates100

題目說明

構(gòu)建具有100個輸入的組合電路。

電路一共有3個輸出:

f7f03920-3eea-11ed-9e49-dac502259ad0.png

模塊端口聲明

moduletop_module(
input[99:0]in,
outputout_and,
outputout_or,
outputout_xor
);

題目解析

上一個問題已經(jīng)說過歸約運算符了,這道題肯定也是類似解答思路,應(yīng)該很簡單吧~~~

moduletop_module(
inputlogic[99:0]in,
outputlogicout_and,
outputlogicout_or,
outputlogicout_xor
);

assignout_and=∈
assignout_or=|in;
assignout_xor=^in;

endmodule
f8109c38-3eea-11ed-9e49-dac502259ad0.png

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

f82f029a-3eea-11ed-9e49-dac502259ad0.png

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

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

Problem 39-Vector100r

題目說明

給了一個長度是100的向量,請把它翻轉(zhuǎn)輸出一下。

提示:for循環(huán)(組合always塊或者generate塊)在這里很有用。 這道題中,因為不需要模塊實例化(必須使用generate塊),建議使用always塊。

模塊端口聲明

moduletop_module(
input[99:0]in,
output[99:0]out
);

題目解析

提示中已經(jīng)暗示了使用for循環(huán),所以我們就按照always...for...使用即可。

moduletop_module(
inputlogic[99:0]in,
outputlogic[99:0]out
);

varintegeri;
always_combbegin
for(i=0;i<=?99;?i?=?i?+?1)begin
????????????out[i]?=?in[99?-?i];
????????end
????end

endmodule



f84e0cb2-3eea-11ed-9e49-dac502259ad0.png

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

f87b85de-3eea-11ed-9e49-dac502259ad0.png

注意圖中無波形。

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

Problem 40-Popcount255

題目說明

老生常談的題目了,設(shè)計電路來計算輸入矢量中‘1’的個數(shù),題目要求建立一個255bit輸入的矢量來判斷輸入中‘1’的個數(shù)。

提示:重復工作量建議使用for~

模塊端口聲明

moduletop_module(
input[254:0]in,
output[7:0]out);

題目解析

這個題目的爭論點在怎么減少邏輯量,目前沒什么好思路,但是可以增加運行速度,那就是分類冶制。

moduletop_module(
input[254:0]in,
outputreg[7:0]out
);

always@(*)begin//Combinationalalwaysblock
out=0;
for(inti=0;i<255;i++)
???out?=?out?+?in[i];
?end
?
endmodule

f89c2a50-3eea-11ed-9e49-dac502259ad0.png

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

f8bdc8cc-3eea-11ed-9e49-dac502259ad0.png

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

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

Problem 41-Adder100i

題目說明

通過實例化 100 個全加器來創(chuàng)建一個 100 位二進制波紋進位加法器。加法器將兩個 100 位數(shù)字和一個進位相加,輸出為sum與cout,還要輸出紋波進位加法器中每個全加器的進位。cout[99] 是最后一個全加器的最終進位,也是通常看到的進位。

模塊端口聲明

moduletop_module(
input[99:0]a,b,
inputcin,
output[99:0]cout,
output[99:0]sum);

題目解析

這個題目簡單的用法就是generate...for,最近在整理這方面知識,在這篇文章發(fā)出來之前應(yīng)該已經(jīng)發(fā)布,詳見《【Verilog我思我用】-generate》。

moduletop_module(
inputlogic[99:0]a,b,
inputlogiccin,
outputlogic[99:0]cout,
outputlogic[99:0]sum);


generate
genvari;
for(i=0;i<=?99;?i?=?i?+?1)begin:adder
?????????if(i?==?0)begin
?????????????assign?{cout[0],?sum[0]}?=?a[0]?+?b[0]?+?cin;
????????????end
????????????else?begin
?????????????assign?{cout[i],?sum[i]}?=?a[i]?+?b[i]?+?cout[i-1];
????????????end?????????
????????end
????endgenerate

endmodule

f8ef299e-3eea-11ed-9e49-dac502259ad0.png

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

f9010290-3eea-11ed-9e49-dac502259ad0.png

注意圖中是無波形的。

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

Problem 42-Bcdadd100

題目說明

本題已經(jīng)提供了一個名為bcd_fadd的BCD一位全加器,他會添加兩個BCD數(shù)字和一個cin,并產(chǎn)生一個cout和sum。

modulebcd_fadd{
input[3:0]a,
input[3:0]b,
inputcin,
outputcout,
output[3:0]sum);

我們需要實例化100個bcd_fadd來實現(xiàn)100位的BCD進位加法器。該加法器應(yīng)包含兩個100bit的BCD碼和一個cin, 輸出產(chǎn)生sum 和 cout。

模塊端口聲明

moduletop_module(
input[399:0]a,b,
inputcin,
outputcout,
output[399:0]sum);

題目解析

這個題目也是在鞏固generate用法,建議自己完成并思考。

moduletop_module(
inputlogic[399:0]a,b,
inputlogiccin,
outputlogiccout,
outputlogic[399:0]sum);


wirelogic[99:0]cout_temp;

generate
genvari;
for(i=0;i<=?99;?i?=?i?+?1)begin:BCD_adder
????????????if(i?==?0)begin
????????????????bcd_fadd?u1_bcd_fadd(
????????????????????.a??(a[3:0]??),
????????????????????.b??(b[3:0]??),
????????????????????.cin?(cin??),
????????????????????.sum?(sum[3:0]?),
????????????????????.cout?(cout_temp[0]?)
????????????????);
????????????end
????????????else?begin
????????????????bcd_fadd?u2_bcd_fadd(
????????????????????.a??(a[4?*?i?+?3:?4?*?i]?),
????????????????????.b??(b[4?*?i?+?3:?4?*?i]?),
????????????????????.cin?(cout_temp[i?-?1]???????),
????????????????????.sum?(sum[4?*?i?+?3:?4?*?i]??),
????????????????????.cout?(cout_temp[i]???????????)
????????????????);
????????????end
????????end
????????assign?cout?=?cout_temp[99];
????endgenerate
????????????????????

endmodule

f9274874-3eea-11ed-9e49-dac502259ad0.png

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

f967405a-3eea-11ed-9e49-dac502259ad0.png

注意圖中的無波形。

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

總結(jié)

今天的幾道題就結(jié)束了,整體屬于加強練習的過程,適合獨立完成,加強理解。

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

    關(guān)注

    6678

    文章

    2466

    瀏覽量

    205482
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3403

    瀏覽量

    66494
  • 運算符
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    11116

原文標題:HDLBits: 在線學習 SystemVerilog(九)-Problem 36-42

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

收藏 人收藏

    評論

    相關(guān)推薦

    C語言運算符的使用方法

    詳細介紹了C語言表達式、算術(shù)運算符、賦值運算符、關(guān)系運算符、條件結(jié)構(gòu)、邏輯運算符、位運算符的語法和使用方法,并討論了
    發(fā)表于 11-02 11:30 ?1774次閱讀
    C語言<b class='flag-5'>運算符</b>的使用方法

    如何去使用運算符

    運算的定義是什么?運算符是由什么組成的?如何去使用運算符
    發(fā)表于 07-15 13:13

    條件運算符是什么_條件運算符有哪些

    運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符。關(guān)系運算實際上是邏輯比較運算,它是邏輯運算
    發(fā)表于 11-16 16:02 ?1.1w次閱讀
    條件<b class='flag-5'>運算符</b>是什么_條件<b class='flag-5'>運算符</b>有哪些

    單目運算符是什么_單目運算符有哪些

    單目運算符是指運算所需變量為一個的運算符,又叫一運算符,其中有邏輯非運算符:!、按位取反
    的頭像 發(fā)表于 02-24 15:42 ?6.1w次閱讀
    單目<b class='flag-5'>運算符</b>是什么_單目<b class='flag-5'>運算符</b>有哪些

    C運算符的優(yōu)先級和結(jié)合性詳細解決

    運算符是一種告訴編譯器執(zhí)行特定的數(shù)學或邏輯操作的符號。 C語言內(nèi)置了豐富的運算符,大體可分為10類:算術(shù)運算符、關(guān)系運算符、邏輯運算符、位
    的頭像 發(fā)表于 02-22 17:27 ?3314次閱讀

    淺析MySQL中的各類運算符

    MySQL支持多種運算符,我們在寫SQL腳本時經(jīng)常會需要用到各種各樣的運算符,這些運算符可以用來連接表達式,進而從數(shù)據(jù)庫中查詢我們需要的結(jié)果集等。這些類型主要包括算術(shù)運算符、比較
    的頭像 發(fā)表于 05-03 17:41 ?2106次閱讀
    淺析MySQL中的各類<b class='flag-5'>運算符</b>

    干貨:大實例講解種C++運算符重載

    本章節(jié)主要講解是運算符重載。運算符重載是賦予運算符能操作自定義類型的功能。C++運算符重載主要分為以下類:
    的頭像 發(fā)表于 09-30 16:59 ?3513次閱讀
    干貨:<b class='flag-5'>三</b>大實例講解<b class='flag-5'>三</b>種C++<b class='flag-5'>運算符</b>重載

    python運算符是什么

    python運算符 0. 什么是運算符? 本章節(jié)主要說明Python的運算符。舉個簡單的例子 4 +5 = 9 。 例子中,4和5被稱為操作數(shù),“+”號為運算符。 Python語言支持
    的頭像 發(fā)表于 02-21 16:44 ?2479次閱讀

    SystemVerilog-運算符/表達式規(guī)則

    RTL建模中廣泛使用的運算符是條件運算符,也稱為三元運算符,該運算符用于在兩個表達式之間進行選擇——表5-2列出了用于表示條件
    的頭像 發(fā)表于 08-03 09:03 ?3244次閱讀

    什么是運算符重載

    重載運算符是具有特殊名稱的函數(shù),是通過關(guān)鍵字** operator **后跟運算符的符號來定義的
    的頭像 發(fā)表于 01-20 15:30 ?2606次閱讀

    條件(三元運算符

    RTL建模中廣泛使用的運算符是條件運算符,也稱為三元運算符,該運算符用于在兩個表達式之間進行選擇——表5-2列出了用于表示條件
    的頭像 發(fā)表于 02-09 15:42 ?1435次閱讀
    條件(<b class='flag-5'>三元</b>)<b class='flag-5'>運算符</b>

    什么是移位運算符

    移位運算符將向量的位向右或向左移位指定的次數(shù)。SystemVerilog具有按位和算術(shù)移位運算符
    的頭像 發(fā)表于 02-09 15:49 ?1936次閱讀
    什么是移位<b class='flag-5'>運算符</b>

    Go語言運算符主要包括哪些呢?

    Go語言運算符主要包括:算數(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、賦值運算符和其他
    的頭像 發(fā)表于 05-26 15:54 ?937次閱讀
    Go語言<b class='flag-5'>運算符</b>主要包括哪些呢?

    Golang為何舍棄三元運算符

    golang中不存在?:運算符的原因是因為語言設(shè)計者已經(jīng)預(yù)見到三元運算符經(jīng)常被用來構(gòu)建一些極其復雜的表達式。雖然使用if進行替代會讓代碼顯得更長,但這毫無疑問可讀性更強。
    的頭像 發(fā)表于 04-03 15:13 ?769次閱讀

    c語言從右到左的運算符有哪些

    用在變量之后時,它們會先返回變量的原始值,然后再進行遞增或遞減。 三元條件運算符 ( ?: ):這個運算符的求值順序是從右到左。首先計算第個表達式,然后根據(jù)第一個表達式的結(jié)果選擇第二
    的頭像 發(fā)表于 08-20 11:39 ?1191次閱讀
    主站蜘蛛池模板: 国产午夜视频在线观看第四页 | 午夜香蕉网 | xxxx性xx另类 | 国产无套粉嫩白浆 | 中文字幕一精品亚洲无线一区 | 中文字幕11页 | 国产三级日产三级日本三级 | 中文字幕在线二区 | 永久黄网站色视频免费 | 成人亚洲网站www在线观看 | 成人精品第一区二区三区 | 四虎最新入口 | 亚洲不卡免费视频 | 直接观看黄网站免费视频 | 成人黄色在线 | 两性色午夜视频免费国产 | 日日操狠狠操 | 最新午夜宅男 | 五月婷婷欧美 | 夜夜夜爽bbbb性视频 | 手机看片久久 | 爱情社保片鲁丝片一区 | 人人草人人爽 | 波多久久夜色精品国产 | 午夜湿 | 欧美黄色三级视频 | 狠狠色伊人亚洲综合第8页 狠狠色依依成人婷婷九月 狠狠色影院 | h网站免费在线观看 | 午夜网站免费版在线观看 | 天天色色网| 午夜精品aaa国产福利 | 一级黄色毛毛片 | 亚洲成人一级片 | 天堂资源在线www中文 | 天天摸天天爽天天澡视频 | 免看一级a一片成人123 | 400部大量精品情侣网站 | 97色涩| 激情久久久久久久久久久 | 午夜精品久久久久久99热7777 | 4438全国最大成人免费高清 |