实验4 半加器的VHDL设计
四位加法器实验报告

四位加法器实验报告1.实验目的:掌握组合逻辑电路的基本分析与设计方法;理解半加器和全加器的工作原理并掌握利用全加器构成不同字长加法器的各种方法;学习元件例化的方式进行硬件电路设计;学会利用软件仿真实现对数字电路的逻辑功能进行验证和分析。
2.实验仪器:数字逻辑实验箱3.实验内容:A. 设计实现逐次进位加法器,进行软件仿真并在实验平台上测试。
B. 设计实现超前进位加法器,进行软件仿真并在实验平台上测试。
C.使用VHDL自带加法运算实现一个4位全加器。
4.实验代码:A. 逐次进位加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity FDFA is#定义串行加法器总体接口port(A,B:in std_logic_vector(3 downto 0);Ci:in std_logic;S:out std_logic_vector(3 downto 0);Co:out std_logic);end entity;architecture struct of FDFA iscomponent fadder is#基于一位全加器port(a,b,ci:in std_logic;s,co:out std_logic);end component fadder;signal c0,c1,c2:std_logic;beginU0:fadder port map(A(0),B(0),Ci,S(0),c0);U1:fadder port map(A(1),B(1),c0,S(1),c1);U2:fadder port map(A(2),B(2),c1,S(2),c2);U3:fadder port map(A(3),B(3),c2,S(3),Co);end architecture struct;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fadder is #定义一位全加器port(a,b,ci:in std_logic;s,co:out std_logic);end entity;architecture func of fadder isbeginco<=(a and b) or (ci and ( a xor b));s<=a xor b xor ci;end architecture func;B. 超前进位加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity LAC is#定义超前进位加法器总体接口port(A,B:in std_logic_vector(3 downto 0);Ci:in std_logic;Co:out std_logic;S:out std_logic_vector(3 downto 0));end entity;architecture struct of LAC issignal wirep, wireg:std_logic_vector(3 downto 0);signal wirec:std_logic_vector(2 downto 0);component fadder is#基于一位全加器port(Ai,Bi:in std_logic;c:in std_logic;si:out std_logic;pi:out std_logic;gi:out std_logic);end component fadder;component Ker is#Ker总理进位传递信号P与进位产生信号G,以及进位信号C port(ci:in std_logic;P:in std_logic_vector(3 downto 0);G:in std_logic_vector(3 downto 0);C:out std_logic_vector(3 downto 0));end component Ker;beginU0:fadder port map(Ai=>A(0),Bi=>B(0),c=>Ci,si=>S(0),pi=>wirep(0),gi=>wireg(0));U1:fadder port map(Ai=>A(1),Bi=>B(1),c=>wirec(0),si=>S(1),pi=>wirep(1),gi=>wireg(1));U2:fadder port map(Ai=>A(2),Bi=>B(2),c=>wirec(1),si=>S(2),pi=>wirep(2),gi=>wireg(2));U3:fadder port map(Ai=>A(3),Bi=>B(3),c=>wirec(2),si=>S(3),pi=>wirep(3),gi=>wireg(3));L:Ker port map(ci=>Ci,P(0)=>wirep(0),P(1)=>wirep(1),P(2)=>wirep(2),P(3)=>wirep(3),G(0)=>wireg(0),G(1)=>wireg(1),G(2)=>w ireg(2),G(3)=>wireg(3),C(0)=>wirec(0),C(1)=>wirec(1),C(2)=>wirec(2),C(3)=>Co);end architecture struct;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fadder is #定义一位全加器port(Ai,Bi:in std_logic;c:in std_logic;si:out std_logic;pi:out std_logic;gi:out std_logic);end entity;architecture func of fadder isbeginpi<=Ai xor Bi;gi<=Ai and Bi;si<=Ai xor Bi xor c;end architecture func;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Ker is#定义Ker port(ci:in std_logic;P:in std_logic_vector(3 downto 0);G:in std_logic_vector(3 downto 0);C:out std_logic_vector(3 downto 0));architecture func of Ker isbeginC(0)<=G(0) or ( P(0) and ci );C(1)<=G(1) or ( P(1) and G(0) ) or ( P(1) and P(0) and ci );C(2)<=G(2) or ( P(2) and G(1) ) or ( P(2) and P(1) and G(0) ) or ( P(2) and P(1) and P(0) and ci );C(3)<=G(3) or ( P(3) and G(2) ) or ( P(3) and P(2) and G(1) ) or ( P(3) and P(2) and P(1) and G(0) ) or ( P(3) and P(2) and P(1) and P(0) and ci );end architecture func;C. VHDL自带加法运算实现4位全加器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity VHDLAD is#定义VHDL自带加法运算实现4位全加器总体接口,如果加和比原来和少,则会进位port(A,B:in std_logic_vector(3 downto 0);Ci:in std_logic;Co:out std_logic;S:out std_logic_vector(3 downto 0));end VHDLAD;architecture bhv of VHDLAD issignal D:std_logic_vector(3 downto 0);beginprocess(A,B,Ci,D)beginD <= A + B;if(Ci = '1') thenD <= D + 1;end if;if(D >= A) thenS <= D;Co <= '0';elseS <= D;Co <= '1';end if;end process;end bhv;5.软件仿真结果说明下面图片每幅有14条信号线,从上到下依次为A的低位到高位(共4条)、B的低位到高位(共4条)、输入的进位信号、和的低位到高位(共4条)、输出进位信号。
实验4-半加器的VHDL设计

