vhdl设计初步(新模版)【课件】_第1页
vhdl设计初步(新模版)【课件】_第2页
vhdl设计初步(新模版)【课件】_第3页
vhdl设计初步(新模版)【课件】_第4页
vhdl设计初步(新模版)【课件】_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安电子科技大学数字电路与系统设计数字电路与系统设计eda实验实验vhdl设计初步设计初步主讲:徐少莹主讲:徐少莹电子工程学院电子工程学院email:西安电子科技大学数字电路与系统设计数字电路与系统设计eda实验实验u硬件描述语言硬件描述语言(vhdl or veriloghdl) (10学时)学时)ueda设计工具软件及实验设计工具软件及实验 (10学时学时)u综合设计实验综合设计实验 (10学时学时)西安电子科技大学国家电工电子教学基地西安电子科技大学国家电工电子教学基地西安电子科技大学第第1部分部分 vhdl设计初步设计初步数字电路与系统设计数字电路与系统设计eda实验实验西安电子科技大

2、学vhdl历史回顾历史回顾 vhdl 语言是美国国防部语言是美国国防部(dod)在在 20 世纪世纪 80 年代初为实现其高速年代初为实现其高速集成电路计划集成电路计划(vhsicvery high speed integrated circuit)而提出而提出的一种的一种(hdlhardware description language),以,以作为各合同商之间提交复杂电路设计文档的一种标准方案,作为各合同商之间提交复杂电路设计文档的一种标准方案,vhdl的含义为的含义为。 1987年被采纳为年被采纳为ieee 1076标准(标准(vhdl87)。)。 1993年被更新为年被更新为ieee

3、1164标准(标准(vhdl93)。)。西安电子科技大学vhdlvhsic hardware description language hdl 的出现是为了适应电子系统设计的日益复杂性。的出现是为了适应电子系统设计的日益复杂性。若以计算机软件的设计与电路设计做个类比:若以计算机软件的设计与电路设计做个类比: 机器码机器码好比好比晶体管晶体管/mos管管; 汇编语言汇编语言好比好比电路网表电路网表; hdl语言语言就如同就如同高级语言高级语言。西安电子科技大学几种常用的几种常用的hdl语言:语言: 功能强,规范性好;功能强,规范性好; 功能强、灵活性高;功能强、灵活性高; 属于较低级的硬件描述语

4、属于较低级的硬件描述语言;言; altera公司开发,语法简公司开发,语法简单,但不通用。单,但不通用。 vhdlvhsic hardware description language西安电子科技大学 vhdl在语法和风格上类似于现代高级编程语言。在语法和风格上类似于现代高级编程语言。但要注意,但要注意,vhdl毕竟描述的是毕竟描述的是硬件硬件,它包含许多硬,它包含许多硬件特有的结构。件特有的结构。描述特点是描述特点是 :描述的特点是:描述的特点是:vhdlvhsic hardware description language西安电子科技大学vhdl与计算机语言的区别与计算机语言的区别l 计算

5、机语言是在计算机语言是在cpuram构建的平台上运行构建的平台上运行l vhdl设计的结果是由具体的逻辑、触发器组成的数字电路设计的结果是由具体的逻辑、触发器组成的数字电路(使用使用quartus 软件编程,最终下载入可编程逻辑器件中实现一个数字系统)软件编程,最终下载入可编程逻辑器件中实现一个数字系统)l计算机语言基本上以计算机语言基本上以串行串行的方式执行的方式执行lvhdl在总体上是以在总体上是以并行并行方式工作方式工作l计算机语言主要关注于计算机语言主要关注于变量值变量值的变化的变化lvhdl要实现严格的要实现严格的时序逻辑时序逻辑关系关系西安电子科技大学数字电路与系统设计数字电路与系

6、统设计回顾回顾组合逻辑电路组合逻辑电路时序逻辑电路时序逻辑电路分析分析设计设计真值表真值表分析分析设计设计输入输入/输出输出抽象抽象(实体)(实体)电路功能电路功能实现实现(结构体)(结构体)entityarchitecture与、或、非与、或、非与非、或非与非、或非异或、同或异或、同或rs触发器触发器d触发器触发器t触发器触发器jk触发器触发器西安电子科技大学主要内容安排主要内容安排1 多路选择器的多路选择器的vhdl描述描述2 时序电路的时序电路的vhdl描述描述3 更复杂电路的更复杂电路的vhdl描述描述5 vhdl设计练习设计练习4 有限状态机(状态转移图)设计有限状态机(状态转移图)

