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

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

3天內不再提示

用HDL代碼描述加法運算要用操作符“+” 看似很簡單實則不然

FPGA技術驛站 ? 來源:Lauren的FPGA ? 作者:Lauren的FPGA ? 2020-09-24 14:31 ? 次閱讀

采用HDL代碼描述加法運算只需要用操作符“+”即可,這看似很簡單,這里我們以兩個4-bit數(shù)相加為例,對輸入/輸出數(shù)據(jù)均寄存,從而形成如下圖所示電路。

此電路對應的HDL代碼如下圖所示。這里采用了SystemVerilog語言。有兩點值得注意:一是兩個N位數(shù)相加,無論是有符號數(shù)還是無符號數(shù),其結果都有可能是N+1位,故輸出比輸入位寬多1位,這樣才能保證不會發(fā)生溢出(Overflow)。二是默認情況下,代碼中的logic表示的都是無符號數(shù),但是對于下面這段代碼,無符號數(shù)和有符號數(shù)均適用,這是因為有符號數(shù)是以二進制補碼表示的。

為了進一步說明,我們看如下例子。數(shù)據(jù)a二進制形式位1001,既可以看作無符號數(shù)9(十進制),也可以看作有符號數(shù)-7(十進制);數(shù)據(jù)b二進制形式為1010,既可以看作無符號數(shù)10(十進制),也可以看作有符號數(shù)-6(十進制)。最終結果的二進制形式為10011,既可以看作無符號數(shù)19(十進制),也可以看作有符號數(shù)-13(十進制)。

這里兩個4-bit數(shù)相加和設置為5-bit,如果和設置為6-bit,有符號數(shù)和無符號數(shù)的結果是否一致呢?對于無符號數(shù),sum[5]補0,如圖中紅色方框所示。

對于有符號數(shù),sum[5]則是sum[4]的復制版本,實質上是符號位擴展。

本質上,在賦值時,如果把一個N位數(shù)據(jù)a賦值給一個位寬M的數(shù)據(jù)b(這里M>N),且兩個數(shù)據(jù)均為同一類型(都是有符號或無符號),此時是將N位數(shù)據(jù)做符號位擴展為M位再賦值給b。因此,對于兩個N位數(shù)據(jù)相加,如果輸出位寬選擇大于N+1,那么上述代碼只適合于無符號數(shù),對于有符號數(shù)需要在logic后加關鍵字signed,如下圖所示。

如果兩個位寬不等的數(shù)相加,同樣需要指明是有符號數(shù)還是無符號數(shù)。例如,一個4-bit數(shù)和一個3-bit數(shù)相加,如下圖所示。如果a二進制為1001,對應無符號數(shù)9(十進制),b二進制形式為101,對應無符號數(shù)5(十進制),兩個無符號數(shù)相加,先將b高位補0,最終和為01110;如果將a和b看作有符號數(shù),則要將b符號位擴展為1101,最終和為10110。符號位擴展是工具完成的,無需人工干預。

總體而言,在描述加法運算時,如果兩個數(shù)據(jù)均為N位,那么和要設置為N+1位,此時無符號數(shù)的描述方式也適合于有符號數(shù)。如果兩個數(shù)一個是N位,一個是M位,且M>N,那么和要設置為M+1位,此時要明確指出是有符號數(shù)還是無符號數(shù)。

原文標題:加法運算很簡單?

文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關注!文章轉載請注明出處。

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

    關注

    10305

    文章

    10715

    瀏覽量

    525946
  • HDL
    HDL
    +關注

    關注

    8

    文章

    324

    瀏覽量

    47283
  • 代碼
    +關注

    關注

    30

    文章

    4695

    瀏覽量

    68081

原文標題:加法運算很簡單?

