EDA技术实用教程第五章 VHDL设计初步.ppt

上传人:仙人指路1688 文档编号:2231159 上传时间:2023-02-03 格式:PPT 页数:44 大小:894.50KB
返回 下载 相关 举报
EDA技术实用教程第五章 VHDL设计初步.ppt_第1页
第1页 / 共44页
EDA技术实用教程第五章 VHDL设计初步.ppt_第2页
第2页 / 共44页
EDA技术实用教程第五章 VHDL设计初步.ppt_第3页
第3页 / 共44页
EDA技术实用教程第五章 VHDL设计初步.ppt_第4页
第4页 / 共44页
EDA技术实用教程第五章 VHDL设计初步.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《EDA技术实用教程第五章 VHDL设计初步.ppt》由会员分享,可在线阅读,更多相关《EDA技术实用教程第五章 VHDL设计初步.ppt(44页珍藏版)》请在三一办公上搜索。

1、EDA技术实用教程,第5章,VHDL设计初步,VHDL的功能和标准,VHDL 描述输入端口输出端口电路的行为和功能VHDL有过两个标准:IEEE Std 1076-1987(called VHDL 1987)IEEE Std 1076-1993(called VHDL 1993),【例5-1】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE one;,实体,结

2、构体,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);e=b AND s;y=d OR e;END ARCHITECTURE one;,【例5-3】.ARCHITECTURE one O

3、F mux21a IS BEGIN y=(a AND(NOT s)OR(b AND s);END ARCHITECTURE one;,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 s=0 THEN y=a;ELSE y=b;END IF;END PROCESS;END ARCHITECTURE one;,5.1.2 VHDL相关语句说明,1.

4、实体表达,【例5-5】ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi data_type);END ENTITY e_name;或:【例5-6】ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi data_type);END e_name;,5.1.2 VHDL相关语句说明,2.实体名,3.PORT语句和端口信号名,4.端口模式,IN,OUT,INOUT,BUFFER,例5ENTITY e_name IS PORT(p_name:port_m

5、data_type;.p_namei:port_mi data_type);END ENTITY e_name;,例5中的 port_m 表达端口模式。,定义端口上数据的流动方向和方式。IN:1)仅允许数据流入端口;2)不用的一般接地;OUT:1)仅允许数据流从实体内部输出;2)不能用于内部反馈;3)不用的不能接地;INOUT:输入输出双向端口;PCI总线的地址/数据复用线 DMA控制器数据总线BUFFER:与 INOUT 类似,区别在于当需要输入数据时,只允许内部回读 输出的信号,BUFFER的回读信号不是由外部输入的,是由内部 产生,向外输出的信号。,例1中a,b,s的端口模式都定义为IN

6、,y的为OUT。,4.端口模式,VHDL 中,预先定义好的数据类型有多种:整数数据类型INTEGER,布尔数据类型BOOLEAN,标准逻辑位数据类型STD _LOGIC和位数据类型BIT。,BIT 数据类型的信号规定的取值范围是逻辑位0和1。必须加单引号,否则认为是整数数据类型INTEGER。BIT 数据类型可以参与逻辑运算或算术运算,结果仍是BIT类型。BIT 数据类型的定义包含在VHDL标准程序包STANDARD中,而程序包STANDARD包含于标准库STD中。,例5ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi

7、 data_type);END ENTITY e_name;,data_type是数据类型,5.数据类型BIT,例7ARCHITECTURE arch_name OF e_name IS(说明语句)BEGIN(功能描述语句)END ARCHITECTURE arch_name;,arch_name 为结构体名,(说明语句)不是必须的(功能描述语句)是必须的。可以是并行语句,顺序语句或是它们的混合。,7,逻辑操作符VHDL共有7种基本操作符 AND,OR,NAND,NOR,XOR,XNOR和NOT。信号在这些操作符下可以组成组合电路。逻辑操作符所要求的操作数(操作对象)的数据类型有3种,BIT,

8、BOOLEAN和STD _LOGIC,6.结构体表达,y=a 表示输入端口中a的数据向输出端口y传输,或信号a向信号b赋值。,要求赋值符“=”两边的信号类型必须一致。,条件判断语句WHEN _ELSE通过测定表达式s=0 的比较结果,确定由哪一端口向y赋值。表达式中的“=”没有赋值意义,只是一种数据比较符号。,8.信号传输(赋值)符号和数据比较符号,一种顺序语句。IF 语句的执行顺序类似于软件语言,首先判断如果s为低电平,则执行y=a 语句,否则,则执行语句y=b,可见VHDL的顺序语句同样能描述并行运行的组合电路。,IF 语句必须以END IF 结束,9,IF_THEN条件语句,10,WHE

