色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

使用Verilog硬件描述語言練習加法器設計

OpenFPGA ? 來源:OpenFPGA ? 作者:碎碎思 ? 2022-10-26 08:58 ? 次閱讀

從今天開始新的一章-Circuits,包括基本邏輯電路、時序電路、組合電路等。

今天更新整個算術電路-加法器一小節題目,包括半加器,全加器等各種加法器。

半加器和全加器的區別

半加器

半加器是由一個異或門和一個與門連接而成的組合邏輯電路。半加器電路有兩個輸入:A 和 B,它們將兩個輸入數字相加并產生一個進位和一個和。

poYBAGNYhoiAAEdfAABe64Ig858591.jpg


異或門的輸出是兩個數的和,而與門的輸出是進位。進位加法不會轉發,因為沒有邏輯門來處理它。因此,這被稱為半加器電路。

邏輯表達式:

Sum=AXORB
Carry=AANDB

真值表:

pYYBAGNYhpuASa5cAACZFReVYzU488.jpg

全加器

全加器是由兩個異或門、兩個與門和一個或門組成的電路。全加器是將三個輸入相加并產生兩個輸出的加法器,前兩個輸入是 A 和 B,第三個輸入是進位C-IN 的輸入。輸出進位指定為 C-OUT,正常輸出指定為 S,即 SUM。

poYBAGNYhq-AUqvRAACA6KkBHdo524.jpg

異或門得到的方程是二進制數字的和。而AND門得到的輸出是加法得到的進位。

真值表:

poYBAGNYhr6AKE_SAADK4RzPR3E259.jpg

邏輯表達式:

SUM=(AXORB)XORCin=(A⊕B)⊕Cin
CARRY-OUT=AANDBORCin(AXORB)=A.B+Cin(A⊕B)

半加器和全加器的區別:

姓名 參數 半加器 全加器
1 描述 半加法器是一個組合邏輯電路,將兩個 1 位數字相加。半加器產生兩個輸入的和。 全加器是一種組合邏輯電路,它對三個一位二進制數執行加法運算。全加器產生三個輸入和進位值的總和。
2 上一次進位 不使用前一個進位。 使用前一個進位。
3 輸入 在半加器中,有兩個輸入位(A,B)。 在全加器中,有三個輸入位(A、B、C-in)。
4 輸出 輸出是兩位和 和Carry 。 輸出是 2 位的和和 3 位輸入的Carry。
5 用作 半加器電路不能以與全加器電路相同的方式使用。 可以使用全加器電路代替半加器電路。
6 特征 它簡單易行 全加器的設計并不像半加器那么簡單。
7 邏輯表達式 半加器的邏輯表達式為: S=a⊕b ; C=a*b。 全加器的邏輯表達式為:S=a⊕b⊕Cin;Cout=(ab)+(Cin(a⊕b))。
8 邏輯門 由一個異或門和一個與門組成。 由兩個異或門、兩個 AND 門和一個 OR 門組成。
9 應用 用于計算器,計算機,數字測量設備等。 用于多位加法,數字處理器等。

下面開始我們的題目,對于加法器有個更深刻的認識~

Problem 65-Hadd

題目說明

創建一個半加法器。半加器將兩位相加(沒有進位)并產生和和進位(sum and carry-out)。

模塊端口聲明

moduletop_module(
inputa,b,
outputcout,sum);

題目解析

根據半加器的邏輯表達式處理即可。

moduletop_module(
inputlogica,b,
outputlogiccout,sum
);
assigncout=a&b;
assignsum=a^b;
endmodule

pYYBAGNYhtOAS1UGAACM_82lcWs549.jpg

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

pYYBAGNYhuKAReJSAAB9M3Y3C70956.jpg

注意圖中無參考波形。

這一題就結束了。

Problem 66-Fadd

題目說明

創建一個全加器。全加器將三位相加(包括進位)并產生和和進位。

模塊端口聲明

moduletop_module(
inputa,b,cin,
outputcout,sum);

題目解析

根據全加器的邏輯表達式處理即可。

簡單解答

moduletop_module(
inputlogica,b,cin,
outputlogiccout,sum);

