资源预览内容
第1页 / 共88页
第2页 / 共88页
第3页 / 共88页
第4页 / 共88页
第5页 / 共88页
第6页 / 共88页
第7页 / 共88页
第8页 / 共88页
第9页 / 共88页
第10页 / 共88页
亲,该文档总共88页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
EDA技术实用教程,第3章 VHDL设计初步,教学内容:,3.1 组合电路的VHDL描述 3.2 基本时序电路的VHDL描述 3.3 计数器的VHDL设计 3.4 实用计数器的VHDL设计,教学要求:,通过对VHDL电路示例分析学习,了解用VHDL表达和设计电路的方法,理解VHDL语言现象和语句规则的特点。,VHDL的优点,*易于设计复杂的、多层次的设计。支持设计库和设计的重复使用 *与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。 *有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。 *更方便地向ASIC过渡 *VHDL有良好的可读性,容易理解。,VHDL与计算机语言的区别,*运行的基础 计算机语言是在CPURAM构建的平台上运行 VHDL设计的结果是由具体的逻辑、触发器组成的数字电路 *执行方式 计算机语言基本上以串行的方式执行 VHDL在总体上是以并行方式工作 *验证方式 计算机语言主要关注于变量值的变化 VHDL要实现严格的时序逻辑关系,3.1 组合电路的VHDL描述,3.1.1 2选1多路选择器及其VHDL描述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 ;,【例3-1】 2选1多路选择器,s = 0 y = a s = 1 y =b,3.1.1 2选1多路选择器及其VHDL描述1,2选1多路选择器,s = 0 y = a s = 1 y =b,(1) 以关键词ENTITY引导,END ENTITY 结尾的语句部分,称为实体。,mux21a实体,2选1多路选择器的VHDL描述,功能:描述设计模块的输入/输出信号或引脚,并给出设计模块与外界的接口。 实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口。 port: *在层次化设计时,Port为模块之间的接口 *在芯片级,则代表具体芯片的管脚,(2) 以关键词ARCHITECTURE引导,END ARCHITECTURE 结尾的语句部分,称为结构体。,图3-2 mux21a结构体,功能:通过若干顺序语句和并行语句来描述设计实体的逻辑功能(行为描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之间的关系。 一个设计实体可以有多个结构体 结构体有三种描述方式 *行为描述(behavioral): 高层次的功能描述,不必考虑在电路中到底是怎样实现的。 *数据流描述(dataflow): 描述输入信号经过怎样的变换得到输出信号 *结构化描述(structural): 类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一对应的关系,一般用于大规模电路的层次化设计时。,设计实体:,一个完整的、可综合的VHDL程序设计构建,VHDL程序设计基本结构:,结构体三种描述方式的比较,1. 实体表达 描述电路器件端口构成、端口类型(信号流动方向和方式)和信号属性,【例】 ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name;,VHDL相关语法说明,语法格式 entity 实体名 is port()端口说明; end entity 实体名 ;,注意:关键词,2. 实体名,3.端口语句PORT和端口信号名,实体名实际上是器件名,最好根据相应的电路功能确定;实体名必须与文件名相同,否则无法编译;实体名不能用工具库中定义好的元件名;实体名不能用中文,也不能用数字开头。,端口语句(port)说明:以port为引导,并在语句结尾处加分号“;” port (端口信号名:端口模式 数据类型名 :=初始值;);,4. 端口模式,“IN”、“OUT”、“INOUT”、“BUFFER”,输入(In):从外部输入至实体;单向端口; 输出(Out):从实体输出至外部;单向端口; 双向(Inout):可以从外部输入至实体;也可以从实体输出至外部;双向端口;可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口; 缓冲(Buffer):可以从实体输出至外部;也可以从端口回读该输出值至实体;不可以从外部输入至实体;单向端口(伪双向端口);允许该管脚名作为一些逻辑的输入信号。,VHDL语言中数据对象(信号、变量、常数)被赋予的类型规定取值范围和数值类型,即对传输或存储数据的类型作明确的界定。 如Integer(整型)、Bit(位型)等; *VHDL - 强类型语言 *预定义类型 vs. 自定义类型:-数据类型的分类 已在VHDL标准中预先定义,可直接使用 ,如Integer, Real, Bit等; 按照类型说明的格式自定义用户所需的类型;,5. 数据类型,BIT:位数据类型 规定的取值范围是逻辑位1和0; 可参与逻辑运算或算术运算; BIT数据类型的定义在VHDL标准程序包STANDARD中,6. 结构体表达,【例】 ARCHITECTURE arch_name OF e_name IS (说明语句)说明和定义数据对象、数据类型、元件调用说明等 BEGIN (功能描述语句)电路功能描述语句,可以是并行语句、顺序语句或是他们的混合语句 END ARCHITECTURE arch_name ;,一个设计实体的功能与(/或)结构描述; 一个设计实体可以有多个结构体; 语法格式 architecture 结构体名 of 设计实体名 is 说明区; begin 执行语句区; end architecture 结构体名 ;,顺序语句: 由进程语句引导的,以顺序方式执行的语句,其执行结果与书写先后顺序有关.如赋值语句;分支控制语句;循环控制语句;同步控制语句,并行语句: 在结构体中以并行方式执行的语句。其结果与书写先后顺序无关.并行语句有五种语句结构:块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。,VHDL的基本语句 顺序语句 并行语句,-eqcomp4 is a four bit equality comparator Library IEEE; use IEEE.std_logic_1164.all; entity eqcomp4 is port(a, b:in std_logic_vector(3 downto 0); equal :out std_logic); end entity eqcomp4; architecture dataflow of eqcomp4 is begin equal = 1 when a=b else 0; End architecture dataflow;,VHDL 大小写不敏感,eqcomp4.vhd,包,实体,结构体,文件名和实体名一致,每行;结尾,关键字begin,关键字end后跟实体名,关键字end后跟构造体名,库,7. 赋值符号和数据比较符号,8. WHEN_ELSE条件信号赋值语句 并行语句 并行逻辑操作符:,赋值符号: “= ”用于信号数据的传输,仿真传输延时最短为一个。 要求两边的 信号的 数据类型必须一致 数据比较符号 : “=” 在条件语句表式中用于比较待测数据的关系。 没有赋值的含义,只是一种数据比较符号。 输出结果的数据类型是布尔(BOOLEAD),赋值目标 = 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE . 表达式 ;,例: z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ;,VHDL语言中预定义的有特殊含义的英文词语。 用户不能用关键词命名自用对象或用作标识符。,9关键字,10标识符,11规范的程序书写格式,用户在编程中自定义的,用于表示不同名称的词语,12文件取名和存盘,文件取名: 建议文件名与VHDL设计的实体名一致,后缀是.vhd。,文件存盘: VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为WORK库,WORK库的路径即为此目录的路径。,文件名后缀为.vhd 文件名英文字母不分大小,【例4-2】 2选1多路选择器 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; BEGIN d = a AND (NOT s) ; e = b AND s ; y = d OR e ; END ARCHITECTURE one ;,VHDL数据对象(Data Objects),s = 0 y = a s = 1 y =b,d,e,并行语句,3.1.2 2选1多路选择器及其VHDL描述2,布尔表达式,1. 逻辑操作符,在AND(与)、OR(或)和NOT(取反)等的作用下可构成组合电路。,AND、OR、NOT NAND、NOR、XOR、XNOR 操作对象的数据类型为:BIT、BOOLEAD、STD_LOGIC,BIT数据类型定义: 种取值 TYPE BIT IS (0,1); STD_LOGIC数据类型定义: 种取值 TYPE STD_LOGIC IS (U-未初始化的 X-强未知的 0-强0 1-强1 Z-高阻态 W-弱未知的 L-弱0 H-弱1 -忽略) 可实现:X - 0 1 Z,2. 标准逻辑位数据类型STD_LOGIC,库(LIBRARY)存放预先设计好的程序包和数据的集合体。常用的库有IEEE、STD、WORK、用户库等。这些设计单元可用作其他VHDL描述的资源。用户编写的设计单元既可以访问多个设计库,又可以加入到设计库中,被其他单元所访问。 程序包(PACKAGE)将已定义的数据类型、元件调用说明及子程序收集在一起,供VHDL设计实体共享和调用,若干个包则形成库。程序包由两个独立的单元组成:程序包声明单元和程序包体单元构成。,3. 设计库和标准程序包,IEEE库包括:STD_LOGIC_1164 STD_LOGIC_ARITH是SYNOPSYS公司加入IEEE库程序包,包括: STD_LOGIC_SIGNED(有符号数) STD_LOGIC_UNSIGNED(无符号数) STD_LOGIC_SMALL_INT(小整型数) VHDL 87版本使用IEEE STD 1076-1987 语法标准 VHDL 93版本使用IEEE STD 1076-1993 语法标准 描述器件的输入、输出端口数据类型中将要用到的IEEE的标准库中的STD_LOGIC_1164程序包。,使用库和程序包的一般定义表式是: LIBRARY ; USE ALL ;,信号是在结构体(ARCHITECTURE)、程序包(PACKAGE)和实体(ENTITY)中说明的全局量。,信号定义格式: SIGNAL 信号名:数据类型:=初值; 例如:SIGNAL Q1:STD LOGIC:=0;,信号赋值语句: 目标信号名=表达式 例如:x=9; z=x AFTER 5ns;,4. SIGNAL信号定义和数据对象,数据对象:,数据对象定义: 类似于容器,可接受不同数据类型的赋值 数据对象类型: 信号、变量、常数,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号