7、设计西安电子科技大学1 多路选择器的多路选择器的vhdl描述描述例例1.1 2选选1多路选择器的多路选择器的vhdl描述描述 2选选1mux输入输入/输出输出端口端口(实体(实体entity) abymux21s电路功能电路功能实现实现(结构体(结构体architecture)?西安电子科技大学例例1.1 2选选1多路选择器的多路选择器的1 多路选择器的多路选择器的vhdl描述描述abymux21sentity is port (a, b : in bit ; s : in bit ; y : out bit ) ; end entity ; 西安电子科技大学entity mux21 is p

8、ort ( a, b : in bit; s : in bit; y : out bit );end entity mux21;architecture one of mux21 is begin y = a when s = 0 else b ;end architecture one ; 例例1.1 2选选1多路选择器的多路选择器的abymux21ss=0s=1abys1 多路选择器的多路选择器的vhdl描述描述西安电子科技大学例例1.1 2选选1多路选择器的多路选择器的architecture one of mux21 is signal d,e : bit; -d,e 为内部信号为内部

9、信号begin d = a and (not s) ; e = b and s ; y = d or e ;end architecture one ; abymux21s1 多路选择器的多路选择器的vhdl描述描述西安电子科技大学例例1.1 2选选1多路选择器的多路选择器的1 多路选择器的多路选择器的vhdl描述描述y = (a and (not s) or ( b and s) ; architecture behave of mux21 isbeginend behave;y = as+bsabymux21s说明:以上说明:以上三种结构体三种结构体描述都是描述都是西安电子科技大学例例1.

10、1 2选选1多路选择器的多路选择器的1 多路选择器的多路选择器的vhdl描述描述s=0s=1abysabymux21s architecture one of mux21 isbegin (a,b,s) if s = 0 then y = a ; else y = b ; end if; end architecture one ; -a,b,s 为敏感信号表为敏感信号表西安电子科技大学2选选1多路选择器功能时序波形多路选择器功能时序波形 例例1.1 2选选1多路选择器的多路选择器的1 多路选择器的多路选择器的vhdl描述描述西安电子科技大学1.1 实体表达(实体表达(entity) 1 多路

11、选择器的多路选择器的vhdl描述描述例例1.1vhdl描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明entity 实体名实体名 is generic (类属表);(类属表); port (端口表);(端口表);end entity 实体名;实体名; 实体在电路中主要是说明该电路的输入、输出关实体在电路中主要是说明该电路的输入、输出关系,更具体地说就是用来定义实体与外部的连接关系系,更具体地说就是用来定义实体与外部的连接关系以及需传送给实体的参数。以及需传送给实体的参数。entity 实体名实体名 is generic (类属表类属表);); port (端口表端口表);)

12、;end entity 实体名;实体名;(1)类属表:用于指定参数的大小、实体中子元件的数目)类属表:用于指定参数的大小、实体中子元件的数目及实体的定时特性等,用以将信息参数传递到实体。及实体的定时特性等,用以将信息参数传递到实体。(2)端口表:指明实体的输入、输出信号及其模式、数据)端口表:指明实体的输入、输出信号及其模式、数据类型。类型。port (端口名:端口模式端口名:端口模式 数据类型;数据类型; 端口名:端口模式端口名:端口模式 数据类型数据类型 );英文字母英文字母+ +数字数字数据流动方向数据流动方向主要有主要有“位位”和和“位矢量位矢量”两类两类设计者自己命名的名称(文件名)

13、设计者自己命名的名称(文件名)例如:例如:mux21的端口描述的端口描述增加以下语句增加以下语句:generic (m: time:=1ns)类属参数说明语句,它定类属参数说明语句,它定义了延时时间为义了延时时间为1ns 注意注意 简单地说简单地说方向定义方向定义含义含义in输入,定义的通道为单向输入模式输入,定义的通道为单向输入模式 out输出,输出,定义的通道为单向输出模式定义的通道为单向输出模式 inout双向,定义的通道确定为输入输出双向端口双向,定义的通道确定为输入输出双向端口 buffer缓冲端口,其功能与缓冲端口,其功能与inout类似类似 常用端口模式:常用端口模式:例:例:e

