实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第5章 VHDL规范化标准及常见Warning分析

上传人:E**** 文档编号:89373325 上传时间:2019-05-24 格式:PPT 页数:120 大小:1MB
返回 下载 相关 举报
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第5章  VHDL规范化标准及常见Warning分析_第1页
第1页 / 共120页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第5章  VHDL规范化标准及常见Warning分析_第2页
第2页 / 共120页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第5章  VHDL规范化标准及常见Warning分析_第3页
第3页 / 共120页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第5章  VHDL规范化标准及常见Warning分析_第4页
第4页 / 共120页
实用EDA技术与VHDL教程 教学课件 ppt 作者  赵岩 林白 王志强 第5章  VHDL规范化标准及常见Warning分析_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第5章 VHDL规范化标准及常见Warning分析》由会员分享,可在线阅读,更多相关《实用EDA技术与VHDL教程 教学课件 ppt 作者 赵岩 林白 王志强 第5章 VHDL规范化标准及常见Warning分析(120页珍藏版)》请在金锄头文库上搜索。

1、第5章 VHDL规范化标准及常见Warning分析,硬件描述语言是用来描述数字系统行为和结构的语言。 使用硬件描述语言作为FPGA设计输入方式适合大规模数字电路设计,可以用综合工具提高设计效率,适合采用自顶向下的设计方式,便于设计的移植和复用。,硬件描述语言发展至今已出现许多具体规则需要设计人员遵循,只有遵循各种规范及可靠性设计,才能适应各种应用需求。,本章从编码设计、可综合代码描述规则、设计优化等三个方面提出FPGA硬件描述语言编程指南供设计者参考。 可靠性设计要求主要有以下4条,结合在可综合代码描述规则中提出:,(1)采用同步设计; (2)保证复位的有效性; (3)保证时钟信号的稳定和去除

2、时钟偏移的影响; (4)对异步接口信号进行处理。,采用硬件描述语言设计FPGA,必须了解EDA工具(综合工具、仿真工具、实现工具)的使用要求和FPGA的内部结构,才能写出高效规范的代码。 本章不仅涉及HDL代码的编写,还涉及与之密切相关的部分FPGA硬件实现细节和EDA工具的要求。,5.1 编码设计,(1)顶层设计文件只例化底层模块和I/O;模块例化时使用信号名和位置映射方式;每个文件内只包含一个模块(entity/module),文件名与模块名一致;在专门的文件内打包所有的参数定义。,不同模块中的同一信号,使用同一信号加不同后缀连接,如*_i、*_o、*_c分别表示某模块输入端口、某模块输出

3、端口和模块之间的连接信号命名,连接信号关系复杂时可将相关模块输出定义为一个自定义类型作为连接信号的类型,连接信号命名为*(模块名)_c。,(2)文件顶端加入注释,包括版权、项目名、模块名、文件名、作者、功能和特点、版本号、日期、详细的更改记录等。 (3)端口声明时,同一类信号或相关信号放 在一起。,(4)对代码进行详细注释,被注释过的代码和附带的文档将提供可信的设计基础。 (5)代码要有层次结构,推荐采用制表符键(Tab)增加缩进量。,(6)组合逻辑部分和时序逻辑部分应分开描述。 (7)命名由字母、_、数字组成,第一个符号位为字母,不能超过20字符。,(8)除常量、用户定义类型用大写字母外,其

4、 他命名如信号、变量、端口等一般用小写字母。 (9)命名要有物理意义,如ram_addr、clock,低电平有效信号以n_开头。,(10)命名不能和VHDL、Verilog、FPGA内部资源等关键字同名。 (11)仅使用IEEE标准类型std_logic及std_logic_vector(VHDL)。,(12)使用常量代替数字,设计内部使能等信号的有效电平也可定义成常量。 (13)仅使用由高到低的总线方向。,(14)不在端口使用buffer类型使信号既可在内部使用又可为端口输出信号(VHDL)。 (15)禁止使用配置(VHDL)。 (16)考虑IP复用时,功能和接口应分开实现,使用固定的片上总

5、线标准。,5.2 可综合代码描述规则,采用硬件描述语言设计FPGA时,设计输入是行为级或RTL级代码描述,从设计输入到最终的门级实现之间的转换、优化、映射等工作是由综合工具完成的,所以设计输入必须被综合工具识别,即可综合。,可综合代码可以被转换成由FPGA内的基本库、连线资源等构成的硬件网表,所以必须要对硬件设计本身有很好的了解,而不是简单的软件编程;可综合代码可以被综合工具正确转换,所以必须了解HDL语言描述与硬件实现的关系。,同步设计的结构如图5-1所示,同步设计主要涉及以下几个方面:,(1)复位的使用; (2)时钟的使用; (3)接口异步信号处理; (4)寄存器和锁存器的选用; (5)有

