HDLBits (70) — 帶符號(hào)的加法溢出
本題鏈接:
https://hdlbits.01xz.net/wiki/Exams/ece241_2014_q1c
假設(shè)有兩個(gè)8位的補(bǔ)碼a[7:0]和b[7:0]。將這些數(shù)字相加生成s[7:0]。此外還要計(jì)算是否發(fā)生(符號(hào))溢出。

題目
兩個(gè)正數(shù)相加或兩個(gè)負(fù)數(shù)相加會(huì)產(chǎn)生一個(gè)帶正負(fù)號(hào)的溢出結(jié)果。有幾種檢測(cè)溢出的方法:其一可以通過比較輸入和輸出數(shù)字的符號(hào)來計(jì)算溢出,也可以從位n和n-1的輸出中推導(dǎo)是否溢出。

答案

輸出波形


按位操作符包括:取反(~),與(&),或(|),異或(^),同或(~^)。
按位操作符對(duì) 2 個(gè)操作數(shù)的每 1bit 數(shù)據(jù)進(jìn)行按位操作。
如果 2 個(gè)操作數(shù)位寬不相等,則用 0 向左擴(kuò)展補(bǔ)充較短的操作數(shù)。
取反操作符只有一個(gè)操作數(shù),它對(duì)操作數(shù)的每 1bit 數(shù)據(jù)進(jìn)行取反操作。
下圖給出了按位操作符的邏輯規(guī)則。


條件(if)語句用于控制執(zhí)行語句要根據(jù)條件判斷來確定是否執(zhí)行。
條件語句用關(guān)鍵字 if 和 else 來聲明,條件表達(dá)式必須在圓括號(hào)中。
條件語句使用結(jié)構(gòu)說明如下:
if 語句執(zhí)行時(shí),如果 condition1 為真,則執(zhí)行 true_statement1 ;如果 condition1 為假,condition2 為真,則執(zhí)行 true_statement2;依次類推。
else if 與 else 結(jié)構(gòu)可以省略,即可以只有一個(gè) if 條件判斷和一組執(zhí)行語句 ture_statement1 就可以構(gòu)成一個(gè)執(zhí)行過程。
else if 可以疊加多個(gè),不僅限于 1 或 2 個(gè)。
ture_statement1 等執(zhí)行語句可以是一條語句,也可以是多條。如果是多條執(zhí)行語句,則需要用 begin 與 end 關(guān)鍵字進(jìn)行說明。
參考內(nèi)容:
2.4 Verilog 表達(dá)式 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-expression.html
4.5 Verilog 條件語句 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-condition-statement.html