14、ntity is port (a, b, : in ; s : in ; y : out ) ; end entity ; vhdl中任何一种数据对象(信号、变量、常数)必须严中任何一种数据对象(信号、变量、常数)必须严格限定其取值范围。格限定其取值范围。 vhdl 中一个对象只能有一种类型,施加于该对象的操中一个对象只能有一种类型,施加于该对象的操作必须与该类型相匹配。作必须与该类型相匹配。 常用数据类型有:常用数据类型有:bit,bit_vector,std_logic,std_logic_vector,integer,boolean等(参考书上等(参考书上p260表表10.3.1)西安电

15、子科技大学1.2 结构体表达(结构体表达(architecture) 1 多路选择器的多路选择器的vhdl描述描述architecture 结构体名结构体名 of 实体名实体名 is 定义语句定义语句 内部信号,常数,数据类型,函数等定义;内部信号,常数,数据类型,函数等定义;begin 功能描述语句功能描述语句;end architecture 结构体名;结构体名;它是该结构体的唯一名称。它是该结构体的唯一名称。“of”后面紧跟的实体名表明了该结构体所对应的是后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用哪一个实体。用 “is”来结束结构体的命名。来结束结构体的命名。architec

16、ture of 实体名实体名 is 内部信号,常数,数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;begin ;end architecture 结构体名;结构体名;位于位于“architecture”和和“begin”之之间。用于对结构体内部所使用的信号、常数、数据类型和函间。用于对结构体内部所使用的信号、常数、数据类型和函数等进行定义。如:数等进行定义。如:architecture of 实体名实体名 is 内部信号,常数,数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;begin ;end architecture 结构体名;结构体名;cont:std_

17、logic_vector(3downto0);co_1:std_logic;m:time:=2 ns;(init,dad,adc,srf,frf);(枚举类型);(枚举类型) 处于处于“begin”和和“end”之间。之间。具体描述了结构体的行为及其连接关系。具体描述了结构体的行为及其连接关系。architecture of 实体名实体名 is 内部信号,常数,数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;begin ;end architecture 结构体名;结构体名;(behavioral) 结构体的行为描述表示输入与输出间转换的关系,是结构体的行为描述表示输入与输出间

18、转换的关系,是对设计实体按算法的路径来进行描述的。行为描述在对设计实体按算法的路径来进行描述的。行为描述在 eda 工程中称为高层次描述或高级描述。工程中称为高层次描述或高级描述。看例题!看例题!如图所示的如图所示的半加器半加器,其功能,其功能真值表已经给出,写出它的真值表已经给出,写出它的行为行为描述描述。半加器半加器abcsabcs0000000011111110半加器真值表半加器真值表:abcs0000000011111110半加器半加器abcs (entity部分省略)部分省略) architecture alg_ha of half_adder is begin process (a

19、 , b) begin if a=0 and b=0 then c=0 ; s=0 elsif a=1 and b=1 then c=1 ; s=0; else c=0 ; s=1; end if; end process; end alg_ha; 高层次的功能描高层次的功能描述,不必考虑在述,不必考虑在电路中到底是怎电路中到底是怎样实现的。样实现的。(dataflow) 它反映了从输入数据到输出数据之间所发生的逻辑它反映了从输入数据到输出数据之间所发生的逻辑变换,或者说描述了数据流程的运动路径、运动方向和运变换,或者说描述了数据流程的运动路径、运动方向和运动结果。动结果。(structura

20、l) 结构化描述给出了实体内部结构、所包含的模块或结构化描述给出了实体内部结构、所包含的模块或元件间互连关系;与实体外部引线的对应关系。元件间互连关系;与实体外部引线的对应关系。练习:练习: 试用上面的两种方法描述半加器的功能。试用上面的两种方法描述半加器的功能。半加器半加器abcs西安电子科技大学结构体中三种描述方式的比较结构体中三种描述方式的比较布尔函数定义明布尔函数定义明白白连接关系清晰,连接关系清晰,电路模块化清晰电路模块化清晰 优优 点点小门数设计小门数设计不易描述复杂电路,不易描述复杂电路,修改不易修改不易数据流描述数据流描述电路层次化设计电路层次化设计电路不易理解、繁琐、电路不易

21、理解、繁琐、复杂复杂结构化描述结构化描述 适用场合适用场合 缺缺 点点描述方式描述方式电路特性清楚明电路特性清楚明了了大型复杂的电路模大型复杂的电路模块设计块设计进行综合效率相对较进行综合效率相对较低低行为描述行为描述西安电子科技大学 信号赋值符信号赋值符 “=” 表达式中的等号表达式中的等号“=”没有没有赋值的含义,只是一种数据赋值的含义,只是一种数据比较符号。比较符号。 1.3 赋值符号和数据比较符号赋值符号和数据比较符号 1 多路选择器的多路选择器的vhdl描述描述例例1.1vhdl描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明 architecture one o

22、f mux21 isbegin process (a,b,s) begin if s 0 then y a ; else y b ; end if; end process;end architecture one ; 西安电子科技大学1.4 逻辑操作符逻辑操作符 1 多路选择器的多路选择器的vhdl描述描述例例1.1vhdl描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明y = (a ( s) (b s) ; architecture behave of mux21 isbeginend behave; vhdl共有共有7种基本逻辑操作符:种基本逻辑操作符: 要求数据类型

23、:要求数据类型: bit boolean std_logic西安电子科技大学architecture one of mux21 is begin y = a s = 0 b ;end architecture one ; 1.5 when_else条件信号赋值语句条件信号赋值语句 1 多路选择器的多路选择器的vhdl描述描述例例1.1vhdl描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明赋值目标赋值目标 = 表达式表达式 when 赋值条件赋值条件 else 表达式表达式 when 赋值条件赋值条件 else 表达式表达式 ; 西安电子科技大学在在vhdl中,所有的中,所

24、有的,如,如“if_then_else_end if”,都必须放在由都必须放在由“processend process”引导的进程结构中。引导的进程结构中。 在一个结构体(在一个结构体(architecture)中可以包含任意个进程语句,)中可以包含任意个进程语句,所有的进程语句都是所有的进程语句都是,而进程,而进程process引导的内部语句结构引导的内部语句结构属于属于。1.4 进程语句和顺序语句进程语句和顺序语句 1 多路选择器的多路选择器的vhdl描述描述例例1.1vhdl描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明西安电子科技大学1 小结小结在在2选选1的的v

25、hdl描述中出现的语言现象归纳:描述中出现的语言现象归纳:实体:实体: entity结构体:结构体:architecture端口定义:端口定义: port( )端口模式:端口模式:in/out/inout数据类型:数据类型:bit、std_logic信号赋值符:信号赋值符:=条件比较符:条件比较符:=逻辑操作符:逻辑操作符:andif条件语句:条件语句:ifend if并行条件语句:并行条件语句:whenelse进程语句:进程语句:processend process顺序语句:顺序语句:由进程语句引导由进程语句引导并行语句:简单赋值语句并行语句:简单赋值语句 when.else语句语句 wit

26、h .select语句语句西安电子科技大学补充 with . select 语句 用with . select语句描述2选1多路选择器entity is port (a, b : in std_logic; s : in std_logic; y : out std_logic); end ; architecture one of mux21 isbegin with s select y = a when 0; b when others ;end one ; 西安电子科技大学2 时序电路的时序电路的vhdl描述描述例例2.1 d触发器的触发器的vhdl描述描述 最简单、最具有代表性的时序

27、电路是最简单、最具有代表性的时序电路是d触发器。触发器。(实体(实体entity) 电路功能描述电路功能描述(结构体(结构体architecture)?dclkqdff1entity dff1 is - 端口声明端口声明 port (clk, d : in ; q : out );end entity dff1;architecture bhv of dff1 is -结构体描述结构体描述 q1 : std_logic ; -类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点begin process (clk) - 进程进程 begin if then q1 = d

28、 ; end if; end process ; q = q1 ; -将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号)end architecture bhv; 例例2.1 d触发器的触发器的vhdl描述描述 vhdl电路描述与设电路描述与设计平台和硬件实现对象计平台和硬件实现对象 (组组合或时序逻辑合或时序逻辑) 无关。无关。dclkqdff1例例2.1中中d触发器的触发器的vhdl描述的语言现象说明描述的语言现象说明 2.1 完整完整vhdl程序程序基本构成基本构成vhdl设计设计vhdl文件文件库和程序包库和程序包 声明在设计或实体中将用到的

29、常数,数据类型,元件声明在设计或实体中将用到的常数,数据类型,元件及子程序等及子程序等实体(实体(entities) 声明到其实体及其设声明到其实体及其设计的接口,即定义本设计的接口,即定义本设计的输入计的输入/出端口出端口结构体结构体(architectures) 定义了实体的实现。即定义了实体的实现。即电路功能的具体描述电路功能的具体描述西安电子科技大学 定义了一组数据类型说明、常量说明、元件说明和子定义了一组数据类型说明、常量说明、元件说明和子程序说明。以供其它多个设计实体引用。程序说明。以供其它多个设计实体引用。 是专门存放预先编译好的程序包的地方,这样它们就可以在是专门存放预先编译好

30、的程序包的地方,这样它们就可以在其它设计中被调用。其它设计中被调用。 就是为了使一组类型说明,常量说明和子程就是为了使一组类型说明,常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构。它序说明对多个设计实体都成为可见的而提供的一种结构。它们如同们如同c语言中的语言中的*.h文件,定义了一些类型说明,函数一文件,定义了一些类型说明,函数一样。样。西安电子科技大学 例如:例如: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ieee是是ieee标准库的标志名,两个标准库的标志名,两

31、个use语句使得以下设计语句使得以下设计可使用程序包可使用程序包std_logic_1164, std_logic_unsigned中所有预定义的中所有预定义的内容,如内容,如std_logic,in,out的定义等。的定义等。格式:格式: library ; use .all; (使用关键字使用关键字“all”表明需要包含整个包)表明需要包含整个包)西安电子科技大学西安电子科技大学 type bit is(0,1); 即即bit数据类型仅可取值数据类型仅可取值0或或1; type std_logic is (u,x,0,1,z,w,l,h,-); 工业标准逻辑类型,取值工业标准逻辑类型,取值

32、u,x,0,1,z, w, l, h和和- 2.2 标准逻辑位数据类型标准逻辑位数据类型std_logic entity is - 端口声明端口声明 port (clk, d : in ; q : out );end entity ;entity is port (a, b, : in ; s : in ; y : out ); end entity ; u-初始值,初始值,x-不定值,不定值,z-高阻,高阻,w-弱信号不定,弱信号不定,l-弱信号弱信号0,h-弱信号弱信号1,-任意取值任意取值西安电子科技大学2.3 信号定义和数据对象信号定义和数据对象 信号的使用和定义范围是实体、结构体和程

33、序包,信号的使用和定义范围是实体、结构体和程序包,在进程和子在进程和子程序的顺序语句中不允许定义信号。程序的顺序语句中不允许定义信号。(只有信号才能把进程外的信(只有信号才能把进程外的信息带入进程内部,或将进程内的信息带出进程)息带入进程内部,或将进程内的信息带出进程)西安电子科技大学2.3 信号定义和数据对象信号定义和数据对象 在在vhdl中,变量是一个局部量,作为临时的数据存储单元,中,变量是一个局部量,作为临时的数据存储单元,只能在进程和子程序的顺序语句中使用只能在进程和子程序的顺序语句中使用。变量定义中的初始值仅对。变量定义中的初始值仅对仿真有效,实际的综合器并不支持设置初始值。仿真有

34、效,实际的综合器并不支持设置初始值。西安电子科技大学2.3 信号定义和数据对象信号定义和数据对象 常量的定义主要是为了程序更容易阅读和修改。在所有的常量的定义主要是为了程序更容易阅读和修改。在所有的vhdl结构中都可以定义常量,如实体、结构体、程序包、进程和结构中都可以定义常量,如实体、结构体、程序包、进程和子程序等。常量是一个恒定不变的值。子程序等。常量是一个恒定不变的值。西安电子科技大学2.4 上升沿检测表上升沿检测表达达式和信号属性函数式和信号属性函数event process (clk) - 进程进程 begin if then q1 = d ; end if; end process

35、 ;边沿检测语句边沿检测语句2.5 不完整条件语句与时序电路不完整条件语句与时序电路 entity dff1 is - dff 端口声明端口声明 port (clk, d : in ; q : out );end entity dff1;architecture bhv of dff1 is q1 : std_logic ; begin process (clk) - 进程进程 begin if then q1 = d ; end if; end process ; q = q1 ; end architecture bhv; clkevent and clk = 1yesnoq1 = d ;

36、 ? architecture one of mux21 isbegin process (a,b,s) begin if s = 0 then y = a ; else y = b ; end if; end process;end architecture one ; -a,b,s 为敏感信号表为敏感信号表s=0yesnoy = a;y b1 then q1 = 1 ; elsif a1 b1 then q1 b1 then q1 = 1 ; else q1 = 0 ; end if; end process ;end ;例例b:eda软件综合结果软件综合结果西安电子科技大学2.6 实现时

37、序电路的实现时序电路的vhdl不同表述不同表述 entity dff1 is - dff 端口声明端口声明 port (clk, d : in ; q : out );end entity dff1;architecture bhv of dff1 is q1 : std_logic ; begin process (clk) - 进程进程 begin if then q1 = d ; end if; end process ; q = q1 ; end architecture bhv; .process (clk) begin if then q = d ; -确保确保clk的变化是一次上

38、升沿的跳变的变化是一次上升沿的跳变 end if; end process ; .process (clk)begin - 同上同上 if then q = d ; end if; end process ; 2.6 实现时序电路的实现时序电路的vhdl不同表述不同表述 library ieee ; ;entity dff3 is port (clk,d : in std_logic ; q : out std_logic ); end ; architecture bhv of dff3 is signal q1 : std_logic; begin process (clk) begin

39、if then q1 = d ; end if; end process ; q = q1 ; end ; 西安电子科技大学.process begin clk = 1 ; q = d ;end process; 2.6 实现时序电路的实现时序电路的vhdl不同表述不同表述 西安电子科技大学.process ()begin if then q = d ; end if; end process ; 上升沿触发上升沿触发dff的仿真波形:的仿真波形:2.6 实现时序电路的实现时序电路的vhdl不同表述不同表述 西安电子科技大学.process (, ) begin if then q 0); -

40、计数器复位(高有效)计数器复位(高有效) elsif (clkevent and clk = 1) then -检测时钟上升沿检测时钟上升沿 if (en=1) then -检测是否允许计数(不完全条件语句)检测是否允许计数(不完全条件语句) if cqi 9 then cqi :=cqi+1; -允许计数,且计数允许计数,且计数0); -计数状态计数状态=9,下一状态清零,下一状态清零 end if; end if; end if; if cqi = 9 then co = 1; -计数状态计数状态=9,输出进位信号,输出进位信号 else co =0; end if; qcnt 0); -

