Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章

上传人:E**** 文档编号:89355115 上传时间:2019-05-23 格式:PPT 页数:120 大小:1.45MB
返回 下载 相关 举报
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章_第1页
第1页 / 共120页
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章_第2页
第2页 / 共120页
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章_第3页
第3页 / 共120页
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章_第4页
第4页 / 共120页
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章》由会员分享,可在线阅读,更多相关《Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章(120页珍藏版)》请在金锄头文库上搜索。

1、,第五章 时序逻辑设计,5.1 时序电路基础 5.2 时序电路基本单元的HDL描述 5.3 简单例程 5.4 时序电路的TestBench 5.5 工程实践,5.1 时序电路基础,5.1.1 时序电路基本存储单元 在时序电路中,最基本的存储器元件就是D触发器,其符号和真值表如图5-1(a)所示,其作用是在时钟clk的上升沿采样信号d的值,然后存储到触发器(FF)当中。D触发器可以包含一个异步复位信号来对触发器清零,基本符号表示和真值表如5-1(b)所示。这里要注意,异步复位操作与时钟是无关的。图5-1(c)为包含同步复位的DFF的基本符号表示和真值表。,图5-1 DFF功能图以及真值表,D触发

2、器有三个重要的时序参数,分别是tCQ(时钟到数据输出延时)、tSU(建立时间)和tHOLD(保持时间)。 (1) tCQ是指自时钟上升沿来临,信号传输到q寄存器所需要的时间。如图5-2所示。 (2) 建立时间tSU是指时钟上升沿来临之前数据已经稳定的时间,是在时钟翻转(对于正沿触发寄存器为01的翻转)之前数据输入(d端)必须有效的时间。 (3) 保持时间tHOLD是指在时钟上升沿来临之后数据输入必须保持有效的时间。 tSU和tHOLD的具体含义如图5-2描述更为直观和形象。,图5-2 D触发器的三种时序参数的定义,5.1.2 同步时序电路 1同步时序电路基本模型 同步时序电路由三部分组成:状态

3、寄存器、下一状态逻辑模块、输出逻辑模块。其基本电路框图如图5-3所示。,图5-3 同步系统原理框图,(1) 状态寄存器是指由同一时钟信号控制的所有D触发器。 (2) 下一状态逻辑是指由外部输入和内部状态所决定的状态寄存器新的组合逻辑值,在下一个时钟沿有效。 (3) 输出逻辑是指在当前状态下的输出组合逻辑。,2系统最高工作频率 在时序电路设计中,往往最关注的是时序电路的最高工作频率,也就是确保系统时序不违犯建立时间和保持时间约束的同时,能够保证系统正常工作的最高时钟频率。通常在同步系统中,采用静态时序分析方法对单个D触发器进行时序电路分析。,时序电路最高工作频率用fMAX来表示,它标志着电路执行

4、的最高频率。对应fMAX的倒数Tclock=1/fMAX,也就是两次采样时钟的时间间断,称为最小时钟周期。为了确保电路的正确操作,需要确保两次采样时钟的时间间隔一定要小于最小时钟周期,也就是说同步时序逻辑电路对时钟激励做出的响应是同时发生的,但是运行结果必须等到下一个时钟翻转时才能到下一级。为了保证时序电路的采集和处理的正确性,时钟周期必须能容纳电路中任何一级的最长延时tLOGIC,可以建立如图5-4所示的基本时序模型,时序电路正确工作要求的最小时钟为,(5-1),那么通过公式(5-1)很容易得到系统的最高频率fMAX为,(5-2),假设寄存器的固有最小延时时间为tCQregister,那么为

5、了保证时序电路正常工作,还需要如下的约束:,(5-3),这一约束保证了时序元件的输入数据在时钟边沿之后能够维持足够长的时间,并且不会由于新进入的数据流而过早的改变。,图5-4 基本同步时序电路模型图,5.1.3 时序电路分类 时序电路代码开发遵循基本时序电路模型,如图5-3所示。关键是要将存储单元从系统中分离出来,因为一旦寄存器被隔离,剩余部分都是纯粹的组合逻辑电路,组合逻辑电路的编码与分析方法就可以完全按照第四章所讨论的方法处理。虽然这样也会使得代码相对冗繁,但是有利于电路结构的理解,而且可以避免意想不到的锁存器和缓存器产生。,根据时序电路的记忆特征,可以将其分成三类: (1) 规则时序电路

6、:状态变化具有规律性,如在计数器和移位寄存器中,下一状态逻辑是严格遵循一定规律的,如加法器、移位寄存器等都是规则时序电路。 (2) FSM有限状态机:其下一状态逻辑变换不是按照简单可重复的模式进行的,而是“随机逻辑”,所以其应该称为“随机时序电路”,但通常称之为有限状态机电路。 (3) 带有数据路径的状态机:电路包括规则数据电路和有限状态机两部分。这两部分分别称为数据路径和控制路径。组合在一起称为带有数据路径的状态机。此电路主要使用寄存器传输方法来描述数学运算的电路。,5.2 时序电路基本单元的HDL描述 使用HDL语言来描述存储器程序非常简单,也有很多方法可以完成,然而对于初学者来说,往往会

