EDA技术及实践(第3章)详解ppt课件.ppt

上传人:小飞机 文档编号:2056491 上传时间:2023-01-05 格式:PPT 页数:64 大小:3.16MB
返回 下载 相关 举报
EDA技术及实践(第3章)详解ppt课件.ppt_第1页
第1页 / 共64页
EDA技术及实践(第3章)详解ppt课件.ppt_第2页
第2页 / 共64页
EDA技术及实践(第3章)详解ppt课件.ppt_第3页
第3页 / 共64页
EDA技术及实践(第3章)详解ppt课件.ppt_第4页
第4页 / 共64页
EDA技术及实践(第3章)详解ppt课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《EDA技术及实践(第3章)详解ppt课件.ppt》由会员分享,可在线阅读,更多相关《EDA技术及实践(第3章)详解ppt课件.ppt(64页珍藏版)》请在三一办公上搜索。

1、VHDL基础,第三章,3.1 硬件描述语言概述,VHDL:VHSIC(Very High Speed Integrated Circuit)HDLHDL:Hardware Describe LangaugeVHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力;,学习HDL的几点重要提示,1.了解HDL的可综合性问题HDL可以用来系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。,学习HDL的几点重要

2、提示,2.用硬件电路设计思想来编写HDL 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。,学习HDL的几点重要提示,3.语法掌握贵在精 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义。,3.1.1 组合电路描述,entity mux21a isport(a,b:in bit;s:in

3、 bit;y:out bit);end;architecture one of mux21a isbeginy=a when s=0 else b;end;,3.1.2 VHDL结构,实体:描述了电路器件的外部情况和各信号端口的基本性质。entity mux21a isport(a,b:in bit;s:in bit;y:out bit);end;,实体名,实体名是标识符,可以由设计者自定,好的实体名应该体现器件的基本功能。,3.1.2 VHDL结构,端口语句:用来描述电路的端口及端口信号的性质。port(a,b:in bit;s:in bit;y:out bit);,端口信号名可以自定义。,

4、端口信号名,端口模式,数据类型限定了数据对象的取值范围和数值类型,即对其传输或存储的数据做明确界定。,数据类型,端口模式用于定义端口上数据流动的方向。,3.1.2 VHDL结构,可综合的端口模式有4种:(1)IN输入端口;(2)OUT输出端口;(3)INOUT双向端口;(4)BUFFER缓冲端 口;,3.1.2 VHDL结构,数据类型BIT:取值范围是逻辑位1和0;可以参与逻辑运算或算数运算;bit_vector(1 downto 0);,3.1.2 VHDL结构,结构体的一般表达式如下:architecture of is说明语句 begin 功能描述语句end;,3.1.2 VHDL结构,

5、architecture one of mux21a isbeginy=a when s=0 elseb;end;,赋值符号,=表示输入端口a的数据向输出端口y传输;,数据比较符,由“=”连接的表达式的数据类型是BOOLEAN类型,其取值分别为TRUE和FALSE。,3.1.2 VHDL结构,条件信号赋值语句:when_else赋值目标=表达式 when 赋值条件 else表达式 when 赋值条件 else表达式;y=a when(s=“00”)else b when(s=“01”)else c when(s=“10”)else d;,2,注意1、条件测试具有顺序性;2、各赋值条件可以同时成

6、立;3、至少有一个ELSE,即至少是两分支;,3.1.2 VHDL结构,选择信号赋值语句:with_select_whenwith选择表达式select赋值目标=表达式 when选择值,表达式 when选择值,,表达式 when选择值;withs selecty=a when“00”,b when“01”,c when“10”,d whenothers;,注意1、条件测试不分先后;2、各赋值条件不能重复;3、不允许存在条件涵盖不全的现象;,上机练习:,分别用when_else语句和with_select_when语句实现4选1数据选择器,要求完成设计输入、编译和仿真。仿真时注意输入信号波形编辑

7、的原则是a、b、c、d有所不同,两个选择输入端按00、01、10、11四种情况出现即可。请启动ToolsRTLViewer观察不同语句所对应电路结构有何不同;,注意事项:,1、新建文件时,选择vhdl file选项;2、保存文件时,文件名必须和实体名一致;,with_select_when,when_else,问题,已经学了哪两个语句,其基本格式如何?有什么区别?实现四选一数据选择器时硬件逻辑电路是否相同?,3.1.3 简单信号赋值语句,赋值目标=表达式;,entity mux21a isport(a,b,s:in bit;y:out bit);end;architecture one of