41、计数器复位(高有效)计数器复位(高有效) elsif (clkevent and clk = 1) then -检测时钟上升沿检测时钟上升沿 if (en=1) then -检测是否允许计数(不完全条件语句)检测是否允许计数(不完全条件语句) if cqi 9 then cqi :=cqi+1; -允许计数,且计数允许计数,且计数0); -计数状态计数状态=9,下一状态清零,下一状态清零 end if; end if; end if; if cqi = 9 then co = 1; -计数状态计数状态=9,输出进位信号,输出进位信号 else co =0; end if; qcnt = cqi

42、; -将计数值输出到端口将计数值输出到端口 end process;end behave;10进制计数器时序波形仿真结果进制计数器时序波形仿真结果西安电子科技大学variable cqi : std_logic_vector(3 downto 0) ; signal d1 : std_logic_vector(4 downto 0); variable a1 : std_logic_vector(15 downto 0); . d1 0); a1 := (others=0) ; 西安电子科技大学3.3 不同工作方式的时序电路设计不同工作方式的时序电路设计 library ieee;use ie

43、ee.std_logic_1164.all;entity shifter is- port( clk, load : in std_logic; din : in std_logic_vector(7 downto 0); qb : out std_logic);end entity shifter;architecture behave of shifter is -begin process (clk,load) variable reg8 : std_logic_vector(7 downto 0); begin if clkevent and clk = 1 then if load=