assignsum=a^b^cin;
assigncout=a&b|cin&(a^b);
endmodule

pYYBAGNYhv-AEByDAACRJ8ms-Iw358.jpg

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

poYBAGNYhweANqhTAAFOpwYKImA254.jpg

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

這一題就結束了。

Problem 67-Adder3

題目說明

現在已經知道如何構建一個全加器,例化 3 個實例來創建一個 3 位二進制波紋進位加法器(ripple-carry adder)。加法器將兩個 3 位數字和一個進位相加產生一個 3 位和和進位。為了鼓勵例化全加器,還要輸出紋波進位加法器中每個全加器的進位。cout[2] 是最后一個全加器的最終進位,也是通常看到的進位。

模塊端口聲明

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

題目解析

例化正常的全加器,然后處理好進位關系即可,這種波紋進位加法器的特點需要理解,最后注意我們要把上一題寫的全加器附在后面。

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

full_adderf_adder_u1(.a(a[0]),
.b(b[0]),
.cin(cin),
.cout(cout[0]),
.sum(sum[0])
);

full_adderf_adder_u2(.a(a[1]),
.b(b[1]),
.cin(cout[0]),
.cout(cout[1]),
.sum(sum[1])
);

full_adderf_adder_u3(.a(a[2]),
.b(b[2]),
.cin(cout[1]),
.cout(cout[2]),
.sum(sum[2])
);


endmodule
modulefull_adder(inputlogica,
inputlogicb,
inputlogiccin,
outputlogiccout,
outputlogicsum
);
assignsum=a^b^cin;
assigncout=a&b|cin&(a^b);
endmodule

poYBAGNYhymAO9BtAAEEoBxRh9o316.jpg

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

poYBAGNYhzGADo9rAAExg6fGaQo788.jpg

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

這一題就結束了。

Problem 68-Exams/m2014 q4j

題目說明

實現下面電路:

poYBAGNYh0eAfofwAACDS5ogSXs013.jpg

FA代表全加器。

模塊端口聲明

moduletop_module(
input[3:0]x,
input[3:0]y,
output[4:0]sum);

題目解析

這一題和上一題類似,看懂圖片即可,將X[0]+Y[0]結果作為SUM[0],進位輸入到下一級,以此類推。

moduletop_module(
inputlogic[3:0]x,
inputlogic[3:0]y,
outputlogic[4:0]sum
);

