您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>半導(dǎo)體技術(shù)>基礎(chǔ)知識>

什么是一位全加器,其原理是什么?

2010年03月08日 17:13 wenjunhu.com 作者:佚名 用戶評論(0
關(guān)鍵字:全加器(27830)

什么是一位全加器,其原理是什么

 加器是能夠計算低位進位的二進制加法電路

一位全加器由2個半加器組成,其電路原理如圖4-2所示


  一位全加器(FA)的邏輯表達式為:
  S=A⊕B⊕Cin
  Co=AB+BCin+ACin
  其中A,B為要相加的數(shù),Cin為進位輸入;S為和,Co是進位輸出;
  如果要實現(xiàn)多位加法可以進行級聯(lián),就是串起來使用;比如32位+32位,就需要32個全加器;這種級聯(lián)就是串行結(jié)構(gòu)速度慢,如果要并行快速相加可以用超前進位加法,
  超前進位加法前查閱相關(guān)資料
  如果將全加器的輸入置換成A和B的組合函數(shù)Xi和Y(S0…S3控制),然后再將X,Y和進位數(shù)通過全加器進行全加,就是ALU的邏輯結(jié)構(gòu)結(jié)構(gòu)。
  即 X=f(A,B)
  Y=f(A,B)
  不同的控制參數(shù)可以得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運算和邏輯運算。
?

表2-1一位全加器的真值表

ADD1 0 0 1 1 0 0 1 1
ADD2
0 1 0 1 0 1 0 1
CARRY_OUT
0 0 0 0 1 1 1 1
SUM< 0 1 1 0 1 0 ?? 0 1

一、???????? 實驗?zāi)康?

1.?????? 熟悉QUARTUSII軟件的使用;

2.?????? 熟悉實驗箱的使用;

3.?????? 掌握利用層次結(jié)構(gòu)描述法設(shè)計電路。

二、???????? 實驗原理及說明

數(shù)字電路知識可知,一位全加器可由兩個一位半加器與一個或門構(gòu)成,其原理圖如圖1所示。該設(shè)計利用層次結(jié)構(gòu)描述法,首先設(shè)計半加器電路,將其打包為半加器模塊;然后在頂層調(diào)用半加器模塊組成全加器電路;最后將全加器電路編譯下載到實驗箱,其中a,b,cin信號可采用實驗箱上鍵1、鍵2和鍵3進行輸入,s,co信號采用D1與D2發(fā)光二極管來顯示。

圖1.1 全加器原理圖

三、???????? 實驗步驟

1.??? 建立full_adder的工程(project)

在QUARTUSII軟件下創(chuàng)建一工程,工程名為full_adder,芯片名為EP 1C3T144,選擇FPGA目標(biāo)器件,根據(jù)DE2的平臺情況,選擇cyclone II系列的EP2C35F672C6,注意工程路徑不要放到安裝路徑;

2.??? 設(shè)計half_adder的VHDL模塊

新建VHDL語言文件,輸入如下半加器VHDL語言源程序,并存盤為half_adder.vhd;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity half_adder is

?????? ??? port( a : in STD_LOGIC;

????????????? ?? ?b : in STD_LOGIC;

????????????? ? ??s : out STD_LOGIC;

????????????? ?? co : out STD_LOGIC );

end half_adder;

architecture half_adder of half_adder is

signal c,d:std_logic;

begin

?????? c<=a or b;

?????? d<=a nand b;

?????? co<=not d;

?????? s<=c and d;

end half_adder;

?

3.????? 驗證half_adder.vhd的正確與否,進行仿真

一般先進行功能仿真,再進行時序仿真。為了仿真,首先編輯測試文件。本次實驗由于系統(tǒng)簡單,采用對輸入信號進行輸入波形編輯的方法得到激勵文件

?

4.????? 進行功能仿真

(1)設(shè)置仿真器進行功能仿真:

????????? Assignments—>setting,選擇simulation setting,在simulation mode中選擇functional