9、N _ELSE条件信号赋值语句,一种并行赋值语句,赋值目标=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE.表达式;,条件信号赋值语句的功能与在进程中的IF 语句相同.,每一赋值条件是按书写的先后关系逐项测定的.,由于条件测试的顺序性,条件信号赋值语句中的第一子句具有最高赋值优先级,第二句其次,如此类推.,如果当 p1和 p2同时为1时,z 获得的赋值是 a 而不是b.,例:z=a WHEN p1=1 ELSE b WHEN p2=1 ELSE c,注,11,PROCESS 进程语句,由PROCESS引导的语句称为进程语句。在VHDL中,所有的合法的顺序语句都必须放

10、在进程语句中。,(a,b,c)称为进程的敏感信号表。通常要求所有的输入信号都放在敏感信号表内。PROCESS 语句的执行依赖于敏感信号的变化,当某一敏感信号变化(0-1/1-0)将启动此进程语句。而在执行一遍整个进程的顺序语句后,便进入等待状态,直到下一次敏感信号表中某一信号的跳变才进入“启动-运行”状态。,一个结构体中可以包含任意个进程语句,所有的进程语句都是并行语句。而由任一进程引导的语句结构属于顺序语句。,5.1.3 VHDL设计的基本概念和语句小节,数据类型,信号赋值符,条件比较符,延时,实体,结构体,端口定义,端口模式,逻辑操作符,IF条件语句,并行条件语句,进程语句,顺序语句,并行

11、语句,文件取名,文件存盘,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(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END

12、IF;Q=Q1;-将内部的暂存数据向端口输出 END PROCESS;END bhv;,D触发器,比较用5种不同语句的D触发器VHDL程序,Entity test1 isport(clk,d:in bit;q:out bit);end test1;architecture body of test1 issignal q1:bit;beginprocess(clk)begin if clk=1 AND clklast_value=0 then q1=d;end if;q=q1;end process;end test1_body;,LIBRARY IEEE;USE IEEE.std_logic

13、_1164.all;Entity test1 isport(clk,d:in bit;q:out bit);end test1;architecture body of test1 isbeginprocess(clk,d)begin if rising_edge(clk)then q=d;end if;end process;end test1_body;,They are all the same,DFF,Entity test1 isport(clk:in bit;d:in bit;q:out bit);end test1;architecture body of test1 issig

14、nal q1:bit;beginprocess(clk,d)begin if(clk=1)then q1=d;end if;q=q1;end process;end body;,Entity test1 isport(clk:in bit;d:in bit;q:out bit);end test1;architecture body of test1 issignal q1:bit;beginprocess(clk)begin if(clk=1)then q1=d;end if;q=q1;end process;end body;,5.2.2 D触发器VHDL描述的语言现象说明,1.标准逻辑位

15、数据类型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表示强逻辑1;Z表示高阻态;W 表示弱未知的;L表示弱逻辑0;H表示弱逻辑1;-表示忽略。,5.2.2 D触发器VHDL描述的语言现象说明,2.设计库和标准程序包,3.SIGNAL信号定义和数据对象,【例5-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS(CLK)BEG

16、IN IF CLKEVENT AND CLK=1 THEN Q=D;END IF;END PROCESS;END;,使用库和程序包的一般定义表式是:LIBRARY;USE.ALL;,5.2.2 D触发器VHDL描述的语言现象说明,4.上升沿检测表式和信号属性函数EVENT,关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:EVENT,5.不完整条件语句与时序电路,【例5-11】ENTITY COMP_BAD IS PORT(a1:IN BIT;b1:IN BIT;q1:OUT BIT);END;ARCHITECTURE one OF COMP_BAD IS BEGIN P

17、ROCESS(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描述的语言现象说明,5.不完整条件语句与时序电路,图5-5 例5-11的电路图,5.不完整条件语句与时序电路,【例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

18、 a1 b1 THEN q1=1;ELSE q1=0;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)THEN 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;,5.2.3

19、实现时序电路的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;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 实现时

20、序电路的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;-利用进程的启动特性产生对CLK的边沿检测 END IF;END PROCESS;,【例5-18】.PROCESS(CLK,D)BEGIN IF CLK=1-电平触发型寄存器 THEN Q=D;END IF;END PROCESS;,5.2.4 异步时序电路设计【例5-19】,.ARCHITECTURE bhv OF MULTI_DFF IS SI

21、GNAL Q1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN 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综合的电路,5.2.5 VHDL设计基本概念和语言现象小节,数据类型,数据对象,信号属性,时钟检测,VHDL库,程序包,时序电路,异步时序,5.3 1位二进制全加器的VHDL设计,图5-10半加器h_a

22、dder电路图,图5-11 全加器f_adder电路图,5.3.1 半加器描述和CASE语句,absoco0000011010101101,表5-1 半加器h_adder逻辑功能真值表,1.CASE语句,CASE语句的一般表式是:,CASE ISWhen=;.;;When=;.;;.END CASE;,2.标准逻辑矢量数据类型STD_LOGIC_VECTOR,3.并置操作符,以下是一些并置操作示例:,SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a=10d(1)1;-元素与元素并置,并置

23、后的数组长度为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:OUT STD_LOGIC);

