logo资料库

计算机组成原理实验 Quartus 四位全加器.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
一、设计分析:
二、代码设计:
三、逻辑图
四、波形仿真
四位全加器 一、设计分析: 全加器是能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进 位信号的加法电路。 真值表如图所示: 根据真值表可得出表达式: cinba abcin   cin s       ba   a  cinba  cinba  cin  cinba  ba  a  a cin b b ab   cinb cinba  abcin bcin a cout    ab ab ab  cin  ba  a      cinba cin b 根据以上表达式,可以用数据流方式设计出 1 位全加器。用串行进位来设计 4 位全加 器。先设计 4 个 1 位的全加器,然后将低位的进位输出与高位的进位输入相连,将要进行 加法运算的两个 4 位数的每一位分别作为每一个 1 位全加器的输入,进行加法运算,所有
的 1 位全加器的输出组成一个 4 位数,即输入的两个 4 位数之和,最高位的全加器产生的 进位输出即两个 4 位数求和的进位输出。 二、代码设计: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder1 IS PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC); END adder1; --1 位全加器设计 ARCHITECTURE dataflow OF adder1 IS --用数据流方式设计 1 位全加器 SIGNAL tmp:STD_LOGIC; --用 tmp 表示 a⊕b BEGIN tmp<=a XOR b AFTER 10 ns; s<=tmp XOR cin AFTER 10 ns; cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns; END dataflow; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adder4 IS --4 位全加器设计
PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); cin:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout:OUT STD_LOGIC); END adder4; ARCHITECTURE structural OF adder4 IS --用结构化描述风格设计 4 位全加器 COMPONENT adder1 PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC); END COMPONENT; SIGNAL x,y,z:STD_LOGIC; FOR u1,u2,u3,u4:adder1 USE ENTITY WORK.adder1(dataflow); BEGIN u1:adder1 PORT MAP(a(0),b(0),cin,s(0),x); u2:adder1 PORT MAP(a(1),b(1),x,s(1),y); u3:adder1 PORT MAP(a(2),b(2),y,s(2),z); u4:adder1 PORT MAP(a(3),b(3),z,s(3),cout); END structural; 三、逻辑图 1 位全加器仿真逻辑图: 4 位全加器逻辑图:
四、波形仿真 测试数据: 4 位全加器仿真: Cin_a 1001 0111 Cin_b 0101 1010 Cout 0000 1110 0001 0001
分享到:
收藏