日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

verilog基础--sign表达式

發布時間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 verilog基础--sign表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面我們來看看官方文檔,遇到別人寫的代碼不懂的,或者模棱兩可的語法,一定要親自去查閱官方的文檔,但是在查閱官方文檔之前,我們來看看基本的有符號和無符號在計算機中的表示方法,以及有符號二進制如何運算吧。

note:
反碼是什么 ?
      正數的反碼就是原碼,負數的反碼等于原碼除符號位以外所有的位取反

符號在計算機中的表示

有符號數通常以2的補碼形式來表示,計算機為方便減法計算,在表示負數的時候,引入了補碼機制來把整數的減法變成整數的加法統一進行運算。

補碼:符號位保持不變,其余位取反加1

  • 十進制變二進制

原碼–反碼–加一(補碼);

原碼:-8,-8的源碼是1【1000】,取反碼:1【0111】,補碼:1【1000】(十進制轉二進制)原碼:-4,-4的原碼是1100,取反碼:1011, 補碼:1100(十進制轉二進制)
  • 二進制變十進制:

減一 --反碼–原碼。

補碼:1000,-8 補碼:1100,說明此數是負數,減1,得1011,取反:0100,十進制4:因此為-4.

二進制 加法 運算

  • 帶符號二進制運算

在不超限溢出的前提下,如果計算結果為正數,那么補碼與原碼相同,得到的就是正確結果;如果計算結果為負數,還需要將補碼再轉換成原碼。
-4+2=1100+0010=1110 == = 》 1001(保持符號位不變取反)= = =》1010(加1)=-2
-6+7=1010+0111=10001 == = 》舍去溢出得0001


關于溢出,這個首先給定多少位數,心里就應該知道這取值范圍是多少,然后計算結果是否在規定范圍內,沒在這個范圍,那么必然就是產生溢出了。
當運算或其結果的位寬不同時,我們需要區分它究竟使用哪一種符號類型。因為不同的符號類型需要不同的擴展位。對于無符號數,前置一個0,即 所謂的零擴展位;對于有符號數來說,需要前置n個所謂的符號擴展位。比方說4位二進制表示的-5為1011;當其擴展成8位時,應該變為1111_1011,而不是0000_1011。
Verilog-1995中的有符號數按照如下操作。sum4 = a + {4{c[3]}, c};如果8bit的a無符號與4bit的有符號相加,我們需要手動控制將4bit的c的高位補其。
Verilog-2001中的有符號數引入了關鍵字signed和unsigned,就是為了解決1995中手動補充的問題。

verilog官方sign expression語法



上面的例子,我們就很好理解了,-4的二進制:1000_0100 取反:1111_1011 加1:1111_1100,經過unsigned后,取其在計算機中存儲的補碼形式為二進制
-4等價于-4’sd4,4bit有符號的負數,4在二進制位0100,取其負數為1100, 前面由于是8bit的regB位寬,我們前面都沒有用,補充0.

參考:
https://blog.csdn.net/qhw5279/article/details/79630912
http://www.cnblogs.com/Jamesjiang/p/8947252.html
https://blog.csdn.net/weiweiliulu/article/details/24316373
官方 IEEE 2005 verilog

總結

以上是生活随笔為你收集整理的verilog基础--sign表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。