实验4 半加器的VHDL设计
一、实验目标
1.设计电路系统的硬件框图,并用实体描述;
2. 利用VHDL的逻辑表达式描述门电路;
3.利用VHDL代码完成半加器的设计。
二、实验步骤
1.半加器的输入为a和b。
半加器的输出为和so以及进位co。
2.根据半加器的输入和输出情况,可以写出半加器电路系统的硬件框图:
4.根据端口的定义,可以写出半加器的实体:
5.半加器的门电路为:
可以用VHDL逻辑表达式来描述门电路:
so<=_______________________________
co<=_______________________________
6.根据逻辑表达式,可以写出半加器的结构体:
7.因此半加器的VHDL代码为:
8.把VHDL代码输入QuartusII中,保存文件,文件名要与实体名相同。
9.建立工程,工程名要与设计文件名相同。
将设计文件设置为工程的顶层文件,把设计文件加入到工程中。
编译。
10.利用真值表进行时序仿真,并画出a、b、so、co的波形图,要标明时间刻度。
VHDL实验半加器等等指导书

实验一 半加器和全加器的设计一、 实验目的1、掌握图形的设计方式;2、掌握自建元件及调用自建元件的方法;3、熟练掌握MAXPLUS II 的使用。
二、实验内容1、熟练软件基本操作,完成半加器和全加器的设计;2、正确设置仿真激励信号,全面检测设计逻辑;3、综合下载,进行硬件电路测试。
三、实验原理1、半加器的设计半加器只考虑了两个加数本身,没有考虑由低位来的进位。
半加器逻辑表达式:B A B A B A S ⊕=+=;AB C =2.全加器的设计全加器除考虑两个加数外,还考虑了低位的进位。
全加器逻辑表达式: 1-⊕⊕=i i i i C B A S ;AB C B A C i i i i +⊕=-1)(3、利用半加器元件完成全加器的设计 (1)图形方式其中HADDER 为半加器元件。
四、实验步骤1、完成图形半加器设计。
2、完成VHDL 半加器设计与仿真(记录仿真波形)。
3、完成VHDL 全加器设计与仿真(记录仿真波形)。
4、利用半加器元件进行图形的全加器设计。
五、思考题:1、怎样自建元件?自建元件的调用要注意什么?实验二二位加法计数器的设计一、实验目的1、掌握二位加法计数器的原理;2、掌握二位加法计数器的VHDL描述。
3、深入理解VHDL中元件例化的意义。
二、实验内容1、完成带进位功能二位加法计数器的VHDL设计;2、正确设置仿真激励信号,全面检测设计逻辑;3、综合下载,进行硬件电路测试。
三、实验原理1、二位加法计数器中使用了矢量类型的数据,用来表示计数的数值。
2、元件的例化就是元件的调用,是层次化设计的基础。
具体设计程序由学生自己完成。
四、实验步骤1、了解二位加法计数器的工作原理。
2、用VHDL文本方式设计二位加法计数器。
3、进行二位加法计数器的设计仿真(记录仿真波形)。
4、进行二位加法计数器的设计下载与测试。
五、思考题1、怎样设计“减法”计数器?2、进位信号的设置应注意什么?实验三基于QUARTUSII图形输入电路的设计一、实验目的1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
《FPGA系统设计》实验报告》QuartusII软件入门并设计1位半加器

《FPGA系统设计》实验报告》QuartusII软件入门并设计1位半加器
一、设计任务
1、熟悉ALTERA公司EDA设计工具软件QuartusII。
2、熟悉EDA实验箱。
3、学习QuartusII软件。
4、在QuartusII软件中使用原理图输入法设计并实现一个1位半加器。
二、设计过程
1、半加器的设计:电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。
是实现两个一位二进制数的加法运算电路。
2、半加器表达式:进位:co=a and b
和:so=a xnor (not b)
3、半加器原理图、如下:
图1.1 半加器原理图
1.行为描述程序
2.数据流描述程序
3.结构体描述程序
图1.2 半加器实验操作图4、真值表
表1.1 半加器真值表
5、引脚分配图
图1.3 引脚分配图
6、调试过程
将99脚和98脚接到拨码开关,87脚和86脚接发光二极管,当开关全拨至1或全拨至0不亮,反之会亮。
三、总结
通过这次实验,我学会了用VHDL语言实现半加器功能,掌握Quartus‖软件输入设计流程,本次实验我分别用实验箱上的开关K1、K2作为半加器两输入A、B;分别用LED灯LED1、LED2作为半加器的两个输出端S、C。
实验时将实验箱的拨动开关拨向下时为低电平“0”。
拨向上时为高电平“1”,LED高电平时灯亮,低电平时灯灭。
其结果均符合半加器的真值表。
数电实验报告

一、实验名称1. 实验一QuartusⅡ原理图输入法设计与实现2. 实验二用VHDL设计与实现组合逻辑电路(一)3. 实验三用VHDL设计与实现时序逻辑电路(二)4.实验四用VHDL设计与实现时序逻辑电路(三)(数码管动态扫描控制器)二、实验任务要求1.实验一:○1用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元;○2用上面生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;○3用3线-8线译码器(74LS138)和逻辑门设计实现函数F=CBA+CBA+CBA+CBA,仿真验证其功能,并下载到实验班测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;2.实验二:○1用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个…1‟时,输出为…1‟,否则输出为…0‟,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○2用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○3用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验班测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;3.实验三:○1用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。
要求在Quartus Ⅱ平台上设计程序并仿真验证设计;○2用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○3将分频器、8421十进制计数器、数码管译码器3个电路进行连接并下载测试。
4.实验四:○1用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真验证其功能,并下载到实验板测试;(必做)○2用VHDL语言设计并实现六个数码管循环左滚动,时钟点亮6个数码管,坐出右进,状态为:012345→123450→234501→345012→450123→501234→012345;(选做)○3用VHDL语言设计并实现六个数码管向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再一次从右边一个一个地点亮。
半加器全加器的工作原理和设计方法实验报告

半加器全加器的工作原理和设计方法实验报告
一、实验目的
1、了解数字电路的基本运算电路,如半加器和全加器。
二、实验器材
集成电路IC:74LS86、74LS83A、定时器CD4017
三、实验原理
1、半加器
半加器的功能是对两个二进制位的加法进行部分运算,即进行逐位相加,得到次位的进位信号和本位的和信号,半加器的运算法则如下:
• 0+0=0,S=0,C=0
其中,S为和信号,C为进位信号。
半加器的逻辑电路图如图1所示:
其中,传输门XOR gate为异或门,SUM为和信号输出端,CARRY为进位信号输出端。
2、全加器
图2. 全加器逻辑电路图
四、实验内容
将集成电路74LS86的引脚定义为X1、X2、不连、SUM、CARRY,输入进位信号CARRY 为不连,依次连接如图3所示,将本位输入信号接到X1和X2引脚上,再将SUM和CARRY 引脚接到示波器上,调节示波器显示参数,观察和进位信号输出情况。
将全加器的电路图按照原理图进行布线,如图4所示:
五、实验结果
将X1和X2输入信号分别输入1和0,观察示波器上和进位信号输出情况如图5所示:
图5. 半加器实验结果
该结果表明,1+0=1,和信号S=1,进位信号C=0,符合半加器的逻辑运算法则。
3、实验验证了半加器和全加器的逻辑运算法则和逻辑电路设计方法。
完整四位全加全减器设计

四位全加全减器设计一.实验目的1熟悉在max+plus II 的环境下设计数字电路的步骤和方法2学习使用vhdl语言,进行设计数字电路的RTL级电路3通过max+plus II 软件中对自行设计的电路的仿真,加深对数字电路设计的理解。
二.实验原理1.功能描述输入:select,Ci, A, B 输出:S,CoSelect=0时,S为全加器的求和位(A+B),Co为全加器的高位进位。
Ci为全加器低位进位。
Select=1时,S为全减器的求差位(A-B),Co为全减器的高位借位。
Ci为全减器低位借位。
2.一位全加全减器真值表:输入输出Select Ci A B S Co0 0 0 0 0 00 0 0 1 1 00 0 1 0 1 00 0 1 1 0 10 1 0 0 1 00 1 0 1 0 10 1 1 0 0 10 1 1 1 1 11 0 0 0 0 01 0 0 1 1 11 0 1 0 1 01 0 1 1 0 01 1 0 0 1 11 1 0 1 0 11 1 1 0 0 01 1 1 1 1 13.逻辑化简由真值表得S=A○十B○十Ci=((A○十Select)○十B○十Ci)○十SelectCo=(A○十Select)B+Ci((A○十Select)+B)=((A○十Select)○十B)Ci+(A○十Select)B对于半加器的逻辑表达式为:S=A○十B Co=AB综上,一位全加全减器可由两个半加器,两个异或门和一个或门组成。
4.毛刺的产生与消除组合逻辑电路由于输入到输出各端的延时不同,在输出端稳定之前会产生错误的输出。
在本电路中,由于低位的进位或借位传输到输出的时间比其他信号传输的延时要长,因此当低位产生进位或借位时会出现错误的输出。
一种常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输入输出信号。
由组合逻辑电路的最大延时Td为16.7ns,D触发器的时钟周期T应略大于Td,取20ns。
4位全加器实验报告

4位全加器实验报告篇一:四位全加器实验报告实验一:四位全加器实验报告实验日期:学生姓名:陆小辉(学号:25)指导老师:黄秋萍加法器是数字系统中的基本逻辑器件,是构成算数运算电路的基本单元。
1位加法器有全加器和半加器两种。
多位加法器构成方式有并行进位方式和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度较快;串行进位加法器是将全加器级联构成多位加法器。
并行进位加法器通常比串行进位加法器占用更多的资源,随着位数的增多,相同位数的并行进位加法器比串行进位加法器的资源占用差距快速增大。
因此,在工程中使用加法器时,要在速度与容量之间寻求平衡。
一、设计要求:设计四位全加器,完成相应的功能。
可采用并行进位方式和串行进位方式,可采用三种常用建模方式中的任意一种。
三、测试代码如(转载自:小草范文网:4位全加器实验报告)下: module text_fulladd4; 二、设计代码如下:(此处采用数据流建模)wire [3:0]sum; module fulladd4(sum,cout,a,b,cin); wire cout; output [3:0]sum; reg [3:0]a,b; output cout; reg cin; input [3:0]a,b; fulladd4 f1(sum,cout,a,b,cin);input cin; initial assign {cout,sum}=a+b+cin; begin endmodule a=4'b0; b=4'b0; cin=1'b0; #210 $stop; end always #10 a=a+1; always #5 b=b+1; always #100 cin=cin+1;endmodule 四、仿真波形如下:续图篇二:4位全加器实验报告数电第一次实验通信1402 程杰 UXX13468【实验目的】采用ISE集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四进制全加器。
实验二 vhdl半加器与全加器的设计与验证实验

北京邮电大学世纪学院<通信工程系数字电路实验>实验报告实验名称:VHDL半加器与全加器的设计与验证实验班级:姓名:专业:学号:实验室:实验组别:实验时间:审阅教师:评定成绩:实验题目基于 VHDL 的半加器与全加器的设计与验证实验一、实验目的1、学习 Quartus II 软件的使用;2、VHDL 半加器的设计与验证实验;3、VHDL 全加器的设计与验证实验;4、掌握模块的 VHDL 调用;5、学习基于 VHDL 的数字电路的设计。
二、预习内容1、VHDL 语言的基本结构;2、VHDL 语言的数据类型和运算操作符;3、VHDL 语言的主要描述语句;三、实验内容本实验主要运用 Quartus II 软件进行 VHDL 电路设计;内容一、VHDL 半加器的设计,包括电路设计并进行时序仿真验证,然后将电路设计进行实际电路的验证;内容二、VHDL 全加器的设计,在VHDL 程序中调用生成的半加器图形符号完成全加器设计,时序仿真验证后,将全加器电路进行实际电路的验证;本实验的重点和难点是 VHDL 语言的使用1、VHDL 半加器电路的设计2、VHDL 半加器电路的时序验证3、VHDL 全加器电路的设计4、全加器电路的时序验证四、实验结果分析对所设计的半加器电路、全加器电路进行实际电路的验证。
分析:五、思考题1、在采用 Quartus II 软件进行 VHDL 电路设计中,工程名、实体名、结构体名如何选取,实体名、结构体名是否可以任意选取,为什么?2、一个完整的 VHDL 语言程序通常包含那几部分?3、VHDL 结构体有那三种描述方式?六、总结。
VHDL实验

实验1、半加器和全加器的设计一、实验目的:1、进一步熟悉MAX--plusⅡ软件的使用2、学习用图形输入方式、VHDL语言输入方式和元件例化方式来设计数字电路。
二、实验内容:1、用原理图输入方式来设计一位半加器2、用VHDL输入方式来设计一位半加器3、用图形方式来设计一位全加器(用1或2实现的半加器及或门)4、用元件例化方式来设计一位全加器三、设计实现及仿真:1、原理图输入方式1、原理图如下:2、仿真波形如下:2、VHDL输入方式1、源程序如下:library ieee;use ieee.std_logic_1164.all;entity half_adder2 isport (a,b:in std_logic;s,c:out std_logic);end half_adder2;architecture arch of half_adder2 isbegins<=a xor b;c<=a and b;end arch;2、仿真波形如下:3、一位全加器1、原理图如下4、元件例化方式1、源程序如下:实验2、四选一数据选择选择器的设计一、实验目的:1、进一步熟悉MAX--plusⅡ软件的使用2、学习用图形输入方式、VHDL语言输入方式和元件例化方式来设计数字电路。
二、实验内容:1、用if语句实现2、用case语句实现3、用when。
else。
语句实现4、用with。
select。
语句实现三、设计实现及仿真:1、原理图如下:1、源程序如下:四选一library ieee;use ieee.std_logic_1164.all;entity mux41 isport (a,b,c,d:in std_logic_vector(3 downto 0);sel:in std_logic_vector(1 downto 0);y:out std_logic_vector(3 downto 0) );end mux41;architecture arch of mux41 isbeginprocess(a,b,c,d,sel)beginif (sel="00") then y<=a;elsif (sel="01") then y<=b;elsif (sel="10") then y<=c;else y<=d;end if;end process;end arch;2、仿真波形如下:1、源程序如下:2、仿真波形如下:1、源程序如下:2、仿真波形如下:1、源程序如下2、仿真波形如下:实验3、可逆计数器的设计一、实验目的:1、进一步熟悉MAX--plusⅡ软件的使用2、学习用图形输入方式、VHDL语言输入方式和元件例化方式来设计数字电路。
第3章二进制半加器和全加器的VHDL设计

ENTITY h_adder IS
PORT (a, b : IN STD_LOGIC;
co, so : OUT STD_LOGIC); END ENTITY h_adder;
I113
ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; --定义标准逻辑位矢量
so co
0
0
1
0
1
0
0
1
现在你能否写出实现半 加器的VHDL程序呢?
异或 与
3.2 半加器及全加器的VHDL描述
⑤【例3-2】 LIBRARY IEEE; --半加器描述(1):真值表描述方法 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS
PORT (A, B : IN STD_LOGIC; co, soபைடு நூலகம்: OUT STD_LOGIC);
进位。
0
1
1
1
0
全加器能进行加数、 1
0
0
0
1
被加数和低位来的
1
0
1
1
0
进位信号相加,并
1
1
0
1
0
根据求和结果给出
1
1
1
1
1
该位的进位信号。
1位二进制全加器真值表
Sum=ain+bin+cin
思考:全加器是加数+被加数+进位,是三者加了两回
3.4 全加器的VHDL描述
u1 h_adder
net2
h_adder
逻辑运算符 AND
半加器原理图实验报告

预习报告实验名称半加器原理图学号姓名指导老师一、实验目的1.学习和掌握半加器全加器的工作原理和设计方法。
2. 熟悉EDA工具Quartus II 的使用,能够熟练运用Vrilog HDL语言在Quartus II下进行工程开发、调试和仿真。
3.掌握组合逻辑电路的设计方法,理解组合电路的特点二、实验仪器设备仪器设备名称规格型号编号备注QuartusIIQuartus II 编译器三、实验原理两个二进制数相加,叫做半加,实现半加操作的电路,称为半加器。
A表示被加数,B表示加数,S表示半加和,co表示向高位的进位。
四、实验内容(VHDL语言代码和仿真波形截图及文字分析)1.建立工作库文件夹和编辑设计文件(1)新建一个文件夹。
本项设计的路径为e:\lxh\eda\bjq。
注意,文件夹名不能用中文,也最好不要用数字。
(2)输入原理图,打开Quartusll,选择菜单File-->New。
在New窗口中的Design Files中选择“Block Diagram/Schematic Files”。
然后在编译窗中输入半加器的原理图。
( 3 )文件存盘。
选择File——>Save As命令,找到已设立的文件夹e:\lxh\eda\bjq,存盘文件名为bjq.bdf。
当出现问句“Do you want to create...”时,若单击“是”按钮,则直接进入创建工程流程。
若单击“否”按钮,可按以下的方法进入创建工程流程。
2.创建工程(1)打开建立新工程管理窗。
选择菜单File→New Preject Wizard命令,即弹出“工程设置”对话框。
点击“next”单击此对话框最上一栏右侧的“…”按钮,找到文件夹E:\LXH\EDA\bjq,选中已存盘的文件bjq.bdf,再单击“打开”按钮。
其中第一行的 E:\LXH\EDA\bjq表示工程所在的工作库文件夹;第二行的bjq表示此项工程的工程名,工程名可以取任何其他的名,也可直接用顶层文件作为工程名,第三行是具体的文件名,这里即为 bjq。
实验五利用例化语句进行层次化设计

实验五利用例化语句进行层次化设计
一、实验目的及要求:
1)实验目的:
学习利用例化语句进行层次化设计的方法。
并仿真验证自己的设计项目
2)实验要求:
利用或门和半加器设计全加器
二、实验原理:
在半加器的基础上,采用元件调用和例化语句,将元件连接起来,而实现全加器的VHDL编程和整体功能。
全加器包含了两个半加器和一个或门
全加器的vhdl设计如下:
(1)半加器的VHDL文本设计如下:
(2)或门的VHDL文本设计如下:
(3)全加器的vhdl设计如下:
批阅老师:年月日
三、实验步骤:
(1)建立新文件夹adder
(2)半加器的设计
(1)输入半加器源程序。
打开Quartus II ,单击“file”菜单下的New ,在New窗口中Design Files栏中选择VHDl File 选项,然后在VHDL文本编辑框中输入半加器的VHDL源程序
(2)文件存盘。
选择File—Save AS,存盘文件名应与实体名一致,即h_adder.vhd,找到已建立的文件夹adder,保存在新建的文件夹里(3)在主菜单中选择Processing→Start Compilation命令,系统编译,同时打开Compilation Report Flow Summary窗体,Status 视图显示编译进程
(4)在主菜单中选择File→New命令,打开New对话框。
单击New对话框中的Other Files
批阅老师:年月日
批阅老师:年月日
五、实验说明:
试验中利用了例化语句进行层次化设计的方法,并仿真验证设计项目。
批阅老师:年月日
批阅老师:年月日。
VHDL实验指导书