wirelogic[3:0]cout;
full_adderf_adder_u1(.a(x[0]),
.b(y[0]),
.cin(1'd0),
.cout(cout[0]),
.sum(sum[0])
);

full_adderf_adder_u2(.a(x[1]),
.b(y[1]),
.cin(cout[0]),
.cout(cout[1]),
.sum(sum[1])
);

full_adderf_adder_u3(.a(x[2]),
.b(y[2]),
.cin(cout[1]),
.cout(cout[2]),
.sum(sum[2])
);

full_adderf_adder_u4(.a(x[3]),
.b(y[3]),
.cin(cout[2]),
.cout(cout[3]),
.sum(sum[3])
);

assignsum[4]=cout[3];
endmodule

modulefull_adder(inputa,inputb,inputcin,outputcout,outputsum);
assignsum=a^b^cin;
assigncout=a&b|cin&(a^b);
endmodule

poYBAGNYh2OAfmbXAAENMStxyQ4727.jpg

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

poYBAGNYh2uAIngVAACGcQxQnGk340.jpg

注意圖中無波形。

這一題就結束了。

Problem 69-Exams/ece241 2014 q1c

題目說明

假設有兩個 2 進制 8bit 有符號數-a[7:0] 和 b[7:0]。這些數字相加產生 s[7:0]。還要計算是否發生了(有符號的)溢出。

模塊端口聲明

moduletop_module(
input[7:0]a,
input[7:0]b,
output[7:0]s,
outputoverflow
);

題目解析

當兩個正數相加產生負結果或兩個負數相加產生正結果時,會發生有符號溢出。有幾種檢測溢出的方法:可以通過比較輸入和輸出數的符號來計算,或者從位 n 和 n-1 的進位推導出。簡單說就是一是正正相加,產生正溢出;另一種情況是負負相減,產生負溢出。所以在代碼中需要分別考慮這兩種情況,將這兩種情況取或判斷溢出。

moduletop_module(
inputlogic[7:0]a,
inputlogic[7:0]b,
outputlogic[7:0]s,
outputlogicoverflow
);

assigns=a+b;
assignoverflow=a[7]&b[7]&~s[7]|~a[7]&~b[7]&s[7];

endmodule

poYBAGNYh4aAQr_7AACkjRKVwbU954.jpg

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

poYBAGNYh42APoH4AAFqBamcqaE437.jpg

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

這一題就結束了。

Problem 70-Adder100

題目說明

題目要求我們創建一個100bit的二進制的加法器,該電路共包含兩個100bit的輸入和一個cin, 輸出產生sum和cout。

模塊端口聲明

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

題目解析

沒什么難度,就是位數多一點,其他沒區別。

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

assign{cout,sum}=a+b+cin;
endmodule

poYBAGNYh5-AeLIjAACZ9Zs_s8A170.jpg

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

poYBAGNYh7CARngWAACLNGWH0Sk932.jpg

注意圖中無波形。

這一題就結束了。

Problem 71-Bcdadd4

題目說明

題目給我們提供了一個BCD加法器名字為bcd_fadd, 輸入為兩個4bitBCD碼,一個cin,產生輸出為sum和cout。

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

且題目也說明需要我們例化4次bcd_fadd來得到一個16-bit的BCD加法器(共16bit), 同樣產生sum和cout。

模塊端口聲明

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

題目解析

這個題目難度不大,主要考察例化語法,但是我們需要看下BCD加法器結構。

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

wirelogic[2:0]cout_temp;

bcd_faddu1_bcd_fadd(
.a(a[3:0]),
.b(b[3:0]),
.cin(cin),
.cout(cout_temp[0]),
.sum(sum[3:0])
);
bcd_faddu2_bcd_fadd(
.a(a[7:4]),
.b(b[7:4]),
.cin(cout_temp[0]),
.cout(cout_temp[1]),
.sum(sum[7:4])
);
bcd_faddu3_bcd_fadd(
.a(a[11:8]),
.b(b[11:8]),
.cin(cout_temp[1]),
.cout(cout_temp[2]),
.sum(sum[11:8])
);
bcd_faddu4_bcd_fadd(
.a(a[15:12]),
.b(b[15:12]),
.cin(cout_temp[2]),
.cout(cout),
.sum(sum[15:12])
);


endmodule

poYBAGNYh8eAaDMaAAEJ-xuQ_gU870.jpg

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

poYBAGNYh9qAEe22AAF_t3wutT8682.jpg

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

這一題就結束了。

總結

今天的幾道題就結束了,整體比較簡單,沒有復雜的代碼,沒有復雜的設計思路,主要在于加法器的設計。

最后我這邊做題的代碼也是個人理解使用,有錯誤歡迎大家批評指正,祝大家學習愉快~






審核編輯:劉清

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

    關注

    28

    文章

    1351

    瀏覽量

    110143
  • HDL
    HDL
    +關注

    關注

    8

    文章

    327

    瀏覽量

    47408
  • 加法器
    +關注

    關注

    6

    文章

    183

    瀏覽量

    30155

原文標題:HDLBits: 在線學習 SystemVerilog(十二)-Problem 65-71(加法器)

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

收藏 人收藏

    評論

    相關推薦

    加法器

    請問下大家,,進位選擇加法器和進位跳躍加法器的區別是啥啊?我用Verilog實現16位他們的加法器有什么樣的不同啊?還請知道的大神告訴我一下。。
    發表于 10-20 20:23

    什么是加法器加法器的原理是什么 ?

    什么是加法器加法器的原理是什么 反相加法器等效原理圖解析
    發表于 03-11 06:30

    Verilog硬件描述語言描述.

    本書簡要介紹了Verilog硬件描述語言的基礎知識,包括語言的基本內容和基本結構 ,以及利用該語言在各種層次上對數字系統的建模方法
    發表于 03-27 23:44 ?101次下載

    加法器,加法器是什么意思

    加法器,加法器是什么意思 加法器 :  加法器是為了實現加法的。  即是產生數的和的裝置。加數和被加數為輸入,和數與
    發表于 03-08 16:48 ?5567次閱讀

    verilog硬件描述語言課程講義

    verilog硬件描述語言課程講義
    發表于 05-21 15:01 ?33次下載
    <b class='flag-5'>verilog</b><b class='flag-5'>硬件</b><b class='flag-5'>描述語言</b>課程講義

    Verilog硬件描述語言參考手冊

    Verilog硬件描述語言參考手冊,Verilog語法內容介紹
    發表于 11-12 17:20 ?0次下載

    Verilog HDL硬件描述語言

    Verilog HDL硬件描述語言 有需要的下來看看
    發表于 12-29 15:31 ?0次下載

    Verilog硬件描述語言

    VHDL語言編程學習Verilog硬件描述語言
    發表于 09-01 15:27 ?0次下載

    Verilog HDL硬件描述語言

    Verilog HDL硬件描述語言,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-11 11:20 ?11次下載

    基于Verilog硬件描述語言的IEEE標準硬件描述語言資料合集免費下載

    本文檔的主要內容詳細介紹的是基于Verilog硬件描述語言的IEEE標準硬件描述語言資料合集免費下載:1995、2001、2005;Syst
    發表于 06-18 08:00 ?10次下載

    加法器是如何實現的

     verilog實現加法器,從底層的門級電路級到行為級,本文對其做出了相應的闡述。
    發表于 02-18 14:53 ?6273次閱讀
    <b class='flag-5'>加法器</b>是如何實現的

    加法器設計代碼參考

    介紹各種加法器Verilog代碼和testbench。
    發表于 05-31 09:23 ?19次下載

    使用Verilog/SystemVerilog硬件描述語言練習數字硬件設計

    HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數字硬件設計~
    的頭像 發表于 08-31 09:06 ?1717次閱讀

    加法器的原理及采用加法器的原因

    有關加法器的知識,加法器是用來做什么的,故名思義,加法器是為了實現加法的,它是一種產生數的和的裝置,那么加法器的工作原理是什么,為什么要采用
    的頭像 發表于 06-09 18:04 ?5195次閱讀

    串行加法器和并行加法器的區別?

    串行加法器和并行加法器是兩種基本的數字電路設計,用于執行二進制數的加法運算。它們在設計哲學、性能特點以及應用場景上有著明顯的區別。
    的頭像 發表于 05-23 15:06 ?2710次閱讀
    主站蜘蛛池模板: 亚洲精品色情婷婷在线播放 | 久久99国产精品无码AV| 男女牲交大战免费播放| 9277高清在线观看视频| 国产网站免费观看| 三级网站视频| av亚洲色天堂2017| 视频一区国产在线二区| WWW国产精品内射老师| 秋霞特色大片18岁入口| 99热热在线精品久久| 肉欲横流(NP高H)| 韩国电影久久| 亚洲国产成人久久一区www妖精 | 日韩一卡二卡三卡四卡免费观在线 | 亚洲国产精品免费观看| 啦啦啦影院视频在线看高清...| 亚洲精品入口一区二区乱麻豆精品| 国内精品免费视频精选在线观看| 渔夫床满艳史bd高清在线直播| 精品久久久无码21P发布| 123超碰在线视频| 三级黄色在线看| 久久中文字幕无线观看| 国产黄片毛片| 性满足久久久久久久久| 麻豆一二三区果冻| 国产乱国产乱老熟300部视频| 91原创在线| 亚洲精品偷拍影视在线观看| 欧美性爱-第1页| 成人国产AV精品久久久久| 亚洲精品无码国产爽快A片百度| 女人高潮被爽到呻吟在线观看| 国产亚洲精品久久久久久久 | 最近中文字幕2018MV高清在线 | 免费人妻无码AV不卡在线| 国产麻豆AV伦| yw193.c国产在线观看| 制服丝袜 快播| 亚洲精品不卡视频|