精华VHDL设计初步新模版

收藏

编号:171475054    类型:共享资源    大小:1,007.50KB    格式:PPT    上传时间:2022-11-27
10
积分
关 键 词:
精华 VHDL 设计 初步 模版
资源描述:
西安电子科技大学数字电路与系统设计数字电路与系统设计EDA实验实验VHDL设计初步设计初步主讲:徐少莹电子工程学院Email:西安电子科技大学数字电路与系统设计EDA实验内容安排:电子工程学院必修课()硬件描述语言(VHDL or VerilogHDL)(10学时)EDA设计工具软件及实验 (10学时)综合设计实验 (10学时)西安电子科技大学国家电工电子教学基地西安电子科技大学第1部分 VHDL设计初步数字电路与系统设计EDA实验西安电子科技大学VHDL历史回顾 VHDL 语言是美国国防部(DOD)在 20 世纪 80 年代初为实现其高速集成电路计划(VHSICVery High Speed Integrated Circuit)而提出的一种硬件描述语言(HDLHardware Description Language),以作为各合同商之间提交复杂电路设计文档的一种标准方案,VHDL的含义为超高速集成电路硬件描述语言。1987年被采纳为IEEE 1076标准(VHDL87)。1993年被更新为IEEE 1164标准(VHDL93)。西安电子科技大学VHDLVHSIC Hardware Description Language HDL 的出现是为了适应电子系统设计的日益复杂性。若以计算机软件的设计与电路设计做个类比:机器码好比晶体管/MOS管;汇编语言好比电路网表;HDL语言就如同高级语言。西安电子科技大学几种常用的HDL语言:(1)VHDL硬件描述语言:功能强,规范性好;(2)VerilogHDL硬件描述语言:功能强、灵活性高;(3)ABEL硬件描述语言:属于较低级的硬件描述语言;(4)AHDL硬件描述语言:Altera公司开发,语法简单,但不通用。其中:VHDL和VerilogHDL已成为IEEE标准。VHDLVHSIC Hardware Description Language西安电子科技大学 VHDL在语法和风格上类似于现代高级编程语言。但要注意,VHDL毕竟描述的是硬件,它包含许多硬件特有的结构。HDL是用文字化方法描述电子电路与系统。计算机语言描述特点是:顺序性HDL语言描述的特点是:并行性VHDLVHSIC Hardware Description Language西安电子科技大学VHDL与计算机语言的区别运行的基础 计算机语言是在CPURAM构建的平台上运行 VHDL设计的结果是由具体的逻辑、触发器组成的数字电路(使用Quartus 软件编程,最终下载入可编程逻辑器件中实现一个数字系统)执行方式计算机语言基本上以串行的方式执行VHDL在总体上是以并行方式工作验证方式计算机语言主要关注于变量值的变化VHDL要实现严格的时序逻辑关系西安电子科技大学数字电路与系统设计回顾组合逻辑电路时序逻辑电路分析设计真值表分析设计输入输入/输出输出抽象抽象(实体)(实体)电路功能电路功能实现实现(结构体)(结构体)EntityArchitecture与、或、非与非、或非异或、同或RS触发器D触发器T触发器JK触发器西安电子科技大学主要内容安排1 多路选择器的VHDL描述2 时序电路的VHDL描述3 更复杂电路的VHDL描述5 VHDL设计练习4 有限状态机(状态转移图)设计西安电子科技大学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引导,以END(ENTITY)xxx结尾的语句部分,称为实体。描述电路的外部情况及接口性质。西安电子科技大学ENTITY mux21 IS PORT(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多路选择器的结构体描述1(行为描述)abymux21sS=0S=1abyS说明:以关键字ARCHITECTURE引导,以END(ARCHITECTURE)xxx结尾的语句部分,称为结构体。描述电路的内部逻辑功能或电路结构。1 多路选择器的多路选择器的VHDL描述描述西安电子科技大学例1.1 2选1多路选择器的结构体描述2(原理图描述)ARCHITECTURE one OF mux21 IS SIGNAL d,e:BIT;-d,e 为内部信号为内部信号BEGIN d=a AND(NOT S);e=b AND s;y=d OR e ;END ARCHITECTURE one;abymux21s1 多路选择器的多路选择器的VHDL描述描述西安电子科技大学例1.1 2选1多路选择器的结构体描述3(布尔方程描述)1 多路选择器的VHDL描述y=(a AND(NOT s)OR(b AND s);ARCHITECTURE behave OF mux21 ISBEGINEND behave;y=as+bsabymux21s说明:以上三种结构体描述都是并行语句西安电子科技大学例1.1 2选1多路选择器的结构体描述4(进程描述)1 多路选择器的VHDL描述S=0S=1abySabymux21s 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 为敏感信号表西安电子科技大学2选1多路选择器功能时序波形 例1.1 2选1多路选择器的EDA软件仿真结果1 多路选择器的VHDL描述西安电子科技大学1.1 实体表达(ENTITY)1 多路选择器的VHDL描述例1.1VHDL描述中出现的相关语句结构和语法说明ENTITY 实体名 IS GENERIC (类属表);PORT (端口表);END ENTITY 实体名;实体在电路中主要是说明该电路的输入、输出关系,更具体地说就是用来定义实体与外部的连接关系以及需传送给实体的参数。ENTITY 实体名 IS GENERIC (类属表);PORT (端口表);END ENTITY 实体名;(1)类属表:用于指定参数的大小、实体中子元件的数目及实体的定时特性等,用以将信息参数传递到实体。(2)端口表:指明实体的输入、输出信号及其模式、数据类型。PORT (端口名:端口模式 数据类型;端口名:端口模式 数据类型 );英文字母+数字数据流动方向主要有“位”和“位矢量”两类设计者自己命名的名称(文件名)例如:mux21的端口描述增加以下语句:generic(m:time:=1ns)类属参数说明语句,它定义了延时时间为1ns 注意 简单地说 In 不可以出现在赋值符号(=或:=)的左边 out不可以出现在赋值符号(=或:=)的右边 buffer可以出现在赋值符号(=或:=)的两边In 信号只能被引用,不能被赋值out 信号只能被赋值,不能被引用buffer 信号可以被引用,也可以被赋值方向定义方向定义含义含义IN输入,定义的通道为单向输入模式输入,定义的通道为单向输入模式 OUT输出,输出,定义的通道为单向输出模式定义的通道为单向输出模式 INOUT双向,定义的通道确定为输入输出双向端口双向,定义的通道确定为输入输出双向端口 BUFFER缓冲端口,其功能与缓冲端口,其功能与INOUT类似类似 常用端口模式:常用端口模式:例:ENTITY 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)西安电子科技大学1.2 结构体表达(ARCHITECTURE)1 多路选择器的VHDL描述ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等定义;BEGIN 功能描述语句;END ARCHITECTURE 结构体名;以关键字ARCHITECTURE引导,以END(ARCHITECTURE)xxx结尾的语句部分,称为结构体。描述电路的内部逻辑功能或电路结构。结构体名称的命令:它是该结构体的唯一名称。“OF”后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用“IS”来结束结构体的命名。ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句;END ARCHITECTURE 结构体名;定义语句:位于“ARCHITECTURE”和“BEGIN”之间。用于对结构体内部所使用的信号、常数、数据类型和函数等进行定义。如:ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句;END ARCHITECTURE 结构体名;SIGNALcont:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALco_1:STD_LOGIC;CONSTANTm:TIME:=2 ns;TYPESTATEIS(INIT,DAD,ADC,SRF,FRF);(枚举类型)功能描述语句:处于“BEGIN”和“END”之间。具体描述了结构体的行为及其连接关系。ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句;END ARCHITECTURE 结构体名;结构体功能可以用三种方式进行描述,即:行为描述、数据流描述、结构描述。.结构体的行为描述(behavioral)结构体的行为描述表示输入与输出间转换的关系,是对设计实体按算法的路径来进行描述的。行为描述在 EDA 工程中称为高层次描述或高级描述。看例题!例:如图所示的半加器,其功能真值表已经给出,写出它的行为描述。半加器半加器abcsabcs0000000011111110 半加器真值表:abcs0000000011111110半加器半加器abcs (ENTITY部分省略)ARCHITECTURE alg_ha OF half_adder IS BEGIN PROCESS(a,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)它反映了从输入数据到输出数据之间所发生的逻辑变换,或者说描述了数据流程的运动路径、运动方向和运动结果。.结构体的结构化描述(structural)结构化描述给出了实体内部结构、所包含的模块或元件间互连关系;与实体外部引线的对应关系。练习:试用上面的两种方法描述半加器的功能。半加器半加器abcs西安电子科技大学结构体中三种描述方式的比较布尔函数定义明白连接关系清晰,电路模块化清晰 优 点小门数设计不易描述复杂电路,修改不易数据流描述电路层次化设计电路不易理解、繁琐、复杂结构化描述 适用场合 缺 点描述方式电路特性清楚明了大型复杂的电路模块设计进行综合效率相对较低行为描述西安电子科技大学 信号赋值符 “=”表达式中的等号“=”没有赋值的含义,只是一种数据比较符号。1.3 赋值符号和数据比较符号 1 多路选择器的VHDL描述例1.1VHDL描述中出现的相关语句结构和语法说明 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;西安电子科技大学1.4 逻辑操作符 1 多路选择器的VHDL描述例1.1VHDL描述中出现的相关语句结构和语法说明y=(a (s)(b s);ARCHITECTURE behave OF mux21 ISBEGINEND behave;VHDL共有7种基本逻辑操作符:AND(与)、OR(或)、NOT(取反)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)要求数据类型:BIT BOOLEAN STD_LOGIC西安电子科技大学ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTURE one;1.5 WHEN_ELSE条件信号赋值语句 1 多路选择器的VHDL描述例1.1VHDL描述中出现的相关语句结构和语法说明赋值目标=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE 表达式;西安电子科技大学在VHDL中,所有的顺序语句,如“IF_THEN_ELSE_END IF”,都必须放在由“PROCESSEND PROCESS”引导的进程结构中。在一个结构体(ARCHITECTURE)中可以包含任意个进程语句,所有的进程语句都是并行语句,而进程PROCESS引导的内部语句结构属于顺序语句。1.4 进程语句和顺序语句 1 多路选择器的VHDL描述例1.1VHDL描述中出现的相关语句结构和语法说明西安电子科技大学1 小结在2选1的VHDL描述中出现的语言现象归纳:实体:Entity结构体:Architecture端口定义:Port()端口模式:In/Out/Inout数据类型:Bit、Std_Logic信号赋值符:=条件比较符:=逻辑操作符:ANDIF条件语句:IFEND IF并行条件语句:WHENELSE进程语句:ProcessEnd Process顺序语句:由进程语句引导并行语句:简单赋值语句 when.else语句 with.select语句西安电子科技大学补充 WITH.SELECT 语句 用WITH.SELECT语句描述2选1多路选择器ENTITY mux21 IS PORT (a,b :IN STD_LOGIC;S :IN STD_LOGIC;y :OUT STD_LOGIC);END mux21;ARCHITECTURE one OF mux21 ISBEGIN WITH s SELECT y=a WHEN 0;b WHEN OTHERS;END one;西安电子科技大学2 时序电路的VHDL描述例2.1 D触发器的VHDL描述 最简单、最具有代表性的时序电路是D触发器。对D触发器的描述包含了VHDL对时序电路的最基本和典型的表达方式,也包含了VHDL中许多最具特色的语言现象。(实体Entity)电路功能描述(结构体Architecture)?DCLKQDFF1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS -端口声明 PORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS -结构体描述 SIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGIN PROCESS(CLK)-进程 BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出(双横线-是注释符号)END ARCHITECTURE bhv;例2.1 D触发器的VHDL描述 VHDL电路描述与设计平台和硬件实现对象(组合或时序逻辑)无关。DCLKQDFF1例2.1中D触发器的VHDL描述的语言现象说明 2.1 完整VHDL程序基本构成VHDL设计设计VHDL文件文件库和程序包库和程序包 声明在设计或实体中将用到的常数,数据类型,元件声明在设计或实体中将用到的常数,数据类型,元件及子程序等及子程序等实体(实体(Entities)声明到其实体及其设声明到其实体及其设计的接口,即定义本设计的接口,即定义本设计的输入计的输入/出端口出端口结构体结构体(Architectures)定义了实体的实现。即定义了实体的实现。即电路功能的具体描述电路功能的具体描述西安电子科技大学库(Library)和程序包(Package)程序包:定义了一组数据类型说明、常量说明、元件说明和子程序说明。以供其它多个设计实体引用。库:是专门存放预先编译好的程序包的地方,这样它们就可以在其它设计中被调用。库/程序包就是为了使一组类型说明,常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构。它们如同C语言中的*.h文件,定义了一些类型说明,函数一样。西安电子科技大学 例如:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;IEEE是IEEE标准库的标志名,两个USE语句使得以下设计可使用程序包std_logic_1164,std_logic_unsigned中所有预定义的内容,如std_logic,in,out的定义等。格式:LIBRARY ;USE .ALL;库(Library)和程序包(Package)西安电子科技大学常用标准库std和ieee库中的程序包库(Library)和程序包(Package)西安电子科技大学BIT数据类型定义:TYPE BIT IS(0,1);即BIT数据类型仅可取值0或1;STD_LOGIC数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);工业标准逻辑类型,取值U,X,0,1,Z,W,L,H和-2.2 标准逻辑位数据类型STD_LOGIC ENTITY DFF1 IS -端口声明 PORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY DFF1;ENTITY mux21 IS PORT (a,b,:IN BIT;S :IN BIT;y:OUT BIT);END ENTITY mux21;西安电子科技大学ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN2.3 信号定义和数据对象 信号(Signal):信号的使用和定义范围是实体、结构体和程序包,在进程和子程序的顺序语句中不允许定义信号。(只有信号才能把进程外的信息带入进程内部,或将进程内的信息带出进程)SIGNAL 信号名:数据类型:=初始值;信号赋值语句:目标信号名=表达式;西安电子科技大学VARIABLE 变量名:数据类型:=初始值;变量赋值语句:目标变量名:=表达式;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN2.3 信号定义和数据对象 变量(Variable):在VHDL中,变量是一个局部量,作为临时的数据存储单元,只能在进程和子程序的顺序语句中使用。变量定义中的初始值仅对仿真有效,实际的综合器并不支持设置初始值。西安电子科技大学CONSTANT 常量名:数据类型:=表达式;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN2.3 信号定义和数据对象 常量(Constant):常量的定义主要是为了程序更容易阅读和修改。在所有的VHDL结构中都可以定义常量,如实体、结构体、程序包、进程和子程序等。常量是一个恒定不变的值。西安电子科技大学 EVENT (CLKEVENT表示 CLK信号发生变化)2.4 上升沿检测表达式和信号属性函数EVENT PROCESS(CLK)-进程 BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;边沿检测语句用信号属性函数EVENT来测定某信号的跳变边沿,即2.5 不完整条件语句与时序电路 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS -DFF 端口声明 PORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(CLK)-进程 BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;END ARCHITECTURE bhv;IF语句中没有利用ELSE明确指出当IF语句不满足条件时如何操作,即不完整条件语句。IF语句表示:CLKEVENT AND CLK=1YesNoQ1=D;?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 为敏感信号表为敏感信号表 完整的条件语句只能构成组合逻辑电路。IF语句表示: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 实现时序电路的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;CLK信号定义为STD_LOGIC数据类型,有9种取值,该描述并不能保证CLK是从“0”到“1”的上升沿跳变。.PROCESS(CLK)BEGIN IF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保CLK的变化是一次上升沿的跳变 END IF;END PROCESS;.PROCESS(CLK)BEGIN -同上 IF CLK=1 AND CLKLAST_VALUE=0 THEN Q=D;END IF;END PROCESS;2.6 实现时序电路的VHDL不同表述 CLKLAST_VALUE=0为真,表示CLK在变化之前时刻为0。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;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 IF rising_edge(CLK)THEN Q1=D;END IF;END PROCESS;Q=Q1;END;Rising_edge()是IEEE库中STD_LOGIC_1164标准程序包内预定义的函数,该函数只能用于标准逻辑位数据类型STD_LOGIC的信号。因此,在实体前必须打开STD_LOGIC_1164程序包。西安电子科技大学.PROCESS BEGIN wait until CLK=1;Q=D;END PROCESS;当进程中使用wait语句后,就不必列出敏感信号表。2.6 实现时序电路的VHDL不同表述 西安电子科技大学.PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;END IF;END PROCESS;将CLK放入敏感信号表中,CLK边沿的检测由PROCESS和IF语句结合实现。注:D信号并没有在敏感表中。上升沿触发DFF的仿真波形:2.6 实现时序电路的VHDL不同表述 西安电子科技大学.PROCESS(CLK,D)BEGIN IF CLK=1 THEN Q=D;END IF;END PROCESS;电平触发DFF,即在CLK为高电平1时,输出Q随D的变化而变化,而CLK为0时输出保持不变。注:D信号在敏感表中。电平触发DFF的仿真波形:2.6 实现时序电路的VHDL不同表述 西安电子科技大学2 小结VHDL 库:Library语句,包括IEEE库、标准库STD、工作库Work等;程 序 包:USE语句,如Std_logic_1164程序包、Standard程序包等;数据类型:Std_logic,定义值中包括0、1、Z和X等共9种取值;数据对象:信号Signal、变量Variable、常量Constant;信号属性:信号属性函数EVENT、LAST_VALUE;时钟检测:上升沿检测Clkevent AND Clk=1、Rising_edge()。时序电路:不完整条件语句产生时序电路。西安电子科技大学3 更复杂电路的VHDL描述CLKQn 时序电路中,一般计数器的输入/输出信号包括:?EntityArchitecture电路设计3.1 计数器的VHDL描述ENTITY CNT4 IS PORT(CLK:IN BIT;Q :BUFFER INTEGER range 15 downto 0 );END CNT4;ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1;END IF;END PROCESS;END bhv;【例1】:4位二进制加法计数器注意:(1)Q的端口模式为BUFFER;(2)Q的数据类型为INTEGER。注意CLKQn?ENTITY CNT4 IS PORT(CLK:IN BIT;Q :BUFFER INTEGER range 15 downto 0 );END CNT4;ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1;-如何理解?END IF;END PROCESS;END bhv;【例1】:4位二进制加法计数器注意注意:在使用整数时,VHDL综合器要求必须使用“Range”限定范围,否则无法综合。西安电子科技大学 VHDL中规定,算术操作符“+”、“-”的数据类型(除特殊说明,如重载函数)只能是整型“INTEGER”。1 十进制整数十进制整数35 十进制整数十进制整数10E3 十进制整数十进制整数16#D9#十六进制整数十六进制整数8#562#八进制整数八进制整数2#11001001#二进制整数二进制整数整数的表达不加引号,而逻辑位的数据必须加引号,如1、0、“101”。整数(Integer)类型VHDL中整数常量的书写方式:西安电子科技大学3.2 计数器设计的其他表述方法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-运算符重载ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY CNT4;ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;-“+”运算符重载 END IF;END PROCESS;Q=Q1;END ARCHITECTURE bhv;西安电子科技大学3.2 计数器设计的其他表述方法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-运算符重载ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY CNT4;ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;-“+”运算符重载 END IF;END PROCESS;Q=Q1;END ARCHITECTURE bhv;EDA软件综合结果软件综合结果组合电路加组合电路加1逻辑逻辑4位二进制位二进制锁存器锁存器输出反输出反馈馈锁存时锁存时钟钟西安电子科技大学3.2 计数器设计的其他表述方法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-运算符重载ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY CNT4;ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;-“+”运算符重载 END IF;END PROCESS;Q 0);-计数器复位(高有效)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);-计数器复位(高有效)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 X)SIGNAL d1 :STD_LOGIC_VECTOR(4 DOWNTO 0);VARIABLE a1:STD_LOGIC_VECTOR(15 DOWNTO 0);.d1 0);a1:=(OTHERS=0);相关语法说明西安电子科技大学3.3 不同工作方式的时序电路设计 例3.3.2:设计一个带有并行输入置数,串行输出的移位寄存器。library ieee;use ieee.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=1 THEN reg8:=din;-由(LOAD=1)装载新数据 ELSE -load=0,移位操作 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位二进制半加器西安电子科技大学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_adder;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 SIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc so=0;co so=1;co so=1;co so=0;co NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;VHDL描述中的基本结构与语法:VHDL运算符&:连接运算符&连接,将两个对象或矢量连接成维数更大的矢量,它可给代码书写带来方便。例如,为表达a=1 and b=0 and c=1概念,可定义一个变量:vabc=a&b&c;则可用 vabc=“101”表达上述内容。-半加器描述(3):真值表描述方法(2)-这里省略库和实体声明部分ARCHITECTURE fh1 OF h_adder IS SIGNAL abc,cso :std_logic_vector(1 downto 0);BEGIN abc =a&b;co=cso(1);so cso cso cso cso null;-或“00”END CASE;END PROCESS;END fh1;西安电子科技大学-“或门”逻辑描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-库、函数包调用ENTITY or2a IS -实体声明 PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS -结构体描述 BEGIN c 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 ARCHITECTURE fd1;(1)CASE语句 CASE IS When =;.;;When =;.;;.WHEN OTHERS=;END CASE;VHDL描述中的基本结构与语法:STD_LOGIC_VECTOR STD_LOGIC 在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如:B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL A:STD_LOGIC_VECTOR(1 TO 4);B=01100011;-B(7)为 0 B(4 DOWNTO 1)=“0001;-B(4)为 0 B(7 DOWNTO 4)=A;-B(6)等于 A(2)(2)标准逻辑矢量数据类型 SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a 连接端口名,.);(4)元件声明及例化语句U1:h_adder PORT MAP(a=ain,b=bin,co=d,so=e);西安电子科技大学1、状态机分类:按输出方式分Mealy型Moore型输出仅为当前状态的函数输出是当前状态和输入的函数按结构分单 进 程多 进 程主进程和辅进程合一分时序、组合主进程,辅助进程4 有限状态机设计 4.1 一般有限状态机的设计 时序电路可以称为有限状态机(Finite State Machine,FSM),以此命名的原因是可以使用有限数量的状态表示时序电路的功能行为。西安电子科技大学按状态表达分符号状态机确定编码状态机S0,S1,S2,000,001,010,按编码方式分顺序编码一位热码二进制顺序编码等00001,00010,00100,其它编码格雷码,循环码,等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_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的取值,为时序进程提供参数;进行状态转换条件的判定;进行输出判定。d、辅助进程 该部分是配合主控时序进程或主控组合进程,完成某种算法、输出数据锁存等。西安电子科技大学RSTS0/5S2/12S3/14S1/80000elseelseelse1111else State_inputsState/outputclkresetState inputs24Comb_outputs状态机4 有限状态机设计4.2 双进程Moore型有限状态机的设计Library ieee;Use ieee.std_logic_1164.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=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=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;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 reset=1 THEN state IF x=1 THEN state=sb;ELSE state IF x=1 THEN state=sc;ELSE state IF x=1 THEN state=sd;ELSE state IF x=1 THEN state=sd;ELSE state=sa;END IF;END CASE;END IF;-reset END PROCESS;z=1 when state=sd and x=0 else 0;END ARCHITECTURE behave;0/11/01/0sa1/00/00/00/0sbscsdx/z1/0 2006 Altera Corporation97Finite State Machine(FSM)-State DiagramRESETnw=1Tap1select=0first=1Idlenxt=0first=0Tap2select=1first=0Tap3select=2Tap4select=3nxt=1nw=1nw=0Inputs:reset nwOutputs:select first nxt 2006 Altera Corporation98Writing VHDL Code for FSMn To Determine Next State Transition/Logic:-Use a CASE Statement Inside IF-THEN Statement That Checks for the Clock ConditionlRemember:State Machines Are Implemented Using Registersn To Determine State Machine Outputs:-Use Conditional and/or Selected Signal Assignments-Or Use a Second Case Statement to Determine the State Machine Outputs 2006 Altera Corporation99FSM VHDL Code-Enumerated Data TypeRESETnw=1Tap1select=0first=1Idlenxt=0first=0Tap2select=1first=0Tap3select=2Tap4select=3nxt=1nw=1nw=0Enumerated Data TypeLIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;USE IEEE.std_logic_arith.all;ENTITY state_m2 ISPORT(clk,reset,nw:in std_logic;sel:out std_logic_vector(1 downto 0);nxt,first:out std_logic);END state_m2;ARCHITECTURE logic OF state_m2 ISTYPE state_type IS (idle,tap1,tap2,tap3,tap4);SIGNAL filter:state_type;Inputs:reset nwOutputs:select first nxt 2006 Altera Corporation100FSM VHDL Code-Next State LogicRESETnw=1Tap1select=0first=1Idlenxt=0first=0Tap2select=1first=0Tap3select=2Tap4select=3nxt=1nw=1nw=0BEGINPROCESS(reset,clk)BEGINIF reset=1 THENfilter IF nw=1 THENfilter filter filter filter IF nw=1 THENfilter=tap1;ELSEfilter=idle;END IF;END CASE;END IF;END PROCESS;2006 Altera Corporation101FSM VHDL Code-Outputsnxt=1 WHEN filter=tap4 ELSE 0;first=1 WHEN filter=tap1 ELSE 0;WITH filter SELECT sel nxt=0;first sel=00;first sel=01;first sel sel=11;nxt=1;END CASE;END PROCESS output;END logic;RESETnw=1Tap1select=0first=1Idlenxt=0first=0Tap2select=1first=0Tap3select=2Tap4select=3nxt=1nw=1nw=0西安电子科技大学习习 题题 (Ex-1)画出下例实体描述对应的原理图符号元件:ENTITY buf3s IS -实体1:三态缓冲器 PORT(input:IN STD_LOGIC;-输入端 enable:IN STD_LOGIC;-使能端 output:OUT STD_LOGIC);-输出端END buf3x;ENTITY mux21 IS -实体2:2选1多路选择器 PORT(in0,in1,sel:IN STD_LOGIC;output:OUT STD_LOGIC);END ENTITY mux21;西安电子科技大学(Ex-2)图中所示的是4选1多路选择器,试分别用IF_THEN语句和WITH.SELECT语句的表达方式写出此电路的
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:精华VHDL设计初步新模版
链接地址:https://www.zhuangpeitu.com/article/171475054.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!