实验一MAX plu sⅡ的使用【实验目的】1.掌握MAX plu sⅡ的使用2.掌握逻辑门的VHDL描述方法【实验内容】一、MAX plu sⅡ的设计流程1.创建设计输入文件(1)在“MAX2work”目录下创建自己的工作目录“mywork”,使得以后自己做的设计都保存在这个目录下。
(2)单击“file”菜单中的“new”选项,出现图1-1所示的新建文件窗口。
图1-1 新建文件窗口图(3)选择“Text Editor file”,单击“OK”按钮,出现文本编辑器,然后在文本编辑器里输入设计程序。
2.保存文件单击工具栏上的保存按钮,出现如图1-2所示的保存窗口。
图1-2 保存窗口图选择自己的工作目录,建立自己的文件名,保存所做的设计。
3.设置项目(1)选择菜单【File】/【Project】/【Set Project to Current File】命令,出现图1-3所示的窗口。
图1-3 设置项目窗口图设置项目名与设计文件名相同,一般软件会自动填入此项目名,这是后续处理必不可少的一步。
4.设定器件(1)选择菜单【Assign】/【Device】命令,出现图1-4所示的窗口。
图1-4 设定器件窗口图(2)在“Device Family”选项中选择所使用的系列芯片;在“Devices”中选择“AUTO”,让软件自动选择具体器件。
单击“OK”按钮,即设定好器件。
(3)单击工具栏上的保存按钮,保存好以上所有的设计和设置。
5.编译项目(1)选择菜单【MAX plu sⅡ】/【Compiler】命令,出现编译窗口,然后选择菜单命令【Processing】/【Functional SNF Extractor】如图1-5所示。
(2)单击“Start”按钮,开始编译,编译成功后,会出现1-6所示的窗口。
6.功能仿真(1)创建波形文件:在菜单栏中选择命令【File】/【New】,出现新建文件窗口,选择“Waveform Editor File”选项,如图1-7所示。
EDA半加器与全加器实验打印稿

