《《VHDL设计初步》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL设计初步》PPT课件.ppt(99页珍藏版)》请在三一办公上搜索。
1、EDA&CPLD,第5章,VHDL设计初步,原理图输入与 VHDL文本输入设计的区别Graphic is what you draw is what you get“tell me what hardware you want and I will give it to you”VHDL is what you write is what functional you get“tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job”but
2、the designer can not control how the circuit implement,什么是VHDL?,Very high speed integrated Hardware Description Language(VHDL)是IEEE、工业标准硬件描述语言用语言的方式而非图形等方式描述硬件电路容易修改容易保存特别适合于设计的电路有:复杂组合逻辑电路,如:译码器、编码器、加减法器、多路选择器、地址译码器.状态机等等.,VHDL的功能和标准,VHDL 描述输入端口输出端口电路的行为和功能VHDL有过两个标准:IEEE Std 1076-1987(called VHDL
3、1987)IEEE Std 1076-1993(called VHDL 1993),5VHDL语言,支持行为描述与结构描述的混合使用,描述对象:实体 ENTITY 顶级实体 系统模块 低级实体 低层次的设计模块 高级实体可将低级实体作为元件调用,实体描述:实体说明 ENTITY引导,EDN ENTITY 实体名结束 结构体 ARCHITECHTURE引导,END ARCHITECHTURE 结构体名结束 顺序语句:同普通软件,按排列顺序执行 并行语句:无论多少行,同时执行 结构式:电路元件安装 结构 例程序5.1 行为式:功能和行为 相应结构 例程序5.2 算法式:电路和逻辑功能都不知(适用于
4、高层模块,电路实现时可以有多 种不同的实现方案)例程序5.3,例 1 结构式 BEGINGu1:nand2 PORT MAP(a=set,b=qb,c=q);u2:nand2 PORT MAP(a=reset,b=q,c=qb);,例 2 行为式ARCHTECTURE rs_behav OF rsff ISBEGIN q=NOT(qb AND set);qb=NOT(q AND reset);END rs_behav;,例 3 算法式ARCHTECTURE rs_alg OF rsff ISBEGIN ASSERT NOT(reset=“0”AND set=“0”);-输入为00,输出不定,报
5、告错误 REPORT“Input IS 00”SEVERITY error;IF set=1 AND reset=1THEN 输入为11,输出不变.,VHDL程序基本结构,VHDL Synthesis vs.other HDLs Synthesis,VHDL:“tell me how your circuit should behave and I will give you hardware that does the job”ABEL,PALASM,AHDL:“tell me what hardware you want and I will give it to you”,Why usi
6、ng VHDL instead of Graphic,Easy to ModifyIt is more powerful than GraphicVHDL is a portable language becauseis device independentthe same code can be applied to Device manufactured by Company A or Company B,【例5-1】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one
7、 OF mux21a IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE one;,实体,结构体,5.1 多路选择器VHDL描述,图5-1 mux21a实体,图5-2 mux21a结构体,5.1.1 2选1多路选择器的VHDL描述,5.1.1 2选1多路选择器的VHDL描述,【例5-2】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e:BIT;BEGINd=a AND(NOT S);
8、e=b AND s;y=d OR e;END ARCHITECTURE one;,【例5-3】.ARCHITECTURE one OF mux21a IS BEGIN y=(a AND(NOT s)OR(b AND s);END ARCHITECTURE one;,并行语句用boolean方程表达,5.1.1 2选1多路选择器的VHDL描述,【例5-4】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS(a,b,s)BEGIN IF
9、 s=0 THEN y=a;ELSE y=b;END IF;END PROCESS;END ARCHITECTURE one;,顺序语句,5.1.1 2选1多路选择器的VHDL描述,四种描述方法 电路结构相同,综合,5.1.1 2选1多路选择器的VHDL描述,图5-3 mux21a功能时序波形,5.1.2 VHDL相关语句说明,1.实体表达,【例5-5】ENTITY e_name IS PORT(p_name:port_m data_type;.p_name:port_m data_type);END ENTITY e_name;或:【例5-6】ENTITY e_name IS PORT(p_
10、name:port_m data_type;.p_namei:port_mi data_type);END e_name;,93版,87版,5.1.2 VHDL相关语句说明,2.实体名 不可用数字开头、中文、已有实体名,3.PORT语句和端口信号名 信号名唯一,4.端口模式(定义端口上数据的流动方向和方式),IN,OUT,INOUT,BUFFER,5.数据类型BIT 0和1加引号,否则为整数INTEGER注:BIT数据类型的定义在标准程序包STANDARD中,STANDARD在标准库STD中,5.1.2 VHDL相关语句说明,6.结构体表达,【例5-7】ARCHITECTURE arch_na
11、me OF e_name IS(说明语句)BEGIN(功能描述语句)END ARCHITECTURE arch_name;或:【例5-8】ARCHITECTURE arch_name OF e_name IS(说明语句)BEGIN(功能描述语句)END arch_name;,7.信号传输(赋值)符号和数据比较符号A、y=a 赋值;以后发生,理解为延时;两边数据类型相同B、S=0比较;输出结果的数据类型BOOLEAN,取值TRUE OR FALSE(1OR 0),5.1.2 VHDL相关语句说明,8.逻辑操作符7种:AND、OR、NAND、NOR、XOR、XNOR、NOT 要求的操作数(操作对象
12、)的数据类型:BIT、BOOLEAN、STD_LOGIC,9.IF_THEN条件语句 顺序语句,10.WHEN_ELSE条件信号赋值语句 并行赋值,赋值目标=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE.表达式;,11.PROCESS进程语句和顺序语句 合法的顺序语句必须在进程语句中 一个结构体中可以有任意个进程语句,所有的进程语句都是并行语句,而由任一 进程PROCESS引导的语句结构属于顺序语句。,12.文件取名和存盘 文件名同实体名,在元件例化语句中元件名同文件名,5.1.3 VHDL设计的基本概念和语句小节,数据类型,信号赋值符,条件比较符,延时,实体,结
13、构体,端口定义,端口模式,逻辑操作符,IF条件语句,并行条件语句,进程语句,顺序语句,并行语句,文件取名,文件存盘,5.2 寄存器描述及其VHDL语言现象,5.2.1 D触发器的VHDL描述,【例5-9】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS(C
14、LK)BEGIN IF CLKEVENT AND CLK=1-边沿测试语句,有上升沿结果为true THEN Q1=D;-if不完整条件语句 END IF;Q=Q1;-将内部的暂存数据向端口输出 END PROCESS;END bhv;,D触发器,5.2.2 D触发器VHDL描述的语言现象说明,1.标准逻辑位数据类型STD_LOGIC,BIT数据类型定义:TYPE BIT IS(0,1);,STD_LOGIC数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);,STD_LOGIC所定义的9种数据的含义是:U表示未初始化的;X表示强未知的;0表示强逻辑0;1表
15、示强逻辑1;Z表示高阻态;W 表示弱未知的;L表示弱逻辑0;H表示弱逻辑1;-表示忽略。,注:在数字器件中实现的有其中4种,X(-)、0、1、Z,5.2.2 D触发器VHDL描述的语言现象说明,2.设计库和标准程序包,3.SIGNAL信号定义和数据对象,【例5-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=D;END IF;END PROCESS;END;,使用库和程序包的一般定义表式是:LIBRARY;USE.ALL;,LIBRARY IEEE;USE IEEE.STD_
16、LOGIC_1164.ALL;,在IEE库中的STD_LOGIC_1164程序包中定义STD_LOGIC数据类型,SIGNAL Q1:STD_LOGIC;,SIGNAL:定义某标识符为信号Q1 数据对象:信号 数据类型:STD_LOGIC,信号:signal 数据对象 变量:variable 常量:constant,数据对象信号Signal 和变量 Variable,Signal Assignmentreceive the assign value after a period of timeVariable Assignmenthappens immediately when the sta
17、tement is executed,no delay,Signals vs.Variables,Represent CircuitRepresent local storageInterconnectGlobal Scope(anywhere)Local Scope(inside process)Updated at end of PROCESSUpdated Immediately(new value not available)(new value available),SIGNALSVARIABLES,UTILITY:,SCOPE:,BEHAVIOR:,5.2.2 D触发器VHDL描述
18、的语言现象说明,4.上升沿检测表式和信号属性函数EVENT,关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:EVENT,CLKEVENT 对CLK标识符的信号在时间内发生事件的情况进行检测若:CLK的数据类型为STD_LOGIC,时间内CLK由9种值中任意一值向另 一值跳变,则表达式输出TRUE,否则输出FALSE。,CLKEVENT AND CLK=1 边沿测试语句,5.不完整条件语句与时序电路,【例5-11】比较器(组合电路)ENTITY COMP_BAD IS PORT(a1:IN BIT;b1:IN BIT;q1:OUT BIT);END;ARCHITECTUR
19、E one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1=0;-未提及当a1=b1时,q1作何操作END IF;END PROCESS;END;,5.2.2 D触发器VHDL描述的语言现象说明,当条件不满足时应保持q1的原值不变,为q1配置一寄存器保持原值,5.不完整条件语句与时序电路,图5-5 例5-11的电路图,注:A、利用不完整条件语句是VHDL描述时序电路重要的途径 B、纯组合电路设计时不必要的时序元件:浪费逻辑资源、降低速度、影响可靠性,5.不完整条件语句与时序电路,【例
20、5-12】ENTITY COMP_GOOD IS PORT(a1:IN BIT;b1:IN BIT;q1:OUT BIT);END;ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSE q1=0;-a1b1的情况,完整条件语句 END IF;END PROCESS;END,图5-6 例5-12的电路图,5.2.3 实现时序电路的VHDL不同表达方式,【例5-13】.PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)T
21、HEN Q=D;-确保CLK的变化是一次上升沿的跳变 END IF;END PROCESS;,【例5-14】.PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0-同例5-13 THEN Q=D;END IF;END PROCESS;,预定义信号属性:CLK在时刻前为0,5.2.3 实现时序电路的VHDL不同表达方式,【例5-15】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;
22、ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF rising_edge(CLK)-CLK的数据类型必须是STD_LOGIC THEN Q1=D;END IF;Q=Q1;END PROCESS;END;,上升沿测试函数,5.2.3 实现时序电路的VHDL不同表达方式,【例5-16】.PROCESS BEGIN wait until CLK=1;-利用wait语句 Q=D;END PROCESS;,【例5-17】.PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用进程的
23、启动特性产生对CLK的边沿检测 END IF;END PROCESS;,【例5-18】.PROCESS(CLK,D)BEGIN IF CLK=1-电平触发型寄存器 THEN Q=D;END IF;END PROCESS;,5.2.3 实现时序电路的VHDL不同表达方式,图5-7 边沿型触发器时序波形,图5-8 电平触发型寄存器的时序波形,5.2.4 异步时序电路设计【例5-19】,.ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 T
24、HEN Q1=NOT(Q2 OR A);END IF;END PROCESS;PRO2:PROCESS(Q1)BEGIN IF Q1EVENT AND Q1=1 THEN Q2=D;END IF;QQ=Q2;END PROCESS;,图5-9 例5-19综合的电路,PRO1、PRO2是标注不参加综合进程1的赋值信号为进程2的敏感信号,5.2.5 VHDL设计基本概念和语言现象小节,数据类型,数据对象,信号属性,时钟检测,VHDL库,程序包,时序电路,异步时序,5.3 1位二进制全加器的VHDL设计,图5-10半加器h_adder电路图,图5-11 全加器f_adder电路图,5.3.1 半加器
25、描述和CASE语句,absoco0000011010101101,表5-1 半加器h_adder逻辑功能真值表,1.CASE语句,CASE语句的一般表式是:,CASE ISWhen=;.;;When=;.;;.END CASE;,A、分支条件是互斥的B、完全覆盖case 的取值,否则最后一行others,不是操作符,含义“于是”,2.标准逻辑矢量数据类型STD_LOGIC_VECTOR,3.并置操作符,以下是一些并置操作示例:,SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a=10d(1
26、)1;-元素与元素并置,并置后的数组长度为4.IF a d=101011 THEN.-在IF条件句中可以使用并置符,5.3.1 半加器描述和CASE语句,在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如:B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4),5.3.1 半加器描述和CASE语句,【例5-20】LIBRARY IEEE;-或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a,b:IN STD_LOGIC;c:O
27、UT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS BEGIN c=a OR b;END ARCHITECTURE one;,【例5-21】LIBRARY IEEE;-半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL;ENTITY adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY adder;ARCHITECTURE fh1 OF adder is BEGIN so=a XOR b;co=a AND b;END ARCHITECTUR
28、E fh1;,【例5-22】LIBRARY IEEE;-半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder is SIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc so so so so NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;,【例5-23】.-半加器描述(
29、3)SIGNAL abc,cso:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc cso cso cso cso=10;END CASE;END PROCESS;END ARCHITECTURE fh1;,输出信号合并操作,【例5-24】LIBRARY IEEE;-1位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder IS PORT(ain,bin,cin:IN STD_LOGIC;cout,sum:OUT STD_LOGIC);END ENTITY f_adder;ARCHITECTURE fd1 O
30、F f_adder IS COMPONENT h_adder PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END COMPONENT;COMPONENT or2a PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;SIGNAL d,e,f:STD_LOGIC;BEGIN u1:h_adder PORT MAP(a=ain,b=bin,co=d,so=e);u2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum);u3:or2a PORT MAP(a=d,b=f,c=co
31、ut);END ARCHITECTURE fd1;,5.3.2 全加器描述和例化语句,元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示:COMPONENT 元件名 IS PORT(端口名表);END COMPONENT 文件名;,元件例化语句的第二部分则是此元件与当前设计实体(顶层文件)中元件间及端口的连接说明。语句的表达式如下:例化名:元件名 PORT MAP(端口名=连接端口名,.);,例:用VHDL设计4位计数器,取整数数据类型,为什么?算术操作符对应的操作数无特殊说明为整数,整数取值范围,端口信号模式
32、取BUFFER,为什么?=两边都有Q,表明Q为I/OBUFFER:输入功能是将自己的输出返回,注意整数和位的不同表达方式!,修改后的程序,运算符加载(重载函数),注意,信号端口模式和数据类型的改变!,注意,引进内部信号矢量!,4位锁存器,组合电路加1器,锁存信号,输出反馈,综合后的计数器电路RTL图,用VHDL设计7段16进制译码器,用CASE语句完成真值表的功能,向7段数码管输出信号,最高位控制小数点,注意,此语句必须加入,4位加法计数器,7段译码器,8位总线输出,信号输出,例1,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISP
33、ORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval:integer;BEGINprocess(i0,i1,i2,i3,a,b)beginmuxval=0;if(a=1)then muxval=muxval+1;end if;if(b=1)then muxval=muxval+2;end if;,case muxval is when 0=q q q q null;end case;end process;END body_mux4;,W
34、hy?,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(i0,i1,i2,i3,a,b)variable muxval:integer range 0 to 3;beginmuxval:=0;if(a=1)then muxval:=muxval+1;end if;if(b=1)then muxval:=muxval+2;en
35、d if;,case muxval is when 0=q q q q null;end case;end process;END body_mux4;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder IBEGIN so=(a OR b)AND(a NAND b);co=NOT(a NAND b);END ARCHITECTURE fh1;,用一位
36、全加器设计,1位二进制半加器,1位二进制全加器,内部端口,外部端口,端口连线,VHDL 设计流程:V-S-F-P,STEP1:建立 工作库文件夹,STEP2:输入设计项目原理图/VHDL文本代码,STEP3:存盘,注意 原理图/文本取名,STEP4:将设计项目设置成Project,STEP5:选择目标器件,STEP11:硬件测试,STEP9:引脚锁定并编译,STEP8:仿真测 试和波形分析,STEP7:建立仿真波形文件,STEP6:启动编译,STEP10:编程 下载/配置,VHDL文本输入设计流程,5.4 VHDL文本输入设计方法初步,为设计全加器新建一个文件夹作工作库,文件夹名取为My_pr
37、jct注意,不可用中文!,5.4.1 编辑输入并保存VHDL源文件,新建一个设计文件,使用文本输入方法设计,必须选择打开文本编辑器,图5-13 在文本编辑窗中输入VHDL文件并存盘,图5-12 建立文本编辑器对话框,文本编辑窗,用键盘输入设计文件:多路选择器,存盘文件名必须取为:mux21a.vhd,注意,要存在自己建立的文件夹中,文件存盘后,关键词将改变颜色!否则文件名一定有错!,5.4.2 将当前设计设定为工程,图5-14 设定当前文件为工程,首先点击这里,然后选择此项,将当前的原理图设计文件设置成工程,最后注意此路径指向的改变,注意,此路径指向当前的工程!,首先选择这里,器件系列选择窗,
38、选择ACEX1K系列,根据实验板上的目标器件型号选择,如选EP1K30,注意,首先消去这里的勾,以便使所有速度级别的器件都能显示出来,选择编译器,编译窗,5.4.3 选择VHDL文本编译版本号和排错,图5-15 设定VHDL编译版本号,选择此项,选择VHDL1993项,选择此项,消去这里的勾,编译出错!,5.4.3 选择VHDL文本编译版本号和排错,图5-16 确定设计文件中的错误,打开错误提示窗,错误所在,错误所在,改正错误,完成编译!,首先选择此项,为仿真测试新建一个文件,时序仿真,选择波形编辑器文件,从SNF文件中输入设计文件的信号节点,点击“LIST”,SNF文件中的信号节点,用此键选
39、择左窗中需要的信号进入右窗,最后点击“OK”,消去这里的勾,以便方便设置输入电平,在Options菜单中消去网格对齐Snap to Grid的选择(消去对勾),选择END TIME调整仿真时间区域。,选择65微秒比较合适,用此键改变仿真区域坐标到合适位置。,点击1,使拖黑的电平为高电平,先点击b,将其点为黑色,然后先点击此处将弹出时钟周期设置窗,设置输入信号b的周期为800ns,设置输入信号a的周期为2us,仿真波形文件存盘!,选择仿真器,运行仿真器,5.4.4 时序仿真,图5-17 mux21a仿真波形,引脚锁定,可选择键8作为多路选择器的输入“s”,选择实验电路结构图6,可选择输出“y”的
40、信号从扬声器输出,信号a和b输入两个不同频率的时钟信号,键8的引脚名作为“s”信号,键8的引脚名对应的引脚号,选择实验板上插有的目标器件,扬声器引脚号为:99,信号b由“clock0”输入时钟信号,引脚号为:126,信号a由“clock5”输入时钟信号,引脚号为:56,注意,对于GWAK30+板,时钟引脚必须查阅以下“时钟了解表1”,引脚对应情况实验板位置 多路选择器信号 通用目标器件引脚名 目标器件EP1K30TC144引脚号 1、键8:s PIO13 272、扬声器 y SPEAKER 993、时钟输入信号 b CLOCK0 1264、时钟输入信号 a CLOCK5 56,选择引脚锁定选项
41、,引脚窗,此处输入信号名,此处输入引脚名,按键“ADD”即可,注意引脚属性错误引脚名将无正确属性!,再编译一次,将引脚信息进去,选择编程器,准备将设计好的半加器文件下载到目器件中去,编程窗,在编程窗打开的情况下选择下载方式设置,选择此项下载方式,下载(配置)成功!,5.4.5 硬件测试,选择电路模式为“6”,模式选择键,“s”为高电平,注意时钟频率选择,CLOCK5:a频率选择1024Hz,CLOCK0:b频率选择256Hz,实 验,实验5-1 简单组合电路的设计,(1)实验目的:熟悉Max+plus的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。(2)实
42、验内容1:首先按照5.4节给出的步骤,利用MAX+plus完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图5-17所示的仿真波形。最后在实验系统上进行硬件测试,实际验证本项设计的功能。,实 验,实验5-1 简单组合电路的设计,(3)实验内容2:将5.4节的多路选择器看成是一个元件mux21a,利用元件例化语句描述图5-20,并将此文件放在同一目录E:muxfile中。以下是参考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUXK IS PORT(a1,a2,a3,s0,s1:IN STD_LOGIC;o
43、uty:OUT STD_LOGIC);END ENTITY MUXK;ARCHITECTURE BHV OF MUXK IS COMPONENT MUX21A PORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;SIGNAL tmp:STD_LOGIC;BEGIN u1:MUX21A PORT MAP(a=a2,b=a3,s=s0,y=tmp);u2:MUX21A PORT MAP(a=a1,b=tmp,s=s1,y=outy);END ARCHITECTURE BHV;,实 验,实验5-1 简单组合电路的设计,按照5.4节的步骤对上例
44、分别进行编译、综合、仿真。并对其仿真波形(图5-23)作出分析说明。,图5-23 仿真波形,实 验,实验5-1 简单组合电路的设计,(4)实验内容3:引脚锁定以及硬件下载测试。若目标器件是EPF10K10,建议选实验电路模式5(附图1-7),用键1(PIO0,引脚号为5)控制s0;用键2(PIO1,引脚号为6)控制s1;a3、a2和a1分别接clock5(引脚号为83)、clock0(引脚号为2)和clock2(引脚号为43);输出信号outy仍接扬声器spker(引脚号为3)。通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。引脚锁定窗如图5-
45、24所示。最后进行编译、下载和硬件测试实验。,实 验,实验5-1 简单组合电路的设计,图5-24 实验5-1引脚锁定,实 验,实验5-1 简单组合电路的设计,(5)实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。(6)附加内容:根据本实验以上提出的各项实验内容和实验要求,设计1位全加器。首先用Max+plus完成本章第3节给出的全加器的设计,包括仿真和硬件测试。实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告、仿真波形图及其分析报告。(7)实验
46、习题:以此1位二进制全加器为基本元件,用例化语句写出8位二进制全加器的顶层文件,并讨论此加法器的电路特性。,实 验,实验5-2 简单时序电路的设计,(1)实验目的:熟悉MAX+plus的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。(2)实验内容1:根据实验5-1的步骤和要求,设计触发器(使用例5-9),给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。(3)实验内容2:根据实验5-1的步骤和要求,设计锁存器(使用例5-18),同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。(4)实验报告:分析比较实验内容1和2的仿真和实测结果,说明这两种电路的异同点,给出实验报告。(5)实验思考题:用例5-9中的时钟边沿检测表述,如何获得电平触发型锁存器?,