44、1 then reg8 :=din; -由(由(load=1)装载新数据)装载新数据 else reg8(6 downto 0) :=reg8 (7 downto 1); end if; end if; qb = reg8(0) ; - 串行输出最低位串行输出最低位 end process; end architecture behave;移位寄存器时序波形仿真结果移位寄存器时序波形仿真结果西安电子科技大学3.4 1位二进制全加器的位二进制全加器的vhdl描述描述 1位二进制全加器引脚图位二进制全加器引脚图1位二进制全加器实现原理图位二进制全加器实现原理图1位二进制位二进制半加器半加器西安电子

45、科技大学3.4.1 半加器的半加器的vhdl描述描述 1001010110001100cosoba半加器真值表半加器真值表 coasobnotxnor2and2半加器电路图半加器电路图3.4 1位二进制全加器的位二进制全加器的vhdl描述描述 so=?co=?-半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法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_ad

46、der; architecture fh1 of h_adder is begin so = not (a xor (not b) ; co = a and b ; end architecture fh1; 3.4.1 半加器的半加器的vhdl描述描述 -半加器描述半加器描述(2):真值表描述方法(:真值表描述方法(1) -这里省略库和实体声明部分这里省略库和实体声明部分architecture fh1 of h_adder is abc : std_logic_vector(1 downto 0) ; begin process (abc) begin case abc is - when

47、 00 so=0; co=0 ; when 01 so=1; co=0 ; when 10 so=1; co=0 ; when 11 so=0; co=1 ; when others null ; end case; end process; end architecture fh1 ; vhdl描述中的描述中的基本结构与语法基本结构与语法:vhdl运算符运算符 &:连接运算符:连接运算符 &连接,将两个对象或矢量连接成维数更大连接,将两个对象或矢量连接成维数更大的矢量的矢量, 它可给代码书写带来方便。它可给代码书写带来方便。 例如,为表达例如,为表达a=1 and b=0 a

48、nd c=1概念概念,可定义一个变量:,可定义一个变量: vabc=a & b & c;则可用;则可用 vabc=“101”表达上述内容。表达上述内容。-半加器描述半加器描述(3):真值表描述方法(:真值表描述方法(2) -这里省略库和实体声明部分这里省略库和实体声明部分architecture fh1 of h_adder is begin abc cso cso cso cso null ; -或或“00” end case; end process;end fh1;西安电子科技大学-“或门或门”逻辑描述逻辑描述library ieee ; use ieee.std_log

49、ic_1164.all; -库、函数包调用库、函数包调用entity or2a is -实体声明实体声明 port (a, b : in std_logic; c : out std_logic );end entity or2a;architecture one of or2a is -结构体描述结构体描述 begin end architecture one ; 3.4.2 “或门或门”逻辑的逻辑的vhdl描述描述 3.4.3 1位二进制全加器的位二进制全加器的vhdl描述描述 library ieee;use ieee.std_logic_1164.all;entity f_adder

50、is -实体实体f_adder描述描述 port (ain,bin,cin: in std_logic; cout,sum:out std_logic); end f_adder;architecture fd1 of f_adder is -结构体描述结构体描述 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 ar

51、chitecture fd1;vhdl描述中的描述中的基本结构与语法基本结构与语法:std_logic_vector std_logic 在使用在使用std_logic_vector中,必须注明其数组宽中,必须注明其数组宽度,即位宽,如:度,即位宽,如: b : out std_logic_vector ; signal a :std_logic_vector ; b = 01100011 ; - b(7)为为 0 b(4 downto 1) = “0001 ; - b(4)为为 0 b(7 downto 4) = a ; - b(6)等于等于 a(2) signal a : std_logi

52、c_vector (3 downto 0) ;signal d : std_logic_vector (1 downto 0) ;. a 连接端口名,连接端口名,.); u1:h_adder port map(a=ain, b=bin, co=d, so=e);西安电子科技大学1、状态机分类:、状态机分类:按输出按输出方式分方式分mealy型型moore型型输出仅为当前状态的函输出仅为当前状态的函数数输出是当前状态和输入输出是当前状态和输入的函数的函数按结按结构分构分单单 进进 程程多多 进进 程程主进程和辅进程合一主进程和辅进程合一分时序、组合主进程,分时序、组合主进程,辅助进程辅助进程4

53、有限状态机设计有限状态机设计 4.1 一般有限状态机的设计一般有限状态机的设计 时序电路可以称为有限状态机时序电路可以称为有限状态机(finite state machine, fsm),以此命名的原,以此命名的原因是可以使用有限数量的状态表示时序电路的功能行为。因是可以使用有限数量的状态表示时序电路的功能行为。西安电子科技大学按状态按状态表达分表达分符号状态机符号状态机确定编码状态机确定编码状态机s0,s1,s2,000,001,010, 按编码按编码方式分方式分顺序编码顺序编码一位热码一位热码二进制顺序编码等二进制顺序编码等00001,00010,00100, 其它编码其它编码格雷码,循环

54、码,等格雷码,循环码,等4 有限状态机设计有限状态机设计西安电子科技大学2、用户自定义数据类型、用户自定义数据类型4 有限状态机设计有限状态机设计4.1 一般有限状态机的设计一般有限状态机的设计type 数据类型名数据类型名 is 数据类型定义;数据类型定义;例如:例如:type m_state is (st0,st1,st2,st3,st4,st5);signal present_state,next_state : m_state;西安电子科技大学3、一般状态机的设计、一般状态机的设计a、说明部分、说明部分例如:例如: signal current_state,next_state : m

55、_state; architecture beh of s_machine is type m_state is (st0,st1,st2,st3,st4,st5);4 有限状态机设计有限状态机设计4.1 一般有限状态机的设计一般有限状态机的设计b、主控时序进程、主控时序进程 该部分是在该部分是在clk控制下,进行状态转换控制下,进行状态转换: current_state = next_state ;c、主控组合进程、主控组合进程 该部分是确定该部分是确定current_state,next_state的取值,的取值,为时序进程提供参数;进行状态转换条件的判定;进为时序进程提供参数;进行状态转

56、换条件的判定;进行输出判定。行输出判定。d、辅助进程、辅助进程 该部分是配合主控时序进程或主控组合进程,完该部分是配合主控时序进程或主控组合进程,完成某种成某种算法算法、输出输出数据锁存数据锁存等。等。西安电子科技大学rsts0/5s2/12s3/14s1/80000elseelseelse1111else state_inputsstate/outputclkresetstate inputs24comb_outputs状态机4 有限状态机设计有限状态机设计4.2 双进程双进程moore型有限状态机的设计型有限状态机的设计library ieee; use ieee.std_logic_11

57、64.all;entity s_machine is port ( clk, reset : in std_logic; state_inputs : in std_logic_vector(0 to 1); comb_outputs : out integer range 0 to 15); end s_machine; architecture behv of s_machine is clkresetstate inputs24comb_outputs状态机beginreg: process (reset, clk)begin if reset =1 then current_state

58、 = s0;elsif (clkevent and clk =1 ) then current_state comb_outputs = 5; if state_inputs =“00” then next_state = s0; else next_state comb_outputs = 8; if state_inputs =“00” then next_state = s1;else next_state comb_outputs = 12; if state_inputs =“11” then next_state = s0;else next_state comb_outputs

59、= 14; if state_inputs =“11” then next_state = s3;else next_state = s0; end if;end process;end behv;rsts0/5s2/12s3/14s1/80000elseelseelse1111else西安电子科技大学mealy型型输出是当前状态和输入的函数输出是当前状态和输入的函数例:例: “1110”序列序列检测器设计检测器设计0/11/01/0sa1/00/00/00/0sbscsdx/z1/04 有限状态机设计有限状态机设计4.3 mealy型有限状态机的设计型有限状态机的设计library ieee

60、;use ieee.std_logic_1164.all;entity statem is port ( clk : in std_logic; x,reset : in std_logic; z: out std_logic );end statem;0/11/01/0sa1/00/00/00/0sbscsdx/z1/0例:例: “1110”序列检测器设计序列检测器设计architecture behave of statem istype state_type is (sa, sb, sc,sd);signal state: state_type;begin process (clk,reset) begin if r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论