实验(一):半加器与全加器(一)实验目的:1、练习MAX+PLU SⅡ软件的使用2、熟悉VHDL各种语句的用法3、理解半加器与全加器的逻辑功能。
(二)实验内容:半加器的设计与实现,全加器的设计与实现。
(三)设计过程:1.用VHDL语言设计与实现LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY half_adder ISPORT(A,B:IN STD_LOGIC;S,C:OUT STD_LOGIC);END half_adder;ARCHITECTURE hcs OF half_adder ISBEGINPROCESS (x,y)BEGINC<=A AND B;S<=A XOR B;END PROCESS;END hcs;2.图形方法实现:3.仿真波形如下:4.延时分析如下:(二)全加器的设计与实现:(1)图形方法设计如下:(2)仿真波形如下:(3)延迟时间分析如下:心得体会:通过今天的学习初步了解了max+plusII这个软件的各项功能使用,运行,修改,再运行,再修改直到最后成功编译仿真,挺有成就感的,也深深佩服此软件的设计。
(实验二)四选一数据选择器设计与实现学院:电气学院班级:电信0601姓名:侯常声学号:3060503010(Ⅰ) 实验目的:练习MAX+PLU SⅡ软件的使用,熟悉VHDL各种语句的用法,理解四选一数据选择器的逻辑功能。
(II) 实验内容:用四种方法来完成四选一数据选择器的设计与实现。
(III) 设计过程:1.用条件信号赋值语句实现:(1)用VHDL语言设计ENTITY mux4_1 ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END mux4_1;ARCHITECTURE hcs OF mux4_1 ISBEGINQ<=A WHEN S="00" ELSEB WHEN S="01" ELSEC WHEN S="10" ELSED WHEN S="11" ;END hcs;(2)仿真波形如下:(3)延迟时间分析如下:2.用选择信号赋值语句(并行)来实现:(1)用VHDL语言设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1a ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END mux4_1a;ARCHITECTURE hcs OF mux4_1a ISBEGINWITH S SELECTQ<=A WHEN "00",B WHEN "01",C WHEN "10",D WHEN "11","XXXX" WHEN OTHERS;END hcs;(2)仿真波形如下:(3)延迟时间分析如下:3.用IF分支语句(串行)来实现:(1)用VHDL语言设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1b ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END mux4_1b;ARCHITECTURE hcs OF mux4_1b ISBEGINPROCESS(S)BEGINIF(S="00")THEN Q<=A;ELSIF(S="01")THEN Q<=B;ELSIF(S="10")THEN Q<=C;ELSIF (S="11")THEN Q<=D;END IF;END PROCESS;END hcs;(2)仿真波形如下:(3)延迟时间分析如下:4.用CASE分支语句(串行)来实现:(1)用VHDL语言设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1c ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END mux4_1c;ARCHITECTURE hcs OF mux4_1c ISBEGINPROCESS(S)BEGINCASE S ISWHEN "00"=>Q<=A;WHEN "01"=>Q<=B;WHEN "10"=>Q<=C;WHEN "11"=>Q<=D;WHEN OTHERS=>NULL;END CASE;END PROCESS;END hcs;(2)仿真波形如下:(3)延迟时间分析如下:(IV)心得体会:通过这次学习,初步掌握了四种选择语句,理解了老师上课讲的这四种语句的不同和这些语句使用时所注意的事项,渐渐熟悉了这个软件的使用,感觉挺有收获的。
EDA VHDL 4位全加器实验报告解析

