VHDL编写一位全加器参考程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这是茄子求别人写的参考程序,不一定能实际运行。但是可靠性在百分之九十左右。大家做不出来的可以参考下。做出来的看出错误请指正。我作为学习委员既然把答案给大家,一方面是不想影响大家平时成绩,另一方面也是希望大家可以自己看看,学习一下,不要到最后结课了着急。所以我晚上不收打印的作业,每个人都必须亲自抄写出来。
行为描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADD11 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD11;
ARCHITECTURE BEHAVE OF ADD11 IS
BEGIN
PROCESS(A,B,CIN)
VARIABLE N: INTEGER RANGE 0 TO 3;
CONSTANT S_VECTOR:
STD_LOGIC_VECTOR(0 TO 3):="1010";
CONSTANT CO_VECTOR:
STD_LOGIC_VECTOR(0 TO 3):="1100";
BEGIN
N:=0;
IF(A='1') THEN N:=N+1;
END IF;
IF(B='1') THEN N:=N+1;
END IF;
IF(CIN='1') THEN N:=N+1;
END IF;
S<=S_VECTOR(N);
CO<=CO_VECTOR(N);
END PROCESS;
END BEHAVE;
数据流描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD2 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD2;
ARCHITECTURE DATAFLOW OF ADD2 IS SIGNAL TMP1,TMP2:STD_LOGIC; BEGIN
TMP1<=A XOR B;
TMP2<=TMP1 AND CIN;
S<=TMP1 XOR CIN;
CO<=TMP2 OR(A AND B);
END DATAFLOW;
结构体描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADD3 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD3;
ARCHITECTURE STRUCTURE OF ADD3 IS COMPONENT AND2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
COMPONENT OR2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
COMPONENT XOR2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
SIGNAL TMP1,TMP2,TMP3:STD_LOGIC; BEGIN
U1:XOR2 PORT MAP(A,B,TMP1);
U2:AND2 PORT MAP(TMP1,CIN,TMP2); U3:XOR2 PORT MAP(TMP1,CIN,S);
U4:AND2 PORT MAP(A,B,TMP3);
U5:OR2 PORT MAP(TMP2,TMP3,CO); END STRUCTURE;