什么是一位全加器,其原理是什么?
什么是一位全加器,其原理是什么
加器是能夠計(jì)算低位進(jìn)位的二進(jìn)制加法電路
一位全加器由2個(gè)半加器組成,其電路原理如圖4-2所示
一位全加器(FA)的邏輯表達(dá)式為:
S=A⊕B⊕Cin
Co=AB+BCin+ACin
其中A,B為要相加的數(shù),Cin為進(jìn)位輸入;S為和,Co是進(jìn)位輸出;
如果要實(shí)現(xiàn)多位加法可以進(jìn)行級(jí)聯(lián),就是串起來(lái)使用;比如32位+32位,就需要32個(gè)全加器;這種級(jí)聯(lián)就是串行結(jié)構(gòu)速度慢,如果要并行快速相加可以用超前進(jìn)位加法,
超前進(jìn)位加法前查閱相關(guān)資料;
如果將全加器的輸入置換成A和B的組合函數(shù)Xi和Y(S0…S3控制),然后再將X,Y和進(jìn)位數(shù)通過全加器進(jìn)行全加,就是ALU的邏輯結(jié)構(gòu)結(jié)構(gòu)。
即 X=f(A,B)
Y=f(A,B)
不同的控制參數(shù)可以得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運(yùn)算和邏輯運(yùn)算。
?
表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 |
一、?
1.?
2.?
3.?
二、?
由數(shù)字電路知識(shí)可知,一位全加器可由兩個(gè)一位半加器與一個(gè)或門構(gòu)成,其原理圖如圖1所示。該設(shè)計(jì)利用層次結(jié)構(gòu)描述法,首先設(shè)計(jì)半加器電路,將其打包為半加器模塊;然后在頂層調(diào)用半加器模塊組成全加器電路;最后將全加器電路編譯下載到實(shí)驗(yàn)箱,其中a,b,cin信號(hào)可采用實(shí)驗(yàn)箱上鍵1、鍵2和鍵3進(jìn)行輸入,s,co信號(hào)采用D1與D2發(fā)光二極管來(lái)顯示。
圖1.1 全加器原理圖
三、?
1.?
在QUARTUSII軟件下創(chuàng)建一工程,工程名為full_adder,芯片名為EP 1C3T144,選擇FPGA目標(biāo)器件,根據(jù)DE2的平臺(tái)情況,選擇cyclone II系列的EP2C35F672C6,注意工程路徑不要放到安裝路徑;
2.?
新建VHDL語(yǔ)言文件,輸入如下半加器VHDL語(yǔ)言源程序,并存盤為half_adder.vhd;
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity half_adder is
?
?
?
?
end half_adder;
architecture half_adder of half_adder is
signal c,d:std_logic;
begin
?
?
?
?
end half_adder;
?
3.?
一般先進(jìn)行功能仿真,再進(jìn)行時(shí)序仿真。為了仿真,首先編輯測(cè)試文件。本次實(shí)驗(yàn)由于系統(tǒng)簡(jiǎn)單,采用對(duì)輸入信號(hào)進(jìn)行輸入波形編輯的方法得到激勵(lì)文件
4.?
(1)設(shè)置仿真器進(jìn)行功能仿真:
??
??
??
??
(2)設(shè)置仿真器進(jìn)行時(shí)序仿真:
??
??
??
??
5.?
6.?
由file->new,打開原理圖文件,并存盤為full_adder.bdf
在原理圖中調(diào)用半加器與或門模塊,按照?qǐng)D1.1所示連接電路,完成后另保存full_adder。
7.?
??
??
8.?
實(shí)驗(yàn)采用模式5,鎖定引腳對(duì)照表如下
?
信號(hào) |
鍵1 |
鍵2 |
鍵3 |
D1 |
D2 |
引腳號(hào) |
1 |
2 |
3 |
11 |
32 |
?
執(zhí)行ASSIGNMENT-PINS,設(shè)置完成后,執(zhí)行下載。
下載:采用JATG方式進(jìn)行下載,通過鍵1、鍵2與鍵3的輸入,觀察D1,D2的亮滅驗(yàn)證全加器的邏輯功能。(此時(shí),電腦與下載線都要連接到實(shí)驗(yàn)箱上,且每次連線都必須先關(guān)掉電源)
?
四、?
1.為什么在實(shí)驗(yàn)步驟3中,將半加器保存為half_adder,可否保存為full_adder?
答:不能保存為full_adder,因?yàn)閂HDL語(yǔ)言中,要求程序名與實(shí)體名一致,否則會(huì)出現(xiàn)錯(cuò)誤;而且這個(gè)程序是生成半加器模塊的程序,統(tǒng)一命名對(duì)模塊理解也容易得多。
2.對(duì)電路進(jìn)行功能仿真與時(shí)序仿真時(shí),發(fā)現(xiàn)二者有什么樣的區(qū)別?
?
3.為什么要進(jìn)行引腳鎖定?
?
4.采用層次結(jié)構(gòu)法描述電路有什么樣的優(yōu)點(diǎn)?
?
非常好我支持^.^
(86) 57.3%
不好我反對(duì)
(64) 42.7%
相關(guān)閱讀:
- [電子說] 仿真測(cè)試2:全加器(模塊調(diào)用) 2023-10-10
- [電子說] 時(shí)序分析基本概念介紹<Combinational logic> 2023-07-10
- [電子說] 請(qǐng)用Verilog分別實(shí)現(xiàn)1位半加器和1位全加器 2023-06-26
- [電子說] FPGA設(shè)計(jì):4位全加器代碼以及仿真 2023-05-23
- [電子說] 層次化設(shè)計(jì)構(gòu)成全加器 2023-05-22
- [電子說] 基于FPGA層次化設(shè)計(jì)構(gòu)成全加器 2023-05-14
- [電子說] 一文詳解算術(shù)運(yùn)算電路 2023-03-21
- [電子說] 如何用繼電器構(gòu)建計(jì)算機(jī)的CPU中央處理單元 2021-06-30
( 發(fā)表人:admin )