FPGA设计与VHDL实现 课件 第6-8章 VHDL基本语句、VHDL设计进阶、VHDL有限状态机设计_第1页
FPGA设计与VHDL实现 课件 第6-8章 VHDL基本语句、VHDL设计进阶、VHDL有限状态机设计_第2页
FPGA设计与VHDL实现 课件 第6-8章 VHDL基本语句、VHDL设计进阶、VHDL有限状态机设计_第3页
FPGA设计与VHDL实现 课件 第6-8章 VHDL基本语句、VHDL设计进阶、VHDL有限状态机设计_第4页
FPGA设计与VHDL实现 课件 第6-8章 VHDL基本语句、VHDL设计进阶、VHDL有限状态机设计_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

FPGA设计与VHDL实现VHDL基本语句第六章英特尔FPGA中国创新中心系列丛书普通高等教育”十三五”规划教材01顺序语句顺序语句赋值语句赋值语句根据其应用的场合可分为两种类型:一种是应用于进程和子程序内部的赋值语句,这时它是一种顺序语句,称为顺序赋值语句;另一种是应用于进程和子程序外部的信号赋值语句,这时它是一种并行语句,因此称为并行信号赋值语句。每种赋值语句都由三个部分组成,即赋值目标、赋值符号和赋值源。1顺序语句赋值语句赋值目标是赋值的受体,它的基本元素只能是信号或变量,但表现形式可以有多种,如文字、标识符、数组等。1顺序语句IF语句与其他软件编程语言(如C语言)相类似,VHDL中的IF语句也是一种具有条件控制功能的语句,它根据给出的条件来决定需要执行程序中的哪些语句。2顺序语句IF语句IF语句的格式有如下4种。1.非完整性IF语句当程序执行到IF语句时,如果IF语句中的条件成立,程序执行T印3-N后面的顺序语句;否则程序将跳出IF语句,转而去执行其他语句。实际上,这种形式的IF语句是一种非完整IF语句。2顺序语句IF语句2.二重选择的IF语句首先判断条件是否成立,如果IF语句中的条件成立,那么程序会执行顺序语句I;否则程序执行顺序语句2。3.具有多重选择的IF语句在VHDL中,具有多重选择的IF语句常用来描述具有多个选择分支的逻辑功能电路。2顺序语句IF语句4.IF语句的嵌套IF语句可以嵌套,多用于描述具有复杂控制功能的逻辑电路。2顺序语句CASE语句在VHDL中,CASE语句是另外一种形式的条件控制语句,它与1F语句一样可以用来描述具有控制功能的数字电路。一般来说,CASE语句是根据表达式的值从不同的顺序处理语句序列中选取其中的一组语句来进行操作,它常用来描述总线、编码器、译码器或者数据选择器等数字逻辑电路。3顺序语句CASE语句当执行到CASE语句时,如果条件表达式的值等于选择值I,程序就执行顺序语句1;如果条件表达式的值等于选择值2,程序就执行顺序语句2;依次类推,如果条件表达式的值与前面的n-1个选择值都不同,则程序就执行"WHENOTHERS"语句中的“顺序语句n"3顺序语句LOOP语句LOOP语句与其他高级语言中的循环语句相似,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。LOOP语句有三种格式。4顺序语句LOOP语句1.简单LOOP语句2.FORLOOP语句3.WHILELOOP语句4顺序语句NEXT与EXIT语句1.NEXT语句NEXT语句主要用于在LOOP语句中进行转向控制。其格式分以下三种。(1)无条件终止当前循环,跳回到本次循环LOOP语句开始处,开始下次循环。(2)无条件终止当前1盾环,跳转到指定标号的LOOP语句开始处,重新执行循环操作。(3)当条件表达式的值为TRUE,则执行NEXT语句,进入跳转操作,否则继续向下执行。5顺序语句NEXT与EXIT语句2.EXIT语句EXIT语句与NEXT语句类似,也是一种循环控制语句,用于在LOOP语句中控制循环转向。502并行语句并行语句并行信号赋值语句并行信号赋值语句是应用于结构体中进程和子程序之外的一种基本信号赋值语句,它与信号赋值语句的语法结构是完全相同的。作为一种并行描述语句,结构体中的多条并行信号赋值语句是并行执行的,它们的执行顺序与书写顺序无关。1并行语句并行信号赋值语句并行信号赋值语句有3种形式:简单信号赋值语句;条件信号赋值语句;选择信号赋值语句。1并行语句进程语句在VHDL中,进程语句(PROCESS)是使用最为频繁、应用最为广泛的一种语句,因此学握进程语句对于编写VHDL程序来说十分重要。一个结构体可以包含多个进程语句。2并行语句块语句块(BLOCK)是VHDL程序中又一种常用的子结构形式,可看成是结构体的子模块。采一用块语句描述系统,是一种结构化的描述方法。块语句可以使结构体层次分明,结构清晰。3并行语句块语句块语句具有如下特点:1.块内的语句是并发执行的,其综合结果与语句的书写顺序无关。2.在结构体内,可以有多个块结构,块在结构体内是并发运行的。3并行语句元件例化语句在VHDL程序中可以直接将已经设计好的电路模块,封装为“元件”,然后在新的设计实体中调用该元件,构成层次化的设计。元件可以是设计好的VHDL源文件,也可以是用别的硬件描述语言,如Verilog设计的模块,还可以是IP核、LPM宏功能模块、EDA设计软件中的嵌入式核等功能单元。元件的定义与调用必须用元件例化语句完成。元件例化语句由元件定义语句和元件例化(或元件调用)两部分组成。4并行语句生成语句GENERATE生成语句是一种可以建立重复结构或者是在模块的多个表示形式之间进行选择的语句。由于生成语句可以用来产生或复制多个相同的结构,因此使用生成语句可避免重复书写多段相同的VHDL程序。生成语句的格式有如下两种形式:5并行语句生成语句1.FORGENERATE语句2.IFGENERATE语句IFGENERATE语句与1F语句的区别在于,IFGENERATE语句没有类似于1F语句的ELSE或ELSIF分支语句。5并行语句并行过程调用语句当在进程内部调用过程语句时,调用语句相当于是一种顺序语句;当在结构体的进程之外调用过程时,它作为并行语句的形式出现。作为并行过程调用语句,在结构体中它们是并行执行的,其执行顺序与书写顺序无关。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。603属性说明与定义语句属性说明与定义语句数据类型属性数据类型属性如下:T'BASE-数据类型T的基本类型。T'LEFT-左限值。T'RIGHT-右限值。THIGH—上限值。T'LOW-下限值。1属性说明与定义语句数组属性数组属性如下:A'LEFT一数组A的左边界。A'RIGHT-—数组A的右边界。A'HIGH上边界。A'LOW-—下边界。A'RANGE—范围。2属性说明与定义语句信号属性signal'EVENT:如果在当前极小的一段时间间隔内,siganl上发生了一个事件,则函数返回真"(TRUE),否则就返回“假"(FALSE)。signal'STABLE[(T)]:T时间内是否发生事件(发生为FALSE,不发生为TRUE)。signal'ACTIVE:若在当前仿真周期中,信号siganl上有一个活跃(任何事务),则signal'ACTIVE返回“真“,否则返回“假“。3属性说明与定义语句信号属性信号类属性中最常用的是EVENT属性,'EVENT属性的值为布尔型,如果有事件发生在该属性所附着的信号上(即信号有变化),则其取值为TRUE,否则为FALSE。3属性说明与定义语句信号属性仿真时,如果要严格地表示时钟的上升沿(即从0到1的变化),而排除x-1等状态变化。3感谢观看,再见!FPGA设计与VHDL实现英特尔FPGA中国创新中心系列丛书普通高等教育”十三五”规划教材FPGA设计与VHDL实现VHDL设计进阶第七章英特尔FPGA中国创新中心系列丛书普通高等教育”十三五”规划教材01行为描述行为描述所谓行为描述,就是对设计实体的数学模型的描述,其抽象程度远高于结构描述方式。行为描述类似于高级缩程语言,当描述一个设计实体的行为时,无须知道具体电路的结构,只需要描述清楚输入与输出信号的行为,而无须花费精力关注设计结构的具体实现。行为描述采用行为描述方式时应注意下面几点:用行为描述方式设计电路,可以降低设计难度。行为描述只需表示输入与输出之间的关系,不需要包含任何结构方面的信息。设计者只需写出源程序,而电路的实现由EDA软件自动完成,实现电路的优化程度,往往取决于综合软件的技术水平和器件的支持能力。在电路的规模较大或者需要描述复杂的逻辑关系时,应首先考虑用行为描述方式进行设计,如果设计的结果不能满足资源占有率的要求,则应改变描述方式。02数据流描述数据流描述用数据流方式设计电路与用传统的逻辑方程设计电路很相似。显见,f=ab+cd和f<=(aANDb)OR(cANDd)是很相似的。它们的差别仅在于描述逻辑运算的逻辑符号及表达方式略有不同。数据流描述亦表示行为,但含有结构信息,如进程间的通信等,通常用并行语句进行描述。数据流描述设计中只要有了布尔代数表达式就很容易将它转换为VHDL的数据流表达式。转换方法是用VHDL中的逻辑运算符置换布尔逻辑运算符即可。例如,用OR置换"+",用"<="置换"="。103结构描述数据流描述用结构描述设计1位全加器首先定义两种元件:半加器和2输入或门,然后一通过调用这两种元件(元件例化)构成1位全加器,再调用1位全加器进步构成4位加法器和8位加法器。1.半加器设计2.1位全加器设计104三态逻辑设计三态逻辑设计在数字系统中,经常要用到三态逻辑电路,如果一个I/0引脚既要作为输入,同时要作为输出,则必然需要用到三态门。05分频器设计分频器设计在实际应用中,我们经常会遇到这样的问题,需要进行奇数次分频,同时又要得到占空比是50%的方波波形。如果是偶数次分频,得到占空比是50%的方波波形并不困难,比如进行2N次分频,只需在计数到N-1C从0开始计)时,波形翻转即可;或者在最后一级加一个2分频器也可实现。如果是奇数次分频,可采用如下方法:用两个计数器,一个由输入时钟上升沿触发,另个由输入时钟下降沿触发,最后将两个计数器的输出相或,即可得到占空比为50%的方波波形。占空比为50%的奇数分频1分频器设计半整数分频器的设计思想是:实现2.5分频,可先设计一个模3计数器,再做一个脉冲扣除电路,加在模3计数器之后,每来3个脉冲就扣除半个脉冲,即可实现分频系数为2.5的半整数分频。半整数分频2分频器设计数控分频器的功能就是当输入端给定不同输入数据时,对输入的时钟信号有不同的分频比,数控分频器要求信号发生器输出的正负脉宽是可调的,用户可以通过预置一特定数值来获得所需要的高电平和低电平待续时间以及占空比。这种信号发生器在实际中具有很重要的用途,如PWM(PulseWidthModulation,脉宽调制)的设计等。数控分频器306用锁相环IP核实现倍频和相移用锁相环IP核实现倍频和相移1.altpll锁相环IP模块多数FPGA内部都集成有锁相环(PhaseLockedLoop,PLL),用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、移相等,其精度般在ps的数量级。2.altpll模块的定制3.altpll模块的例化4.编译和仿真占空比为50%的奇数分频1感谢观看,再见!FPGA设计与VHDL实现英特尔FPGA中国创新中心系列丛书普通高等教育”十三五”规划教材FPGA设计与VHDL实现VHDL有限状态机设计第八章英特尔FPGA中国创新中心系列丛书普通高等教育”十三五”规划教材01有限状态机有限状态机有限状态机的描述根据输出信号产生方法的不同,状态机可以分为两类:米里型(Mealy)和摩尔型(Moore)。摩尔型状态机的输出只是当前状态的函数,米里型状态机的输出则是当前状态和当前输入的函数。米里型状态机的输出是在输入变化后立即变化的,不依赖时钟信号的同步,摩尔型状态机的输入发生变化时还需要等待时钟的到来,必须等状态发生变化时才导致输出的变化,因此比米里型状态机要多等待个时钟周期。1有限状态机有限状态机的描述实用的状态机一般都设计为同步时序方式,它在时钟信号的触发下,完成各个状态之间的转换,并产生相应的输出。状态机有三种表示方法:状态图(StateDiagram)、状态表(StateTable)和流程图,这三种表示方法是等价的,相互之间可以转换。1有限状态机枚举数据类型计数器是一种较为特殊的状态机,其各个状态的编码一般是设定的,或者称为直接编码形式。在VHDL中,为了便于阅读、编译和优化,可采用文字符号来表征状态机中的状态,将状态的数据类型定义为枚举类型。202有限状态机的描述方式有限状态机的描述方式三进程表述方式"101"序列检测器的状态转换图,共有4个状态:s0、s1、s2、s3,分别用几种方式对其描述。首先介绍三进程描述方式。1有限状态机的描述方式三进程表述方式1有限状态机的描述方式三进程表述方式1有限状态机的描述方式三进程表述方式1有限状态机的描述方式双进程表述方式2有限状态机的描述方式双进程表述方式2有限状态机的描述方式双进程表述方式2有限状态机的描述方式双进程表述方式2有限状态机的描述方式单进程表述方式也可以采用单进程描述方式,将有限状态机的现态、次态和输出逻辑(CS+NS+OL)放在一个进程中进行描述。3有限状态机的描述方式单进程表述方式303状态编码状态编码常用的编码方式常用的编码方式有顺序编码、格雷编码和一位热码编码等。采用One-Hot编码,虽然多用了触发器,但可以有效节省和简化译码电路。对于FPGA器件来说,采用1位热码编码可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。因此,对于FPGA器件,建议采用该编码方式。1状态编码用ATTRIBUTE指定编码方式可以采用ATTRIBUTE语句来指定编码方式,比如下面的语句使用ATTRIBUTE语句将state信号的编码方式定义为gray方式。采用ATTRIBUTE语句定义的编码方式包括:2状态编码用ATTRIBUTE指定编码方式多数的综合软件可以设置编码方式,如在QuartusPrime软件中,选择菜单Assignments--­Settings,在出现的页面的Category栏中选CompilerSettings选项,单击AdvancedSettings(Synthesis)..按钮,在出现的对话框的StateMachineProcessing栏中选择需要的编码方式,可选的编码方式有Auto、Gray、Johnson、MinimalBits、One-Hot、Sequential、User-Encoded等几种。2状态编码用常量进行编码在采用符号化的状态定义的状态机设计中,综合器在综合时,会自动为每个状态进行编码,为每个状态选择一组二进制码字。例8.10采用One-Hot编码方式对例8.5的"101"序列检侧器进行了改写,程序中采用了常数定义的形式直接对sO~s3四个状态做了One-Hot编码。3状态编码用常量进行编码3状态编码用常量进行编码304有限状态机设计要点有限状态机设计要点起始状态的选择和复位1.起始状态的选择起始状态是指电路复位后所处的状态,选择一个合理的起始状态将使整个系统简洁、高效。状态机般都应设计为同步方式,并由一个时钟信号来触发。实用的状态机都应该设计为由唯一时钟边沿触发的同步运行方式。时钟信号和复

温馨提示

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

评论

0/150

提交评论