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

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

3天內(nèi)不再提示

看看全減器電路與Verilog

冬至子 ? 來源:FPGA探索者 ? 作者:FPGA探索者 ? 2023-06-25 17:38 ? 次閱讀

半加器

圖片

** 輸入 A/B,輸出和 S,輸出 C 為進位。

**

** 輸入 A = 0,B = 0,0+0 = 0,所以 S = 0,C = 0;

**

** 輸入 A = 0,B = 1,0+1 = 1,所以 S = 1,C = 0;**

** 輸入 A = 1,B = 0,1+0 = 1,所以 S = 1,C = 0;**

** 輸入 A = 1,B = 1,1+1 = 10(二進制加法,進 1),**

** 所以 S = 0,C = 1;**

圖片

S = A ^ B        // 輸出加法結(jié)果
C = A & B        // 輸出進位結(jié)果

(1)根據(jù)真值表編寫

按照半加器和全加器的真值表寫出輸出端的邏輯表達式,對半加器,輸出的進位端是量輸入的“與”,輸出的計算結(jié)果是量輸入的異或;對全加器,也按照邏輯表達式做。

//半加器模塊
module adder_half(  
  input        a,
  input        b,
  output reg   sum,
  output reg   cout
);


//這里的always @(*)搭配里面的“=”阻塞賦值符號
//實現(xiàn)的效果和 assign sum = a ^ b; assign cout = a & b;是一樣的
always @(*)
begin
  sum = a ^ b;
  cout = a & b;
end
endmodule

全加器

當(dāng)多位數(shù)相加時,半加器可用于最低位求和,并給出進位數(shù)。第二位的相加有兩個待加數(shù)和,還有一個來自前面低位送來的進位數(shù)。這三個數(shù)相加,得出本位和數(shù)(全加和數(shù))和進位數(shù),這種就是“全加”。

真值表:

圖片

圖片

使用與門、或門和異或門搭建電路:

圖片

根據(jù)真值表編程,門級描述:

// 全加器
module all_adder(cout,sum,a,b,cin);


input a,b,cin;
output sum,cout;


assign sum = a^b^cin;
assign cout = (a&b)|(a&cin)|(b&cin);
endmodule

全加器編程其他思路

直接描述功能,加法直接得到低位的和、高位的進位。

這種方式描述簡單,易于擴展,但是底層具體的實現(xiàn)方式比較抽象。

// 1 位全加器
module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;


assign {cout,sum} = a+b+cin;  // 位拼接,直接描述功能


endmodule

擴展,4 位全加器,運算不需要改變,只需要更改位寬:

module add4(cout,sum,a,b,cin);


 input[3:0] a,b;
 input cin;
 output[3:0] sum;
 output cout;
 
 assign {cout,sum}=a+b+cin;
 
 endmodule

圖片

半減器

輸入:被減數(shù) A,減數(shù) B

輸出:差 S,借位 Cout

(1)0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2)0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(3)1 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

(4)1 - 0 = 0,不需要借位,所以 S = 1,Cout = 0;

圖片

通過觀察(或者卡諾圖化簡),可以得出

S = A ^ B;
Cout = (~A) & B;

圖片

全減器

輸入:被減數(shù) A,減數(shù) B,低位向高位的借位 Cin

輸出:差 S,借位 Cout

這里需要注意:需要計算的是 A - B - Cin

(1) 0 - 0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2) 0 - 1 - 0 = 1,需要借位,所以 S = 1,Cout = 1;

(3) 1 - 1 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(4) 1 - 0 - 0 = 1,不需要借位,所以 S = 1,Cout = 0;

(5) 0 - 0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(6) 0 - 1 - 1 = 0,需要借位,所以 S = 0,Cout = 1;

(7) 1 - 1 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(8) 1 - 0 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

圖片

對 Cout,不容易觀察其表達式,使用卡諾圖化簡:

圖片