8、mux21a issignal d,e:bit;begind=a and(not s);e=b and s;y=d or e;end;,赋值符号两侧的数据类型必须一致!,3.1.4 逻辑操作符,3.1.5 if语句,architecture one of mux21a isbeginif s=0 then y=a;else y=b;end if;end;,architecture one of mux21a isbeginprocess(a,b,s)beginif s=0 then y=a;else y=b;end if;end process;end;,3.1.5 if语句,If语句的结构(

9、1):If 条件句 then 顺序语句;else 顺序语句;end if;这是一个两分支结构,包含了所有可能的条件,是完整条件语句;,3.1.5 if语句,If语句的结构(2):If 条件句 then 顺序语句;elsIf条件句 then 顺序语句;elsIf条件句 then 顺序语句;else 顺序语句;end if;这是一个多分支结构,包含了所有可能的条件,是完整条件语句;,3.1.6 组合电路和完整条件语句,赋值目标=表达式 when 赋值条件 else表达式 when 赋值条件 else表达式;with 选择表达式select 赋值目标=表达式 when选择值 表达式 when选择值

10、表达式 whenothers;,组合电路都是由完整条件语句构成的!,3.1.7 进程语句,进程的基本格式:进程标号:PROCESS(敏感信号表)ISBEGINEND PROCESS 进程标号;,敏感信号,敏感信号是这样的信号:它的变化可以启动进程。通常要求将进程中的所有输入信号都放入敏感信号表中。,上机练习:,If 条件句 then 顺序语句;elsIf条件句 then 顺序语句;elsIf条件句 then 顺序语句;else 顺序语句;end if;用上面结构实现4选1数据选择器,要求完成设计输入、编译和仿真,并思考该语句是不是完整条件语句。请启动ToolsRTLViewer观察对应电路结构

11、的特点,跟以前的练习比较,与哪个语句实现的电路结构相同;,3.2 时序电路的描述,时序电路是数字逻辑中必不可少的组成部分,下面以典型的时序元件D触发器为例来说明时序电路的VHDL规则,从而得出时序电路描述的一般规律和设计方法。,3.2.1 D触发器,实体描述:entity dff1 isport(d:in bit;clk:in bit;q:out bit);end;,3.2.1 D触发器,entity dff1 isport(d:in std_logic;clk:in std_logic;q:out std_logic);end;,library ieee;use ieee.std_logic

12、_1164.all;entity dff1 isport(d:in std_logic;clk:in std_logic;q:out std_logic);end;,3.2.1 D触发器,标准逻辑位数据类型:STD_LOGICTYPE BIT IS(0,1);-只有两种取值TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);涉及库和标准程序包LIBRARY WORK;LIBRARY STD;USE STD.STANDARD.ALL;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;,STD_LOGIC数据类型在数字器件中实现的只有其中的45

13、种值,即X,0,1,Z,其他值通常不可综合。,3.2.1 D触发器,结构体描述:请叙述D触发器的功能。当时钟脉冲CLK的上升沿到来时,输入端D的值赋给输出端Q。上升沿的表达方法是:CLKEVENT AND CLK=1,EVENT叫做信号属性函数,其用法是:ENENT含义是:信号的取值在一个极小时间段内发生变化。,3.2.1 D触发器,architecture one of dff1 isbeginif clkevent and clk=1 then q=d;end if;end;,architecture one of dff1 isbeginprocess(d,clk)beginif clk

14、event and clk=1 then q=d;end if;end process;end;,完整条件语句?,3.2.1 D触发器,(图),3.2.1 D触发器,architecture one of dff1 issignal q1:std_logic;beginprocess(d,clk)beginif clkevent and clk=1 then q1=d;end if;end process;q=q1;end;,3.2.1 D触发器,3.2.1 D触发器,信号定义和数据对象格式:signal 信号名:数据类型;内部节点信号的定义位置:architecture one of dff

15、1 issignal q1:std_logic;begin,定义q1的目的是为了在设计更大的电路时使用由此引入的节点。,3.2.1 D触发器,architecture one of dff1 isbeginprocess(d,clk)variable q1:std_logic;beginif clkevent and clk=1 then q1:=d;end if;q=q1;end process;end;,3.2.1 D触发器,3.2.1 D触发器,数据对象:在vhdl中数据对象相当于一种容器,它能够接受不同数据类型的赋值。在vhdl中,数据对象有三种:即信号、变量、常量。在vhdl中,被定

16、义的标识符必须被确定为某数据对象,同时还必须被定义为某种数据类型。问题:引入时序电路结构的必要条件是什么?(跟组合电路相比较而言),不完整条件语句的使用,3.2.2 不完整条件语句和时序电路,例:数值比较器entity comp isport(a,b:in bit;y:out bit);end;architecture one of comp isbeginprocess(a,b)beginif ab then y=1;elsif ab then y=0;end if;end process;end;,3.2.2 不完整条件语句和时序电路,3.2.2 不完整条件语句和时序电路,if ab th

