VHDL编写一位全加器参考程序
(12-13)1位二进制全加器的VHDL设计

3、标准逻辑矢量:std_logic_vector( * downto *) 或者 std_logic_vector( * to *) 表示一维数组或者总线 并置操作符& 用于将单独的信号合并起来组成新的数组或 者总线 4、1位全加器的VHDL描述 半加器的VHDL描述 全加器的VHDL描述(层次设计)
作用:表示多分支情况的选择语句,各分支无优先级。 执行:每次启动CASE语句,只选择执行其中一个分支的语句。 注意:(1)对所有的情况都要赋值,否则会综合成锁存器。 (2)CASE语句只能在process语句中使用。 (3)与IF语句的区别。
2. 标准逻辑矢量数据类型STD_LOGIC_VECTOR
半加器h_adder电路图
全加器f_adder电路图
▼半加器描述和CASE语句
半加器h_adder逻辑功能真值表 a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 可使用CASE语句描述真值表
1. CASE语句
CASE语句的一般表式是:
CASE <表达式> IS When <选择值1或标识符1> => <顺序语句>; ... ; <顺序语句> ; When <选择值2或标识符2> => <顺序语句>; ... ; <顺序语句> ; ... END CASE ;
课外练习:
采用调用方法设计8位全加器 。 提示:调用8次,将8个1位全加器串连起来。
4 计数器设计
知识要点
计数器:广泛用于控制。 整数:INTEGER, 要定义范围,便于综合器确定线 宽。 • 表示方法:如2,35,16#d9#, 2#11001#等。 • 自然数和正整数。 操作符的重载函数 • 重载:给操作符赋予新的功能,使不同数据类型 的数据可以混合使用 • 使用重载函数: USE IEEE.STD_LOGIC_UNSIGNED.ALL
一位全加器VHDL的设计实验报告

EDA技术及应用实验报告——一位全加器VHDL的设计班级:XXX姓名:XXX学号:XXX一位全加器的VHDL设计一、实验目的:1、学习MAX+PLUSⅡ软件的使用,包括软件安装及基本的使用流程。
2、掌握用VHDL设计简单组合电路的方法和详细设计流程。
3、掌握VHDL的层次化设计方法。
二、实验原理:本实验要用VHDL输入设计方法完成1位全加器的设计。
1位全加器可以用两个半加器及一个或门连接构成,因此需要首先完成半加器的VHDL设计。
采用VHDL层次化的设计方法,用文本编辑器设计一个半加器,并将其封装成模块,然后在顶层调用半加器模块完成1位全加器的VHDL设计。
三、实验内容和步骤:1、打开文本编辑器,完成半加器的设计。
2、完成1位半加器的设计输入、目标器件选择、编译。
3、打开文本编辑器,完成或门的设计。
4、完成或门的设计输入、目标器件选择、编译。
5、打开文本编辑器,完成全加器的设计。
6、完成全加器的设计输入、目标器件选择、编译。
7、全加器仿真8、全加器引脚锁定四、结果及分析:该一位加法器是由两个半加器组成,在半加器的基础上,采用元件的调用和例化语句,将元件连接起来,而实现全加器的VHDL编程和整体功能。
全加器包含两个半加器和一或门,1位半加器的端口a和b分别是两位相加的二进制输入信号,h是相加和输出信号,c是进位输出信号。
构成的全加器中,A,B,C分别是该一位全加器的三个二进制输入端,H是进位端,Ci是相加和输出信号的和,下图是根据试验箱上得出的结果写出的真值表:信号输入端信号输出端Ai Bi Ci Si Ci0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1。
EDA课程设计_一位全加器的设计

EDA课程设计一位全加器的设计The design of one bit full adder学校:兰州交通大学学院:电子与信息工程学院班级:姓名:学号:指导老师:成绩:摘要:本设计主要是利用VHDL语言设计一个一位全加器,它由半加器和或门两个模块组成。
两个模块通过顶层元件例化连接到一起。
几个模块组成的整体能够实现全加器的功能,对所给数据,能够准确快速地计算出其结果.具体的该设计利用VHDL语言使用文本输入,新建工程,通过设计输入、编译、仿真完成各种模块设计,然后生成元器件,再根据元件例化完成各部分的整合,从而形成一个完整的全加器,功能上很好地被满足。
关键字:全加器元件例化Abstract:This design primarily uses VHDL language to design the one bit full adder, which is composed of two half adder and a OR gate. The two modules are connected by top Component instance. Finally, the whole of several parts achieve the function of full adder. For given dates, it can calculate its consequence accurately and quickly.In detail, the design uses text input method by VHDL language to create new projects. By designing the input, compile, simulate, it complete various modules design and generate new components. Then it forms a complete one bit full adder by accomplishing the integration of all parts, according to component instance. And the function can be well satisfied.Key word:full adder component instance一.原理(说明)在计算机中2个二进制数之间的加减乘除算术运算都是由若干加法运算实现的.全加器是算术逻辑运算的重要组成部分,对其深入探索研究有重要的意义。
一位全加器的设计