文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    技術干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運算符與優(yōu)先級

    在C語言的學習過程中,運算符的使用是不可忽視的重要環(huán)節(jié)。本文將繼續(xù)深入探討C語言中的運算符,重點介紹位運算符、賦值運算符及其優(yōu)先級。掌握這些運算符
    的頭像 發(fā)表于 10-13 08:09 ?125次閱讀
    技術干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析<b class='flag-5'>運算符</b>與優(yōu)先級

    技術干貨驛站 ▏深入理解C語言:編程高手必備,全方位解析運算符的核心技能!

    在C語言的編程領域中,運算符是實現(xiàn)數(shù)據(jù)處理與邏輯操作的關鍵工具。無論是在處理簡單的數(shù)值計算,還是在構建復雜的邏輯結構時,運算符的使用貫穿始終。作為編程語言的基礎組成部分之一,
    的頭像 發(fā)表于 09-18 15:56 ?255次閱讀
    技術干貨驛站 ▏深入理解C語言:編程高手必備,全方位解析<b class='flag-5'>運算符</b>的核心技能!

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

    用在變量之后時,它們會先返回變量的原始值,然后再進行遞增或遞減。 三元條件運算符 ( ?: ):這個運算符的求值順序是從右到左。首先計算第三個表達式,然后根據(jù)第一個表達式的結果選擇第二個或第三個表達式。 賦值運算符 ( = ):
    的頭像 發(fā)表于 08-20 11:39 ?485次閱讀

    FPGA學習筆記---基本語法

    3、信號類型:wire, reg, tri等 4、參數(shù)定義:parameter 5、運算操作符:各種邏輯操作符、移位操作符、算數(shù)操作符
    發(fā)表于 06-23 14:58

    鴻蒙TypeScript入門學習第5天:【TypeScript 運算符

    運算符用于執(zhí)行程序代碼運算,會針對一個以上操作數(shù)項目來進行運算
    的頭像 發(fā)表于 04-01 16:18 ?379次閱讀
    鴻蒙TypeScript入門學習第5天:【TypeScript <b class='flag-5'>運算符</b>】

    加法運算電路和減法運算電路的區(qū)別

    加法運算的電路如下圖所示,輸出電壓為若干個輸入電壓的比例和
    的頭像 發(fā)表于 02-19 09:52 ?6224次閱讀
    <b class='flag-5'>加法</b><b class='flag-5'>運算</b>電路和減法<b class='flag-5'>運算</b>電路的區(qū)別

    “+”操作符的使用技巧

    這篇寫個平時易被忽略的小知識點,一元 + 操作符的使用技巧。
    的頭像 發(fā)表于 12-28 13:27 ?463次閱讀

    python中運算符的優(yōu)先級大小

    Python中運算符的優(yōu)先級決定了表達式中各個運算符的計算順序。了解運算符的優(yōu)先級對于正確理解和編寫復雜的表達式非常重要。本文將詳細介紹Python中運算符的優(yōu)先級,并給出一些示例來幫
    的頭像 發(fā)表于 11-29 16:21 ?2559次閱讀

    python關系運算符有哪些

    Python中的關系運算符主要包括以下幾種: 等于(==):用于判斷兩個操作數(shù)是否相等。如果相等,則返回True;否則返回False。 不等于(!=):用于判斷兩個操作數(shù)是否不相等。如果不相等,則
    的頭像 發(fā)表于 11-22 14:36 ?2229次閱讀

    python運算符優(yōu)先級順序口訣

    Python是一種非常流行的編程語言,具有廣泛的應用領域。在Python中,運算符是進行各種數(shù)學和邏輯運算的關鍵部分。了解運算符的優(yōu)先級順序對于正確理解和書寫Python代碼至關重要。
    的頭像 發(fā)表于 11-22 14:34 ?1920次閱讀

    Verilog基礎:介紹幾個常用的按位操作符

    操作符是對二進制位進行操作運算符。以下是一些常用的位操作符
    的頭像 發(fā)表于 11-09 10:59 ?1499次閱讀

    Verilog基礎:幾個常用的按位操作符

    操作符是對二進制位進行操作運算符。
    的頭像 發(fā)表于 11-09 10:57 ?1229次閱讀

    請問C語言文件中的預處理操作符#和##各有什么作用?

    C語言文件中的預處理操作符#和##各有什么作用?
    發(fā)表于 11-06 08:09

    C語言運算符的使用方法

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

    Python的優(yōu)雅之處:Descriptor(描述符

    學習 Python 這么久了,說起 Python 的優(yōu)雅之處,能讓我脫口而出的, Descriptor(描述符)特性可以排得上號。 描述符 是Python 語言獨有的特性,它不僅在應用層使用,在語言
    的頭像 發(fā)表于 11-02 10:52 ?930次閱讀
    Python的優(yōu)雅之處:Descriptor(<b class='flag-5'>描述符</b>)