⑴ VHDL的問題...... 定義一個 add 全加器,在頂層文件中引用,可以通過component定義,結構體中例化的方式
第二種是把該全加器編譯進work.lib。
這就是不同,其餘沒有不同啦。如果不調用lib,就功能上來說是一樣的。
⑵ 數字電路與邏輯設計:設計實現一個兩位二進制的全加器。 求詳細點的解說...
B0
C0=A0B0
S1=A⊕B⊕C
C1=(AB+AC+BC)``=[(AB)`(AC)`(BC)`]`
見附圖
⑶ 全加器的工作原理
全加器英語名稱為full-adder,是用門電路實現兩個二進制數相加並求出和的組合線路,稱為一位全加器。一位全加器可以處理低位進位,並輸出本位加法進位。多個一位全加器進行級聯可以得到多位全加器。常用二進制四位全加器74LS283。
一位全加器(FA)的邏輯表達式為:
S=A⊕B⊕Cin;Cout=AB+BCin+ACin,其中A,B為要相加的數,Cin為進位輸入;S為和,Co是進位輸出;如果要實現多位加法可以進行級聯,就是串起來使用。
比如32位+32位,就需要32個全加器;這種級聯就是串列結構速度慢,如果要並行快速相加可以用超前進位加法。
如果將全加器的輸入置換成A和B的組合函數Xi和Y(S0…S3控制),然後再將X,Y和進位數通過全加器進行全加,就是ALU的邏輯結構結構。即 X=f(A,B);Y=f(A,B)不同的控制參數可以得到不同的組合函數,因而能夠實現多種算術運算和邏輯運算。
假設超前進位加法器中的每個門時延是t,對於4位加法,最多經過4t的時延,而且,即使增加更多的位數,其時延也是4t。
對比串列進位加法器和超前進位加法器,前者線路簡單,時延與參與計算的二進制串長度成正比,而後者則是線路復雜,時延是固定值。
通常,對於32的二進制串,可以對其進行分組,每8位一組,組內加法用超前進位加法器,組間進位則用串列進位。採用這種折中方法,既保證了效率,又降低了內部線路復雜度。
⑷ 什麼是一位全加器,怎麼設計邏輯電路圖
全加器英語名稱為full-adder,是用門電路實現兩個二進制數相加並求出和的組合線路,稱為一位全加器。
一位全加器可以處理低位進位,並輸出本位加法進位。多個一位全加器進行級聯可以得到多位全加器。常用二進制四位全加器74LS283。
邏輯電路圖設計如下:
一位全加器(FA)的邏輯表達式為:
S=A⊕B⊕Cin
Co=(A⊕B)Cin+AB
其中A,B為要相加的數,Cin為進位輸入;S為和,Co是進位輸出;
如果要實現多位加法可以進行級聯,就是串起來使用;比如32位+32位,就需要32個全加器;這種級聯就是串列結構速度慢,如果要並行快速相加可以用超前進位加法。
(4)全加器器件編譯擴展閱讀:
全加器是組合邏輯電路中最常見也最實用的一種,考慮低位進位的加法運算就是全加運算,實現全加運算的電路稱為全加器。而其功能設計可以根據組合邏輯電路的設計方法來完成。
通過邏輯門、74LS138解碼器、74LS153D數據選擇器來實現一位全加器的電路設計,並且實現擴展的兩位全加器電路。並且Multisim是一個專門用於電路設計與模擬的工具軟體。
⑸ 什麼是半加器和全加器,他們之間是怎樣運算的
數字系統中算術運算都是利用加法進行的,因此加法器是數字系統中最基本的運算單元。由於二進制運算可以用邏輯運算來表示,因此可以用邏輯設計的方法來設計運算電路。加法在數字系統中分為全加和半加,所以加法器也分為全加器和半加器。 半加器不考慮低位向本位的進位,因此它有兩個輸入端和兩個輸出端。
設加數(輸入端)為A、B ;和為S ;向高位的進位為Ci+1
函數的邏輯表達式為: S=A+B ; Ci+1=AB+1 由於全加器考慮低位向高位的進位,所以它有三個輸入端和兩個輸出端。
設輸入變數為(加數)A、B、 Ci-1,輸出變數為 S、 Ci+1
函數的邏輯表達式為:S=ABCi-1+ABCi-1+ABCi-1+ABCi-1=ABCi-1
Ci+1=ABCi-1+ABCi-1+ABCi-1+ABCi-1 =(AB)Ci-1+AB 因為加法器是數字系統中最基本的邏輯器件,所以它的應用很廣。它可用於二進制的減法運算、乘法運算,BCD碼的加、減法,碼組變換,數碼比較等
⑹ 如何利用一位全加器實現n位全加器
如何利用一位全加器實現n位全加器
由於在程序的第16行插入了條件編譯預處理命令,因此要根據NUM是否被定義過來決定編譯那一個printf語句。而在程序的第一行已對NUM作過宏定義,因此應對第一個printf語句作編譯故運行結果是輸出了學號和成績。
在程序的第一行宏定義中,定義NUM表示字元串OK,其實也可以為任何字元串,甚至不給出任何字元串,寫為:
#define NUM
也具有同樣的意義。只有取消程序的第一行才會去編譯第二個printf語句。讀者可上機試作。
2. 第二種形式:
#ifndef 標識符
程序段1
#else
程序段2
#endif
與第一種形式的區別是將「ifdef」改為「ifndef」。它的功能是,如果標識符未被#define命令定義過則對程序段1進行編譯,否則對程序段2進行編譯。這與第一種形式的功能正相反。
3. 第三種形式:
#if 常量表達式
程序段1
#else
程序段2
#endif
它的功能是,如常量表達式的值為真(非0),則對程序段1 進行編譯,否則對程序段2進行編譯。因此可以使程序在不同條件下,完成不同的功能。
⑺ 結合一位半加器的門級描述和一位全加器的邏輯電路,嘗試用Verilog HDL語言描述一位全加器電路
摘要 半加器電路指對兩個輸入數據位(a、b)相加,輸出一個結果位(sum)和進位(cout),但沒有計算進位輸入的加法器電路。
⑻ 如何用VHDL語言設計四位全加器
VHDL語言設計四位全加器:
library IEEE;
use IEEE.Std_logic_1164.ALL;
entity pro1 is
port(A1,B1,G1BAR,A0,B0,G0BAR:in std_logic;
Y20,Y21,Y22,Y23,Y10,Y11,Y12,Y13:out std_logic);
end pro1;
architecture pro1_arch of pro1 is
begin
Y10<='0' when(B0='0') and ((A0='0') and (G0BAR='0')) else '1';
Y11<='0' when(B0='0') and ((A0='1') and (G0BAR='0')) else '1';
Y12<='0' when(B0='1') and ((A0='0') and (G0BAR='0')) else '1';
Y13<='0' when(B0='1') and ((A0='1') and (G0BAR='0')) else '1';
Y20<='0' when(B1='0') and ((A1='0') and (G1BAR='0')) else '1';
Y21<='0' when(B1='0') and ((A1='1') and (G1BAR='0')) else '1';
Y22<='0' when(B1='1') and ((A1='0') and (G1BAR='0')) else '1';
Y23<='0' when(B1='1') and ((A1='1') and (G1BAR='0')) else '1';
end pro1_arch;
能實現四位二進制數全加的數字電路模塊,稱之為四位全加器。
http://ke..com/link?url=GaCnz6D-_GQfu1rs_YfE_cZKiwRMcRtEpeLDS2Nn-0UlA39xIq_E2Vw8ttNptjB-kaKIblYblcLCXucw3cbaIK
⑼ 一個vhdl寫的全加器,但是編譯的時候遇到下面的問題
就好實體名不 要只用個3,,加上字母也好!!後面那句的意思 是你的設計文件沒有埠,你檢查下你的實體是不是沒設置好輸入和輸出 埠,要麼你把程序貼出來吧