一位全加器的设计一.实验目的1.掌握原理图输入设计。
2.利用一位半加器实现一位全加器。
二.实验原理1.一位半加器输入a,b;输出co,so;其中co为进位输出;so为和的输出;真值表如下图所示。
2.一位全加器真值表如下图所示。
三.实验内容1.以原理图输入作为设计输入,设计半加器。
2.利用设计好的半加器,实现全加器的设计。
3.通过仿真,观察设计的正确性。
4.仿真完成后,将原理图设计转换为VHDL文件。
四.设计提示仔细阅读真值表,思考如何将半加器设计为全加器。
五.实验报告要求1.写出原理图设计。
(半加器电路原理图)(全加器原理图)2.分析设计过程。
用两个半加器构成全加器。
3.记录仿真波形,保存生成的元件以及RTL,将原理图文件转变为VHDL文件。
(全加器仿真图)(符号元件)(全加器RTL)(全加器VHDL文件)LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY work;ENTITY quan2 ISPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;c : IN STD_LOGIC;ci : OUT STD_LOGIC;si : OUT STD_LOGIC);END quan2;ARCHITECTURE bdf_type OF quan2 ISCOMPONENT quanPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;co : OUT STD_LOGIC;so : OUT STD_LOGIC);END COMPONENT;SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC;SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC;SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC;BEGINb2v_inst : quanPORT MAP(a => a,b => b,co => SYNTHESIZED_WIRE_2,so => SYNTHESIZED_WIRE_0);b2v_inst1 : quanPORT MAP(a => SYNTHESIZED_WIRE_0,b => c,co => SYNTHESIZED_WIRE_1,so => si);ci <= SYNTHESIZED_WIRE_1 OR SYNTHESIZED_WIRE_2;END bdf_type;4.书写实验报告时要结构合理,层次分明,在分析描述的时候,注意语言的流畅。
实验五1位全加器的文本输入(波形仿真应用)

实验五 1位全加器的文本输入(波形仿真用)1.实验目的通过此实验让学生逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及VHDL 的编程方法。
学习电路的仿真方法。
2.实验内容本实验的内容是建立一个1位全加器。
在实验箱上的按键KEY1~KEY3分别为A、B 和Cin,并通过LED1~LED3指示相应的状态。
输出Sum和Cout通过LED7和LED8指示。
3.实验原理1位全加器的真值表如下所示。
表1位全加器逻辑功能真值表4.实验步骤(1) 启动Quartus II,建立一个空白工程,然后命名为full_add.qpf。
(2) 新建full_add.vhd源程序文件,编写代码。
然后进行综合编译。
若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。
也可采用原理图文件的输入方式,建立半加器,然后在组成1位全加器。
原理图如下所示半加器设计1位全加器设计(3) 波形仿真步骤如下:① 在Quartus II 主界面中选择File → New 命名,打开新建文件对话框,从中选择V ector Waveform File ,如下图所示。
单击OK 建立一个空的波形编辑窗口。
选择File →Saveas 改名为full_add.vwf。
此时会看到窗口内出现如下图所示。
图 新建文件对话框 图 新建波形文件界面② 在上图所示的Name 选项卡内双击鼠标左键,弹出如图 所示的对话框。
在该对话框中单击Node Finder 按钮,弹出如图 所示的对话框。
图 添加节点对话框③ 按照下图所示进行选择和设置,先按下“list ”按钮,再按下“>>”按钮添加所有节点,最后按下“ok ”按钮。
图添加节点④波形编辑器默认的仿真结束时间为1us,根据仿真需要可以设置仿真文件的结束时间。
选择Edit→ End Time命令可以更改。
这里采用默认值不需更改。
图添加完节点的波形图⑤编辑输入节点的波形。
编辑时将使用到波形编辑工具栏中的各种工具。
VHDL全加器的设计

