本節(jié)主要對有符號數(shù)的十進(jìn)制與二進(jìn)制表示以及一些數(shù)值變換進(jìn)行簡單的總結(jié)。
定義一個(gè)寬度為 DW 的二進(jìn)制補(bǔ)碼格式的數(shù)據(jù) dbin ,其表示的有符號十進(jìn)制數(shù)字為 ddec 。
reg [DW-1:0] dbin ;
- 十進(jìn)制有符號數(shù)轉(zhuǎn)二進(jìn)制補(bǔ)碼
正數(shù)的補(bǔ)碼為原碼。
假如十進(jìn)制數(shù) ddec 為負(fù)數(shù),則計(jì)算其對應(yīng)的二進(jìn)制補(bǔ)碼的方法主要有 2 種:
◆將ddec 最高位符號位改寫為 1,剩余數(shù)值部分取反加一
例如,4bit 數(shù)字 -6 的數(shù)值部分為 4'b0110,取反加一后為 4'b0010,高位改寫后為 4 'b1010。
dbin = {1'b1, ~3'b110 + 1'b1} ; //4'b1010
◆將負(fù)數(shù) ddec 直接與其代表的最大數(shù)值范圍數(shù)相加(有人稱之為模數(shù))
例如,4bit 數(shù)字 -6 與 16(2 的 4 次冪)的和為 10, 即對應(yīng) 4'b1010。
dbin = ddec + (1< 4) ; //4'b1010
- 二級制補(bǔ)碼轉(zhuǎn)十進(jìn)制有符號數(shù)
當(dāng) dbin 最高位為 0 時(shí),其數(shù)值大小即為其表示的十進(jìn)制正數(shù)。
當(dāng) dbin 最高位為 1 時(shí),計(jì)算其表示的十進(jìn)制有符號數(shù)方法主要有 2 種:
◆將 dbin 取反加一,并增加符號位
例如,4bit 數(shù)字 -6 的補(bǔ)碼為 4'b1010,取反加一后為 4'b0110,增加符號位后為 -6。
ddec = -(~4'b1010 + 1'b1) ; //-6
◆將 dbin 代表的無符號數(shù)值與其代表的最大數(shù)值范圍數(shù)直接相減
例如,4bit 數(shù)字 -6 的補(bǔ)碼為 4'b1010,即無符號數(shù)值為 10,10 減 16 便可得到 -6 。
ddec = dbin - (1< 4) ; //-6
- 絕對值
求 dbin 的絕對值邏輯如下:
dbin_abs = (dbin[DW-1]? ~dbin : dbin) + 1'b1 ;
例如,4bit 數(shù)字 -6 的補(bǔ)碼為 4'b1010,取反加 1 后的值為 4'b0110(6),即為 -6 的絕對值。
但如果 dbin 為正數(shù),加 1 后的值比其真正的絕對值要大 1,此步操作只是為了讓正數(shù)部分的絕對值數(shù)量與負(fù)數(shù)部分一致。因?yàn)橐欢ㄎ粚捪拢捎?0 值的存在,有符號數(shù)表示的負(fù)數(shù)數(shù)量會(huì)比正數(shù)多 1 個(gè)。
- 有符號數(shù)轉(zhuǎn)無符號數(shù)
將有符號數(shù)擴(kuò)展成為無符號數(shù)的邏輯如下:
dbin_unsigned = {!dbin[DW-1], dbin[DW-2:0]) ;
例如 4'b1010 (-6) -> 4'b0010 (2),4'b0010 (2) -> 4'b1010 (10) 。
其實(shí)轉(zhuǎn)換原則是將數(shù)據(jù)代表的數(shù)值范圍移動(dòng)到 0 以上,有符號數(shù)轉(zhuǎn)換成無符號數(shù)之后,數(shù)據(jù)相對間的差并沒有改變。
- 擴(kuò)展符號位
計(jì)算時(shí)有時(shí)會(huì)根據(jù)需要對有符號數(shù)位寬進(jìn)行擴(kuò)展。假設(shè)位寬增量為 W,擴(kuò)展邏輯如下:
dbin_extend = {{(W){dbin[DW-1]}}, dbin} ;
擴(kuò)展原則就是將信號代表符號位的最高位,填充至擴(kuò)展的高位數(shù)據(jù)位中。
例如 4'b1010 (-6) 擴(kuò)展到 8bit 為 8'b11111010,計(jì)算其對應(yīng)的負(fù)數(shù)仍然是 -6。
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
796瀏覽量
41757 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110392
發(fā)布評論請先 登錄
相關(guān)推薦
Verilog HDL練習(xí)題和Verilog基礎(chǔ)知識適合verilog新人
《Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)教程》(第四版)學(xué)習(xí)筆記 part1 Verilog數(shù)字設(shè)計(jì)基礎(chǔ)——第一章知識點(diǎn)總結(jié)
路由器常用基礎(chǔ)知識總結(jié)
Verilog_HDL基礎(chǔ)知識非常好的學(xué)習(xí)教程 (1)
DSP教程之DSP數(shù)值運(yùn)算基礎(chǔ)總結(jié)的詳細(xì)資料說明
![DSP教程之DSP<b class='flag-5'>數(shù)值</b>運(yùn)算基礎(chǔ)<b class='flag-5'>總結(jié)</b>的詳細(xì)資料說明](https://file.elecfans.com/web1/M00/88/C5/pIYBAFyHhCOAETOxAAMkZ7piSrY931.png)
Verilog編程語言界面入門知識簡介
Verilog教程之Verilog HDL數(shù)字集成電路設(shè)計(jì)方法和基礎(chǔ)知識課件
![<b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL數(shù)字集成電路設(shè)計(jì)方法和基礎(chǔ)<b class='flag-5'>知識</b>課件](https://file.elecfans.com/web1/M00/D3/22/o4YBAF_QRi-ATeknAAA1RvBq1Y4057.png)
Verilog的基礎(chǔ)知識
Verilog到VHDL轉(zhuǎn)換的經(jīng)驗(yàn)與技巧總結(jié)
![<b class='flag-5'>Verilog</b>到VHDL<b class='flag-5'>轉(zhuǎn)換</b>的經(jīng)驗(yàn)與技巧<b class='flag-5'>總結(jié)</b>](https://file1.elecfans.com/web2/M00/DE/3D/wKgZomYuG7mAWylvAAAdzOmc3n4897.jpg)
Verilog HDL的基礎(chǔ)知識
![<b class='flag-5'>Verilog</b> HDL的基礎(chǔ)<b class='flag-5'>知識</b>](https://file1.elecfans.com/web1/M00/F3/9E/wKgZoWcZ8KuAR2-wAAEJRNCEn98019.png)
評論