24、END ENTITY or2a;ARCHITECTURE one OF or2a IS BEGIN c=a OR b;END ARCHITECTURE fu1;,【例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=NOT(a XOR(NOT b);co=a AND b;END ARCHITECTURE fh1

25、;,【例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-22】.-半加器描述(3)SIG

26、NAL abc,cso:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc cso cso cso cso=10;END CASE;END PROCESS;END ARCHITECTURE fh1;,【例5-23】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 OF f_adder IS C

27、OMPONENT 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=cout);END ARCHIT

28、ECTURE fd1;,5.3.2 全加器描述和例化语句,元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示:COMPONENT 元件名 IS PORT(端口名表);END COMPONENT 文件名;,元件例化语句的第二部分则是此元件与当前设计实体(顶层文件)中元件间及端口的连接说明。语句的表达式如下:例化名:元件名 PORT MAP(端口名=连接端口名,.);,多路选择器,多路选择器的结构是2的N次方输入线,会有N个地址选择线及一个输出线配合。以一个四选一的多路选择器为例。,用CASE语句描述,LIBRAR

29、Y IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4 IS PORT(IN0,IN1,IN2,IN3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY MUX4;ARCHITECTURE ART OF MUX4 ISSIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN sel Y Y Y Y NULL;END CASE;END PROCESS;END ARCHITECTURE A

30、RT;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4 IS PORT(IN0,IN1,IN2,IN3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY MUX4;ARCHITECTURE ART OF MUX4 ISSIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN sel=B,用WHEN-ELSE 语句描述,本章总结,1,一位二选一选择器,三种模型,格式;

31、端口模式数据类型BIT,格式;逻辑操作符;顺序语句中的IF-THEN条件语句;并行语句中的WHEN-ELSE语句;PROCESS语句,实体,结构体,2,D触发器,数据类型中的STD-LOGIC信号定义,作用上升沿的表达,信号属性函数EVENT不完整条件语句;,3,一位二进制全加器,顺序语句中的CASE语句,格式;数据类型中的标准逻辑矢量类型;并置操作符;元件例化;,4,四选一选择器,CASE语句描述WHEN-ELSE 语句描述,STEP1:建立 工作库文件夹,STEP2:输入设计项目原理图/VHDL文本代码,STEP3:存盘,注意 原理图/文本取名,STEP4:将设计项目设置成Project,

32、STEP5:选择目标器件,STEP11:硬件测试,STEP9:引脚锁定并编译,STEP8:仿真测 试和波形分析,STEP7:建立仿真波形文件,STEP6:启动编译,STEP10:编程 下载/配置,VHDL文本输入设计流程,总结,组合逻辑电路设计:1、各种组合逻辑门电路的设计;2、多路选择器的设计(四路、八路等);3、比较器的设计(三位、四位等);4、各种算术运算电路的设计;5、译码器的设计;7、编码器的设计;,时序电路设计:1、各种触发器(D、JK、T、RS)设计;2、各种计数器(同步、异步)的设计;,1、什么是EDA,EDA的特点;2、什么是PLD,PLD的分类;3、PLD的结构和分类,PLD的电路表示法;4、CPLD的结构,特点,工作原理;5、FPGA的分类,结构,工作原理;6、FPGA和CPLD的比较选择;7、VHDL语言的程序结构(实体,结构体、库、程序包等);8、VHDL语言的语法基础(各种语句);,用QUARTUSII软件设计的一般流程1,赋值语句的各种写法。元件例化,子程序,程序包。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号