实验四全加器的设计一、实验目的通过VHDL语言设计4位全加器,掌握加法器的设计方法;学习利用软件工具的模块封装(1位全加器)及连接使用方法,在软件工具的原理图输入法下完成4位全加器的设计。
二、实验原理根据数字电路全加器的理论知识,按图1所示的1位全加器的管脚图进行设计。
图 1 1位全加器管脚图三、实验内容用VHDL语言设计1位全加器,进行编译、波形仿真及器件编程。
代码一见附录,仿真图如下图 2 1位全加器功能仿真图使用原理图设计4位全加器进行编译、波形仿真及器件编程。
原理图如下仿真图如下用VHDL语言设计4位全加器,进行编译、波形仿真及器件编程,代码二见附录,仿真图如下图 5 4位全加器功能仿真图附录代码一、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity swqjq isport (a,b:in std_logic;ci:in std_logic;co:out std_logic;s:out std_logic);end swqjq;architecture zhang of swqjq isbeginprocess (a,b,ci)beginif(a='0'and b='0'and ci='0') thens<='0';co<='0';elsif(a='1'and b='0'and ci='0') thens<='1';co<='0';elsif(a='0'and b='1'and ci='0') thens<='1';co<='0';elsif(a='1'and b='1'and ci='0') thens<='0';co<='1';elsif(a='0'and b='0'and ci='1') thens<='1';co<='0';elsif(a='0'and b='1'and ci='1') thens<='0';co<='1';elsif(a='1'and b='0'and ci='1') thens<='0';co<='1';elses<='1';co<='1';end if;end process;end zhang;代码二、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder4b isport ( ci:in std_logic;a,b:in std_logic_vector(3 downto 0);s:out std_logic_vector(3 downto 0);co:out std_logic);end adder4b;architecture zhang of adder4b issignal sint:std_logic_vector(4 downto 0); signal aa,bb:std_logic_vector(4 downto 0); beginaa<='0'&a(3 downto 0);bb<='0'&b(3 downto 0);sint<=aa+bb+ci;s(3 downto 0)<=sint(3 downto 0);co<=sint(4);end zhang;。
1位全加器的设计max

实验三1位全加器的设计一、实验目的:熟悉Alter公司的Max+Plus II软件,掌握采用EDA技术进行设计的过程,学会使用原理图和VHDL语言的两种方法进行电路设计。
二、实验内容:1、编写2输入或门的VHDL程序。
2、编写半加法器的VHDL程序。
3、采用原理图方法设计全加器。
4、进行逻辑编译、综合和优化。
5、进行软件仿真。
三、实验步骤:1、建立新目录:如e:\example;2、第一次运行MAX+PLUS II——进入MAX+PLUS II双击MAX+PLUS II 图标:或:开始→程序→Altera→3、创建VHDL源程序A:创建2输入或门的VHDL源程序:ORM2.VHD(1)生成一个新的文本文件:按屏幕上方的按钮,或选择“file”→“new…”,出现对话框:选择Text Editor file(文本编辑方式),然后按下OK按钮,会出现一个无标题的文本编辑窗口——Untitled-Text Editor。
(2)在编文本辑窗口中输入2输入或门的VHDL源程序:ORM2.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ORM2 ISPORT (A,B: IN STD_LOGIC;C: OUT STD_LOGIC);END ORM2;ARCHITECTURE ART1 OF ORM2 ISBEGINC<=A OR B;END ARCHITECTURE ART1;(3)保存文件:按工具栏中的按钮,或选择File→Save,出现对话框:在File Name(文件名)栏中输入文件名,如ORM2.vhd在驱动器选择栏选刚刚建立的项目路径所在的驱动器,如e:在路径栏选择所建立的项目路径,如:example在Automatic Extension(自动扩展名)的下拉菜单中选择.vhd按键,就把输入的文件存放在了目录e:\example中了。
此时,所有的标识符都变色。
一位全加器VHDL的设计实验报告

EDA技术及应用实验报告——一位全加器VHDL的设计班级:XXX姓名:XXX学号:XXX一位全加器的VHDL设计一、实验目的:1、学习MAX+PLUSⅡ软件的使用,包括软件安装及基本的使用流程。
2、掌握用VHDL设计简单组合电路的方法和详细设计流程。
3、掌握VHDL的层次化设计方法。
二、实验原理:本实验要用VHDL输入设计方法完成1位全加器的设计。
1位全加器可以用两个半加器及一个或门连接构成,因此需要首先完成半加器的VHDL设计。
采用VHDL层次化的设计方法,用文本编辑器设计一个半加器,并将其封装成模块,然后在顶层调用半加器模块完成1位全加器的VHDL设计。
三、实验内容和步骤:1、打开文本编辑器,完成半加器的设计。
2、完成1位半加器的设计输入、目标器件选择、编译。
3、打开文本编辑器,完成或门的设计。
4、完成或门的设计输入、目标器件选择、编译。
5、打开文本编辑器,完成全加器的设计。
6、完成全加器的设计输入、目标器件选择、编译。
7、全加器仿真8、全加器引脚锁定四、结果及分析:该一位加法器是由两个半加器组成,在半加器的基础上,采用元件的调用和例化语句,将元件连接起来,而实现全加器的VHDL编程和整体功能。
全加器包含两个半加器和一或门,1位半加器的端口a和b分别是两位相加的二进制输入信号,h是相加和输出信号,c是进位输出信号。
构成的全加器中,A,B,C分别是该一位全加器的三个二进制输入端,H是进位端,Ci是相加和输出信号的和,下图是根据试验箱上得出的结果写出的真值表:信号输入端信号输出端Ai Bi Ci Si Ci0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1。
- 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;。