6、限状态机设计; (6)输入输出信号的寄存器同步。,图5-1 同步设计,5.2.1 复位,5.2.1.1 上电复位时间要求 复位的目的是使FPGA内部寄存器和IO进入一个预先设计的状态。 复位分上电复位和一般复位。,FPGA器件初始加电时需要经过一个上电过程,上电复位才能够起作用,因为FPGA器件上电时间受上电速度影响较大,所以上电复位时间必须有设计余量。 表5-1所示为部分FPGA器件的上电时间,图5-2给出了上电复位时序图。,表5-1 部分FPGA器件上电时间(参考值),图5-2 上电复位时序图,5.2.1.2 FPGA上电及配置时的IO特性,在FPGA的上电过程中,器件IO的表现也需要引起

7、设计者的注意。 Actel的FPGA在上电过程中大部分器件的IO表现为三态,但是部分器件IO表现为输出高或低。,Xilinx的FPGA由于器件本身的特性,内部的GSR信号在配置结束时自动把所有的寄存器和锁存器按设计要求复位或是置位(Xilinx推荐保留外部输入的复位信号的复位作用,在FPGA配置结束后输入的复位信号依然有效),并且在配置时,GTS信号控制所有的IO都表现为三态。,图 5-3 给出了Xilinx器件内部的GTS和GSR结构,因为复位的作用在FPGA上电和 配置期间并不能得到体现,即FPGA的IO表 现为三态或输出而不是设计状态,如果对外 有影响就需要根据具体情况处理,去除影响。,

8、图5-3 Xilinx器件内部GTS和GSR结构图,5.2.1.3 FPGA输入复位信号及内部存储器宏单元上的异步/同步复位端口的使用,一般来说数字系统内的复位信号是与时钟信号无时序关系的异步复位信号,实际上就是一个特殊的接口异步信号。,不管是在FPGA外对异步复位进行同步,还是在FPGA内对异步复位进行同步(如采用图5-2的方式),都可以产生同步复位信号。,需要注意的是在上电时,时钟源上电输出稳定和FPGA上电及配置完成都是同步复位有效的前提条件。,同步复位结束后可以保证复位状态安全退出;在异步复位信号沿和时钟沿有竞争冒险的情况下,可能导致异步复位无效。,建议对FPGA的输入复位信号进行同步

9、,如果对输入复位信号进行同步,复位时间还必须长于若干个时钟周期的长度。,本节的同步复位和异步复位是以时钟信号和复位信号是否有时序关系来区分,一般代码中描述的同步复位和异步复位是以复位信号是否需要时钟信号的有效沿变化才能对被复位信号起到复位作用来区分,如果不需要时钟信号沿有效则是异步复位,否则是同步复位。,下面的例子在FPGA内部产生了同步复位信号和实现了带异步复位的寄存器。 在对输入复位信号进行同步后,在写代码时可根据FPGA的内部结构进行 选择。,因为Xilinx器件的结构决定了实现同步复位的灵活性,Xilinx推荐采用带同步复位的存储器;Actel的XL、DX、MX、SX和ACT3系列器件

10、内部的寄存器都有固定的异步复位输入端口,对于Actel的这些器件推荐采用带异步复位的存储器。,5.2.2 时钟,时钟到达FPGA内部不同寄存器相对的时间差别叫做时钟偏移,如图5-4所示。,图5-4 时钟偏移示意图,时钟到达FPGA内部两个相邻的寄存器时间差较大而数据路径较短时,有可能带来功能失效,这种问题一般发生在最好的情况(低环境温度、高输入电压)下,如图 5-5所示。,图5-5 时钟偏移导致失效的示意图,图5-6 门控时钟示意图,图5-7 时钟使能示意图,5.2.3 接口异步信号处理,接口异步信号处理是为了减少亚稳态影响的传播。 亚稳态现象就是如果FPGA中寄存器输入信号不满足建立时间的要

11、求,正常的输出信号就会在一段不可预知长度的时间内处于一个非“0”非“1”的中间状态(这段时间称为亚稳态恢复时间),之后可能稳定在“1”状态,也可能稳定在“0”状态。,亚稳态影响表现在如果发生亚稳态的信号直接参与到不同路径长度的逻辑中,该信号有可能在一个路径上表现为逻辑1,而在另一个路径上表现为逻辑0。,亚稳态现象是FPGA的一个固有特点,并且由于亚稳态恢复时间的不确定性因而不能根本地去除亚稳态的影响。,通过在设计时预留一定的亚稳态恢复时间(预留的亚稳态恢复时间用Tmet表示),保证在绝大多数情况下,信号可以在Tmet时间内从亚稳态中恢复之后才参加到后面的逻辑运算中,把亚稳态影响减少到一个可以接

