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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计

發(fā)布時(shí)間:2023/12/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

半加器、全加器和行波進(jìn)位加法器原理與設(shè)計(jì)

HDLBits鏈接


半加器

定義

半加器用于計(jì)算2個(gè)單比特二進(jìn)制數(shù)a與b的和,輸出結(jié)果sum(s)和進(jìn)位carry(c)。在多比特?cái)?shù)的計(jì)算中,進(jìn)位c將作為下一相鄰比特的加法運(yùn)算中。其真值表如下所示。

題目描述:實(shí)現(xiàn)一個(gè)半加器。半加器將兩位比特相加(不帶進(jìn)位)并產(chǎn)生一個(gè)1bit結(jié)果和一個(gè)進(jìn)位。

Solution

module top_module( input a, b,output cout, sum );assign {cout,sum} = a + b; endmodule

全加器

定義

全加器不同于半加器的地方是,全加器帶有進(jìn)位cin。輸入為a,b,cin, 輸出為sum(s)和carry*(cout),均是單比特信號(hào)。s為a,b,cin三個(gè)單比特?cái)?shù)的和,cout為a,b,cin三個(gè)數(shù)超過2后的進(jìn)位。

題目描述:實(shí)現(xiàn)一個(gè)全加器。全加器將兩位比特相加(帶進(jìn)位)并產(chǎn)生一個(gè)1bit結(jié)果和一個(gè)進(jìn)位。

Solution

module top_module( input a, b, cin,output cout, sum );assign {cout,sum} = a + b + cin; endmodule

行波進(jìn)位加法器

定義:N-bit加法器可以根據(jù)1-bit全加器組合而成。每個(gè)全加器的輸出進(jìn)位cout作為下一個(gè)全加器的輸入進(jìn)位cin,這種加法器稱為行波進(jìn)位加法器(Ripple-carry adder,簡稱RCA)。

題目描述:現(xiàn)在我們已經(jīng)知道如何實(shí)現(xiàn)一個(gè)全加器,我們將使用它的3個(gè)實(shí)例來創(chuàng)建一個(gè)3位二進(jìn)制的行波進(jìn)位加法器。

行波進(jìn)位加法器將兩個(gè)3位數(shù)字和一個(gè)進(jìn)位相加以產(chǎn)生一個(gè)3位結(jié)果和一個(gè)進(jìn)位輸出。

Solution

module top_module( input [2:0] a, b,input cin,output [2:0] cout,output [2:0] sum );assign {cout[0],sum[0]} = a[0] + b[0] +cin;assign {cout[1],sum[1]} = a[1] + b[1] +cout[0];assign {cout[2],sum[2]} = a[2] + b[2] +cout[1]; endmodule

鞏固練習(xí)

題目描述1:實(shí)現(xiàn)下圖所示電路,其中“FA”指全加器(Full Adder)。

Solution1

module top_module (input [3:0] x,input [3:0] y, output [4:0] sum);wire [2:0] cout;assign {cout[0],sum[0]} = x[0] + y[0];assign {cout[1],sum[1]} = x[1] + y[1] + cout[0];assign {cout[2],sum[2]} = x[2] + y[2] + cout[1];assign {sum[4],sum[3]} = x[3] + y[3] + cout[2];endmodule

題目描述2

假設(shè)有兩個(gè)8位數(shù)字的補(bǔ)碼,a[7:0]和b[7:0]。這倆數(shù)字相加產(chǎn)生s[7:0]。模塊中需計(jì)算是否發(fā)生了(有符號(hào)的)溢出。

[David說]:當(dāng)兩個(gè)正數(shù)相加產(chǎn)生一個(gè)負(fù)結(jié)果,或兩個(gè)負(fù)數(shù)相加產(chǎn)生一個(gè)正結(jié)果時(shí),會(huì)發(fā)生符號(hào)溢出現(xiàn)象。有幾種檢測溢出的方法:可以通過比較輸入和輸出數(shù)字的符號(hào)來計(jì)算溢出,或者從n位和n-1位的進(jìn)位來判斷是否溢出。

Solution2

module top_module (input [7:0] a,input [7:0] b,output [7:0] s,output overflow ); assign s = a + b;assign overflow = (a[7]&b[7]&~s[7]) | ((~a[7])&(~b[7])&s[7]);endmodule

題目描述3:創(chuàng)建一個(gè)100位的二進(jìn)制加法器。加法器將兩個(gè)100位的數(shù)和一個(gè)進(jìn)位相加產(chǎn)生一個(gè)100位的結(jié)果和一個(gè)進(jìn)位。

Solution3

module top_module( input [99:0] a, b,input cin,output cout,output [99:0] sum );assign {cout,sum[99:0]} = a + b + cin;endmodule

題目描述4

已有一個(gè)BCD(二進(jìn)制編碼的十進(jìn)制)數(shù)加法器,名為bcd_fadd,它將兩個(gè)BCD數(shù)字和進(jìn)位信號(hào)相加,生成結(jié)果和進(jìn)位信號(hào)。

module bcd_fadd {input [3:0] a,input [3:0] b,input cin,output cout,output [3:0] sum );

實(shí)例化bcd_fadd的4個(gè)副本,以創(chuàng)建一個(gè)4位BCD行波進(jìn)位加法器。

Solution4

module top_module( input [15:0] a, b,input cin,output cout,output [15:0] sum );wire [2:0] cout_temp;bcd_fadd bcd_1(a[3:0],b[3:0],cin,cout_temp[0],sum[3:0]);bcd_fadd bcd_2(a[7:4],b[7:4],cout_temp[0],cout_temp[1],sum[7:4]);bcd_fadd bcd_3(a[11:8],b[11:8],cout_temp[1],cout_temp[2],sum[11:8]);bcd_fadd bcd_4(a[15:12],b[15:12],cout_temp[2],cout,sum[15:12]);endmodule

總結(jié)

  • 學(xué)習(xí)了常見加法器的原理與設(shè)計(jì)
  • 學(xué)習(xí)了帶進(jìn)位加法器的級聯(lián)操作

總結(jié)

以上是生活随笔為你收集整理的HDLBits答案(8)_Verilog半加器、全加器和行波进位加法器原理与设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。