姓名:车琳班级:通信1101班学号:0121109320130实验一用原理图输入法设计4位全加器一、实验目的1)熟悉利用Quartus II 的原理图输入方法设计简单组合电路;2)掌握层次化设计的方法;3)通过一个4位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验内容1)完成半加器、全加器和4位全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。
键1、键2、键3(PIO0/1/2)分别接ain、bin、cin;发光管D2、D1(PIO9/8)分别接sum和cout。
2)建立一个更高的层次的原理图设计,利用以上获得的1位全加器构成的4位全加器,并完成编译、综合、适配、仿真和硬件测试。
建议选择电路模式1:键2、键1输入4位加数:键4、键3输入4位被加数:数码6和数码5显示加和:D8显示进位cout。
三、实验仪器1)计算机及操作系统;2)QuartusII软件;3)编程电缆。
四、实验原理一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出 cout 与相邻的高位加法器的最低进位输入信号 cin 相接。
一个1位全加器可以参考教材介绍的方法来完成。
1位全加器示意图如图1所示。
其中,其中CI 为输入进位位,CO 为输出进位位,输入A 和B 分别为加数和被加数。
S 为输出和,其功能可用布尔代数式表示为:i i i i o ii i ABC ABC ABC ABC C ABC C B A C B A C B A S +++=+++=五、实验步骤1、完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。
键1、键2、键3(PIO0/1/2)分别接ain 、bin 、cin ;发光管D2、D1(PIO9/8)分别接sum 和cout 。
VHDL结构描述的方法设计一个半加器实验