7、意料不到地描述出锁存器和缓冲器。所以这里不列举所有的存储器描述方式,而是介绍一种有效的编码模板来描述赋以代表意义的几种存储器单元。另外,由于我们开发的程序将寄存器和组合逻辑电路分开,所以这些存储单元的描述在别的例中也经常用到,具体包括如下: (1) D触发器; (2) 寄存器; (3) 寄存器文件。,所有存储器都可以用always模块来描述。如前面第四章所述,在时序逻辑中使用非阻塞描述方式来描述,其格式为,变量名 = 表达式;,5.2.1 D触发器 可以考虑三种D触发器: (1) 不带异步复位的D触发器; (2) 带异步复位的D触发器; (3) 带同步使能的D触发器。 前两个为通用的寄存器元件

8、,在任何元件库里就有,第三个由简单D触发器演变而来,也是使用频率非常高的寄存器元件,可以布线到Spartan-3器件的逻辑单元中。,1不带异步复位的D触发器 不带异步复位的D触发器的真值表如图5-1(a)所示。代码描述如程序5-1所示。 【程序 5-1】 不带异步复位的D触发器。 module d_ff ( input wire clk, input wire d, output reg q ); /程序主体 always (posedge clk) q = d; endmodule,上升沿用“posedge”描述,“posedge clk”列举在敏感量列表当中,关键字“posedge”表示时

9、钟clk的变化是从逻辑“0”到逻辑“1”,也反映了always模块仅仅在时钟clk的上升沿才被激活,D触发器激活的条件属于沿触发。注意到d信号不包含在敏态量列表当中,所以d信号仅仅在时钟上升沿被采样,其本身值的变化不会激活任何语句执行。,2带异步复位的D触发器 如图5-1(b)所示,D触发器包含有一个异步复位信号。异步复位信号一旦有效,就将D触发器清零,而且它不被时钟控制,所以异步复位优先级高于采样操作。由于使用异步复位违背了同步设计的原则,一般不推荐使用,它主要用在系统的初始化,比如,可以通过一个小的复位脉冲,强制系统上电之后寄存器进入一个确定的状态。带异步复位的D触发器HDL描述如程序5-

10、2所示。,【程序5-2】 带异步复位的D触发器。 module d_ff_reset ( input wire clk, reset, input wire d, output reg q ); /程序主体 always (posedge clk, posedge reset) if (reset) q = 1b0; else q = d; endmodule,3带同步使能的D触发器 D触发器往往增加一个en使能信号,en信号有效时允许D触发器采样输入,信号无效时,触发器保持原值。由于en信号仅仅在时钟的上升沿采样,所以属于同步系统,其元件符号和真值表如图5-1(c)所示。HDL代码描述如程序

11、5-3所示。,【程序5-3】 带同步使能的D触发器。 module d_ff_en ( input wire clk, reset, input wire en, input wire d, output reg q ); /程序主体 always (posedge clk, posedge reset) if (reset) q = 1b0; else if (en) q = d; endmodule,注意:在第二个if语句后没有其他的分支。按照Verilog的定义,变量如果没有新值赋予,则保持原来的值;如果en为0,则q保持原来的值,所以省略了“else”的分支描述。 D触发器的使能经常用

12、于系统的同步。比如,假设两个子系统运行频率分别为50 MHz和1 MHz,分别称其为快速时钟和慢速时钟,如果要求慢速时钟与快速时钟同步,则除了使用分频器来产生1 MHz时钟来驱动低速系统,还可以通过产生周期性的使能时钟信号,控制每50个时钟周期里有一个时钟周期慢速子系统被使能,其他49个周期慢速子系统被禁止(保持原来的状态)。同样的方案也可以用于门控时钟信号。,图5-5 带同步使能的DFF,【程序5-4】 带同步使能的DFF。 module d_ff_en_2seg ( input wire clk, reset, input wire en, input wire d, output reg

13、 q ); /信号声明 reg r_reg, r_next; /程序主体 /D FF always (posedge clk, posedge reset),if (reset) r_reg = 1b0; else r_reg = r_next; /下一状态逻辑 always * if (en) r_next = d; else r_next = r_reg; /输出逻辑 always * q = r_reg; endmodule,5.2.2 寄存器 寄存器为D触发器的组合,同样被clk和reset信号所控制。和D触发器一样,也可以选择带有异步复位或同步使能信号。HDL描述也与D触发器类似,唯

14、一区别在于相关的输入输出信号为数组类型,比如带异步复位的8位寄存器HDL描述,如程序5-5所示。,【程序5-5】 带异步复位的8位寄存器HDL描述。 module reg_reset ( input wire clk, reset, input wire 7:0 d, output reg 7:0 q ); /程序主体 always (posedge clk, posedge reset) if (reset) q = 0; else q = d; endmodule,5.2.3 寄存器文件 寄存器文件是由多个寄存器,另加上一个输入端口和一个或多个输出端口组成的。写地址信号w_addr,表明数

15、据写的地址;读地址信号r_addr,指定数据的来源地址。寄存器文件通常用来描述快速的临时存储。程序5-6描述了一个参数为2W B的寄存器文件。参数W描述地址的位宽,表明有2W个字;参数B表示数据位宽,表示每个字中的数据位宽。,【程序5-6】 参数为2W B的寄存器文件。 module reg_file #( parameter B = 8, /数据位宽参数 W = 2 /地址位宽参数 ) ( input wire clk, input wire wr_en, input wire W-1:0 w_addr, r_addr, input wire B-1:0 w_data, output wire B-1:0 r_data );,/信号声明 reg B-1:0 array_reg 2*W-1:0; /主体部分 /写操作 always (posedge clk) if (wr_en) array_regw_addr = w_data; /读操作 ass

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

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

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