????????? 在對話框中的simulation input中選擇half_adder.vwf,指定激勵文件

????????? 由Processing—>generat functional simulation netlist得到功能仿真的網(wǎng)表文件

????????? 由Processing—>start simulation得到功能仿真波形

(2)設(shè)置仿真器進行時序仿真:

????????? 改變仿真器的設(shè)置,Assignments—>setting

????????? 選擇仿真器設(shè)置,更改仿真模式,選擇timing

????????? 由Processing—>start Compilation對設(shè)計進行編譯

????????? 由Processing—>start simulation得到時序仿真波形

5.????? 封裝

6.????? 編輯全加器的原理圖

由file->new,打開原理圖文件,并存盤為full_adder.bdf

在原理圖中調(diào)用半加器與或門模塊,按照圖1.1所示連接電路,完成后另保存full_adder。

7.????? 對設(shè)計進行全編譯,如出現(xiàn)錯誤請按照錯誤提示進行修改。

?????? 由Processing->Start Compilation對設(shè)計進行全編譯。

????? 編輯波形文件對全加器模塊進行功能仿真和時序仿真。

8.????? 鎖定引腳,下載

實驗采用模式5,鎖定引腳對照表如下

?????????????????????

信號

鍵1

鍵2

鍵3

D1

D2

引腳號

1

2

3

11

32

?

執(zhí)行ASSIGNMENT-PINS,設(shè)置完成后,執(zhí)行下載。

下載:采用JATG方式進行下載,通過鍵1、鍵2與鍵3的輸入,觀察D1,D2的亮滅驗證全加器的邏輯功能。(此時,電腦與下載線都要連接到實驗箱上,且每次連線都必須先關(guān)掉電源)

?

四、???????? 思考題

1.為什么在實驗步驟3中,將半加器保存為half_adder,可否保存為full_adder?

答:不能保存為full_adder,因為VHDL語言中,要求程序名與實體名一致,否則會出現(xiàn)錯誤;而且這個程序是生成半加器模塊的程序,統(tǒng)一命名對模塊理解也容易得多。

2.對電路進行功能仿真與時序仿真時,發(fā)現(xiàn)二者有什么樣的區(qū)別?

?? 答:功能仿真就是將綜合后的VHDL網(wǎng)表文件再送到VHDL仿真器中所進行仿真。這時的仿真僅對VHDL描述的邏輯功能進行測試模擬,以了解其實現(xiàn)的功能是否滿足原設(shè)計的要求,仿真過程不涉及具體器件特性,如延時特性。時序仿真就是將布線器/適配器所產(chǎn)生的VHDL網(wǎng)表文件送到VHDL仿真器中所進行的仿真。該仿真已將器件特性考慮進去了,因此可以得到精確的時序仿真結(jié)果。

3.為什么要進行引腳鎖定?

?? 答:進行引腳鎖定,是為了對硬件進行檢測,就是FPGA/CPLD直接應(yīng)用與系統(tǒng)設(shè)計中,將下載文件下載到芯片后,對系統(tǒng)的設(shè)計進行的功能檢測的過程。

4.采用層次結(jié)構(gòu)法描述電路有什么樣的優(yōu)點?

? 答:可以大大降低設(shè)計成本,縮短設(shè)計周期;極大地簡化設(shè)計文檔的管理;提高大規(guī)模系統(tǒng)電子設(shè)計的自動化程度;設(shè)計者擁有完全的自主權(quán),再無受制于人之虞;良好的可移植與可測試性,為系統(tǒng)開發(fā)提供可靠的保證;能將所有設(shè)計環(huán)節(jié)納入統(tǒng)一的自頂向下的設(shè)計方案中;在系統(tǒng)板設(shè)計結(jié)束后仍可利用計算機對硬件系統(tǒng)進行完整的測試。?

非常好我支持^.^

(86) 57.3%

不好我反對

(64) 42.7%

( 發(fā)表人:admin )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?