一、实验目的1、初步认识CPU结构,熟悉寄存器的使用方法2、认识PC运行环境,熟悉PC指令系统,指令的编码3、熟悉基本的寻址方法4、初步了解ASM(debug)工具的使用方法5、对堆栈操作,了解栈顶,栈底的概念6、为设计模型机做准备,(模型机指令系统)二、实验原理1、CMD进入DOS环境2、DEBUG3、1)常用命令列表图一命令列表2)通用寄存器:AX,BX,CX,DX段寄存器:CS,DS,ES,SS指针:IP,SP,BP,DI,SI3)指令的机器码表示方法(典型传输指令的格式)图二指令的机器码表示方法W位:指示传递数据商务类型是字(W=1)字节(W=0)D位:标明数据传输方向:(D=0 数据从寄存器传出,D=1数据传至寄存器)第二字节REG字段:寄存器号,用3位编码寻址8种不同的寄存器,在根据第一字节的W位,选择8位或16位寄存器(对使用段寄存器的指令,REG段占2位)注意:MOV指令的二个操作数中有一个必为寄存器,另一个操作数可以是寄存器,也可以是存储器单元,由指令代码的第二字节的MOD和R/M字段指定,根据给出的MOV指令和R/M字段,进行指令的操作分析:三、实验步骤1.寄存器不同寻址方式操作执行指令:mov ax,1111mov bx,[102]mov cx,106mov dx,[bx]观察寄存器变化,并分析操作码2.堆栈指针操作执行指令:mov ax,1224mov bx,5678mov cx,abcdmov dx,ffffpush axpush bxpush cxpush dxint 3^C观察寄存器变化,并分析操作码四、实验现象1.寄存器不同寻址方式操作-r (通过r显示各寄存器状态)AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AD ES=13AD SS=13AD CS=13AD IP=0100 NV UP EI PL NZ NA PO NC13AD:0100 0000 ADD [BX+SI],AL DS:0000=CD (观察可得通用寄存器组ax,bx,cx,dx均为0000 ds,ss,es,cs均为000013AD IP=0100) -a100 (通过a输入各汇编指令)13AD:0100 mov ax,111113AD:0103 mov bx,[102]13AD:0107 mov cx,10613AD:010A mov dx,[bx]13AD:010C int 313AD:010D ^C-g=100 (通过g执行指令,给出运行结果)AX=1111 BX=8B11 CX=0106 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13AD ES=13AD SS=13AD CS=13AD IP=010C NV UP EI PL NZ NA PO NC13AD:010C CC INT 3-d100 (显示现在状态)13AD:0100 B8 11 11 8B 1E 02 01 B9-06 01 8B 17 CC 00 00 00 ................13AD:0110 00 00 00 00 00 00 00 00-00 00 00 00 34 00 9C 13 ............4...-u100 (反汇编)13AD:0100 B81111 MOV AX,111113AD:0103 8B1E0201 MOV BX,[0102]13AD:0107 B90601 MOV CX,010613AD:010A 8B17 MOV DX,[BX]13AD:010C CC INT 313AD:010D 0000 ADD [BX+SI],AL13AD:010F 0000 ADD [BX+SI],AL13AD:0111 0000 ADD [BX+SI],AL13AD:0113 0000 ADD [BX+SI],AL13AD:0115 0000 ADD [BX+SI],AL13AD:0117 0000 ADD [BX+SI],AL13AD:0119 0000 ADD [BX+SI],AL13AD:011B 0034 ADD [SI],DH13AD:011D 009C1300 ADD [SI+0013],BL-d102 (查看[102]内存单元值)13AD:0100 11 8B 1E 02 01 B9-06 01 8B 17 CC 00 00 00 ..............13AD:0110 00 00 00 00 00 00 00 00-00 00 00 00 34 00 9C 13 ............4...13AD:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................-d8b00 (因为bx=8B11,所以查看[8b11]内存单元值)13AD:8B00 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .........13AD:8B10 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .........13AD:8B20 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .........分析:5条指令,又操作码5个分别为B8,8B,B9,8B,CC(立即寻址方式)将1111放入ax寄存器中,高为地址放高位数。
EDA半加器