17、en y=1;elsif ab then y=0;end if;,if ab then y=1;else y=0;end if;,3.2.2 不完整条件语句和时序电路,3.2.2 不完整条件语句和时序电路,结论:引入时序电路结构的必要条件是:不完整条件语句的出现,而与电路中是否存在clkevent and clk=1 语句没有关系;不完整条件语句不局限于if语句;3.2.3节 时序电路的不同表述方法自己看。,3.2.3 计数器的设计,四位二进制加法计数器的功能描述:,CQ端初值为0,CLK上升沿有效;当CLK端上升沿到来时,输出端加1。,LIBRARY IEEE;USE IEEE.STD_LO

18、GIC_1164.ALL;ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;CQ:BUFFER INTEGER RANGE 15 DOWNTO 0);END;ARCHITECTURE ONE OF CNT4 ISBEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THEN CQ=CQ+1;END IF;END PROCESS;END;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT(CLK:IN S

19、TD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE ONE OF CNT4 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THEN CQI=CQI+1;END IF;END PROCESS;CQ=CQI;END;,3.2.3 计数器的设计,四位二进制加法计数器的功能描述:,clk,CQ3.0,counter,rst为异步复位端;en为同步使能端;cout为进位输出端;,rst,en,cout,实体的

20、定义参考例3-21(64页),1)中间节点的定义:variable cqi:std_logic_vector(3 downto 0);2)异步复位端的实现:If rst=1 then cqi:=(others=0);3)同步使能端的实现:If en=1 then cqi:=cqi+1;4)进位输出端的实现:If cqi=9 then cout=1else cout=0;end if;,实验3:含异步复位端和同步使能端的60进制加法计数器的设计,设计要点:参考例3-21,修改其中输出端cq的位数为:std_logic_vector(5 downto 0);if cqi0)的用法和含义;上机注意事

21、项:保存文件时修改默认的文件名vhdl1为实体名(解决方法);参照原理图法中100进制计数器进行引脚分配和下载,独立完成硬件测试,其中时钟输入端仍然选择Pin93。,实验报告要求:,一、实验目的:学习实用计数器的设计,进一步理解同步和异步的概念,熟悉并掌握复杂if语句的用法。复习仿真和硬件测试的步骤,进一步熟悉fpga的设计流程;二、实验原理:请叙述该计数器个输入输出端口的作用;解释以下三条语句的含义并说明为什么要这样做;程序中使用了两种形式的if语句,请说明其中所包含的完整条件语句和不完整条件语句都有哪些;三、实验要求:完成程序的编辑、编译,独立完成语法错误的排查;进行仿真验证和硬件测试;,

22、实验报告要求:,四、回答问题:什么叫运算符重载,程序中哪些地方出现了运算符重载,请举例说明。参考例3-19和61页的有关文字说明整数类型的定义方法。vhdl语言的数据对象有哪三种,说明信号和变量的定义方法。请依据仿真波形来说明什么是异步复位端和同步清零端,3.3 全加器的VHDL描述,本节通过全加器的设计流程,介绍含有全加器的VHDL程序,学习case语句和元件例化语句的用法。,3.3.1 用case语句描述半加器(3-16),3.3.1 用case语句描述半加器(3-16),case语句属于顺序语句,因此必须放在进程中使用;case语句的一般表述是:case is when=;when=;w

23、hen others=;end case;注意事项:选择值必须在表达式的取值范围内;选择值不能重复;一般需加others;,3.3.1 用case语句描述半加器(3-16),signal select:std_logic_vector(1 downto 0);select so so so so NULL;end case;,3.3.1 用case语句描述半加器(3-16),关于并置操作符:&并置操作符的作用是:将操作数或数组合并起来形成新的数组。可以是这种方式:0&1,其结果是“01”;也可以是这种方式:VH&DL,其结果是“VHDL”;还可以是这种方式:select=a&b,其结果是sel

24、ect(1)=a、select(0)=b;并置后的数据位数是并置前所有数据位数之和,3.3.2 用元件例化语句实现全加器的设计(3-18),library ieee;use ieee.std_logic_1164.all;entity f_adder isport(ain,bin,cin:in std_logic;cout,sum:out std_logic);end;,3.3.2 用元件例化语句实现全加器的设计(3-18),architecture one of f_adder isbegin实现语句;end;,architecture one of f_adder iscomponent

25、h_adder isport(a,b:in std_logic;so,co:out std_logic);end component;component or2a isport(a,b:in std_logic;c:out std_logic);end component;begin实现语句;end;,3.3.2 用元件例化语句实现全加器的设计(3-18),architecture one of f_adder iscomponent h_adder isport(a,b:in std_logic;so,co:out std_logic);end component;component or2a isport(a,b:in std_logic;c:out std_logic);end component;signal d,e,f:std_logic;,3.3.2 用元件例化语句实现全加器的设计(3-18),beginu1: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;,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号