12、受的范围。,在一定的Tmet下,平均无故障时间和FPGA的工艺(C1、C2)、异步数据变化的频率(fd)、时钟频率(fc)有关系。,图5-8 用两个同步寄存器处理异步信号,5.2.4 寄存器和锁存器,锁存器是电平敏感存储单元,寄存器是边沿触发存储单元。 在基于寄存器的设计里,竞争冒险情况较少甚至不存在,控制信号和寄存器输入信号上的毛刺不易造成影响,信号可在一个周期里准确的锁存,推荐使用寄存器而不是锁存器。,寄存器在VHDL源码中一般使用if语句实现,条件判断常见的有以下4种,一般使用上升沿有效判断表达式即可:,(1)( clockevent and clock = 1)上升沿有效; (2)(

13、clockevent and clock = 0)下降沿有效;,(3)rising_edge (clock)上升沿函数调用; (4)falling_edge (clock)下降沿函数调用。,图5-9 带异步复位的D寄存器,图5-10 带同步复位的D寄存器,图5-11 带异步复位的锁存器,5.2.5 有限状态机,不管是复杂的设计还是简单的设计,有限状态机都是最常采用的同步设计方法。 对于FPGA来说,可采用多个小的状态机实现大的状态机。,有限状态机最基本的模型有两种:米兰机和摩尔机,摩尔有限状态机的输出仅与当前状态有关,米兰有限状态机的输出则与当前状态和输入有关。,一个有限状态机由3部分组成:

14、(1)当前状态寄存器组,如果用一组 n 位的寄存器保存当前状态,状态机就可以有2n个状态,保存的向量也就是状态编码。一个有m个状态的有限状态机至少需要log2(m)位状态寄存器。,(2)次态生成组合逻辑,一个有限状态机在任一时刻只能有一个状态,次态生成组合逻辑将决定每个有效的时钟沿变化时将发生的状态转换。次态是由有限状态机的输入及其当前状态决定。,(3)输出组合逻辑,输出通常是当前状态和有限状态机输入的函数。,图5-12 摩尔有限状态机,图5-13 米兰有限状态机,图5-14 米兰有限状态机的状态变化和输出,5.2.6 使用If-then-else的有优先权的译码器,一般情况下不使用优先级译码

15、,仅在对速度影响较大的关键路径使用。 使用If-then-else语句可以给一个迟来的信号优先权,即把它放在输出级参与逻辑运算,使得整个路径的速度达到最优。,图5-15中的信号c是最慢的信号,采用If-then-else语句的例子如下所示。,图5-15 有优先权的译码器,5.2.7 使用Case语句的多路复用,Case语句必须包括所有可能的情况或者有一个默认值用来在没有选中任何一个状态时执行,下面是4选1多路器的例子,图5-16所示是4选1多路器示意图。,图5-16 4选1多路器,5.2.8 解码器,下面是一个带使能信号的38解码器的VHDL源码示例。,5.2.9 计数器,计数器用来计数一个随

16、机发生或者有规律发生的事件。 在设计中使用“+”就可以让综合工具生成一个计数器,但是综合工具往往对较大(超过8位)的计数器综合效果不好。,如果在关键路径需要使用较大的计数器,就推荐使用FPGA的计数器宏单元。 下面是带有使能信号、置数、异步复位的8位加计数器的例子。,5.2.10 运算,表5-2 VHDL的运算,续表,5.2.11 输入/输出(I/O),图5-17 三态输出I/O,图5-18 OC输出I/O,图5-19 双向I/O,5.2.12 异步设计,一般采用异步设计的原因有:满足系统要求,如采用异步总线协议VME;满足速度要求;满足功耗要求。,异步设计的一般要求如下: (1)异步接口一般采用握手、中断、状态查询等方式保证数据交换的有效性;,(2)设计中需要保证时序要求,保证建立时间、保持时间和数据稳定,保证设计余量。,FPGA内部异步(不同时钟域)的两个模块或FPGA和外部的异步系统接口,在主动数据交换时,可采用握手的方式保证数据有效性,图5-20中Strobe A-B信号和Store B-A信号有效的含义可以是数据准备好或者请求对方发送数据。,图5-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号