北京电子科技学院(BESTI)实验报告课程: EDA技术班级: 0921 姓名:翟祺学号:092107 指导教师:李莉实验日期:2011.3.31成绩:课程性质(必修/选修):实验题目:硬件描述语言训练一、设计任务1.计数器设计2.完成VHDL程序的设计、编译及仿真验证3.将程序下载到实验箱中进行验证,可考虑用发光二极管观察二、设计过程(五号黑体字)1. 设计输入输出:按照题目要求设计输入输出如下:CLR:异步清零端。
CO: 进位输出端。
EN: 计数允许端(经过分析认为EN至于高电瓶时计数器开始计数,处于低电平时暂停计数,恢复高电平时继续计数)。
qh: 计数器高位(十位计数端,四位二进制)。
ql:计数器低位(个位计数端,四位二进制)。
2.在Quatus中新建VHDL文件,写入关于半加器的相关代码如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jinzhi60 isport( clk,clr,en:in std_logic;co:out std_logic;qh,ql :buffer std_logic_vector(3 downto 0 ));end jinzhi60;architecture behave of jinzhi60 isbeginco <= '1' when(qh = "0101" and ql = "1001") else'0';process(clk,clr,en)beginif(clr = '1')thenqh <= "0000";ql <= "0000";elsif (clk'event and clk ='1')thenif (en = '1')thenif(ql = 9)then ql <="0000";if(qh = 5)then qh <="0000";else qh <= qh +1;end if;else ql<= ql + 1;end if;else null;//这里的null即实现了EN端功能end if;end if;end process;end behave;3. 进行仿真,观察仿真波形是否符合设计要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 半加器的VHDL设计
一、实验目标
1.设计电路系统的硬件框图,并用实体描述;
2. 利用VHDL的逻辑表达式描述门电路;
3.利用VHDL代码完成半加器的设计。
二、实验步骤
1.半加器的输入为a和b。
半加器的输出为和so以及进位co。
2.根据半加器的输入和输出情况,可以写出半加器电路系统的硬件框图:
4.根据端口的定义,可以写出半加器的实体:
5.半加器的门电路为:
可以用VHDL逻辑表达式来描述门电路:
so<=_______________________________
co<=_______________________________
6.根据逻辑表达式,可以写出半加器的结构体:
7.因此半加器的VHDL代码为:
8.把VHDL代码输入QuartusII中,保存文件,文件名要与实体名相同。
9.建立工程,工程名要与设计文件名相同。
将设计文件设置为工程的顶层文件,把设计文件加入到工程中。
编译。
10.利用真值表进行时序仿真,并画出a、b、so、co的波形图,要标明时间刻度。