S = A ^ B ^ Cin
Cout = (~A) & ( B ^ Cin ) + B & Cin

圖片

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

    關(guān)注

    7

    文章

    199

    瀏覽量

    40100
  • 全加器
    +關(guān)注

    關(guān)注

    10

    文章

    61

    瀏覽量

    28424
  • 半加器
    +關(guān)注

    關(guān)注

    1

    文章

    29

    瀏覽量

    8766
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8204
收藏 人收藏

    評論

    相關(guān)推薦

    北大verilog課件,大家都來看看

    北大verilog課件,大家都來看看啊{:12:}
    發(fā)表于 04-27 16:51

    學(xué)生作品:怎樣做一個四位全減器

    怎樣做一個四位全減器
    發(fā)表于 05-30 21:50

    請問如何用74LS138和與門實現(xiàn)一位全減器

    如何用74LS138和與門實現(xiàn)一位全減器,知識有限,求解答
    發(fā)表于 10-29 00:43

    Verilog典型電路設(shè)計

    Verilog典型電路設(shè)計
    發(fā)表于 08-03 09:23 ?61次下載
    <b class='flag-5'>Verilog</b>典型<b class='flag-5'>電路</b>設(shè)計

    Verilog_HDL教程

    Verilog_HDL教程,又需要的朋友下來看看
    發(fā)表于 05-11 17:30 ?0次下載

    Verilog+HDL實用教程-電科

    Verilog+HDL實用教程-電科,下來看看。
    發(fā)表于 05-11 17:30 ?34次下載

    Verilog 黃金指南

    Verilog 黃金指南,有需要的朋友下來看看
    發(fā)表于 05-20 11:16 ?24次下載

    8051 verilog 版代碼

    8051 verilog 版代碼分享,有需要的下來看看
    發(fā)表于 05-24 09:45 ?0次下載

    8051core-Verilog

    8051core-Verilog源代碼分享,有需要的下來看看。
    發(fā)表于 05-24 09:45 ?14次下載

    Verilog 入門的實例代碼

    Verilog 入門的實例代碼,有需要的下來看看
    發(fā)表于 05-24 10:03 ?20次下載

    verilog_代碼

    verilog_代碼分享,有需要的朋友下來看看。
    發(fā)表于 05-24 10:03 ?12次下載

    用74ls138實現(xiàn)一位全減器

    用3線—8線譯碼器74LS138和門電路設(shè)計1位二進制全減器,輸入為被減數(shù)、減數(shù)和來自低位的借位;輸出為兩數(shù)之差和向高位的借位信號。
    發(fā)表于 10-31 17:15 ?23.8w次閱讀
    用74ls138實現(xiàn)一位<b class='flag-5'>全減器</b>

    Verilog語法基礎(chǔ)

    Verilog HDL是一種用于數(shù)字系統(tǒng)設(shè)計的語言。用Verilog HDL描述的電路設(shè)計就是該電路Verilog HDL模型也稱為模塊。
    的頭像 發(fā)表于 03-08 14:29 ?1.3w次閱讀

    如何使用Verilog HDL描述可綜合電路?

    1、如何使用Verilog HDL描述可綜合電路 Verilog 有什么奇技淫巧?我想最重要的是理解其硬件特性。Verilog HDL語言僅是對已知硬件
    的頭像 發(fā)表于 04-04 11:19 ?4147次閱讀
    如何使用<b class='flag-5'>Verilog</b> HDL描述可綜合<b class='flag-5'>電路</b>?

    看看兩個使用Verilog HDL設(shè)計的簡單電路

    與非門的Verilog 描述如下圖所示,源程序文件的后綴為.v。
    的頭像 發(fā)表于 09-17 15:03 ?1403次閱讀
    <b class='flag-5'>看看</b>兩個使用<b class='flag-5'>Verilog</b> HDL設(shè)計的簡單<b class='flag-5'>電路</b>