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

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

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

1、第十一章 RAM接口控制器,11.1 关于IS61LV25616AL SRAM 11.2 基本存储控制器 11.3 更加完善的设计 11.4 Xilinx Spartan-3内部存储器 11.5 Xilinx嵌入式存储器例化举例 本章小结,11.1 关于IS61LV25616AL SRAM 11.1.1 芯片介绍以及I/O接口 S3开发板上采用了两块ISSI公司的IS61LV25616AL器件,芯片容量为256 16 bit。其结构如图11-1所示,主要包括18根地址线(address)、16根数据线(data)和5根控制线。其中,数据总线可以高8位数据和低8位数据分开单独使用。5根控制线分别

2、是: (1) ce_n芯片使能信号; (2) we_n写信号(使能); (3) oe_n输出使能信号; (4) lb_n低字节使能; (5) ub_n高字节使能信号。,所有信号后缀都带有“_n”,表示低电平有效。ce_n信号用来选通SRAM;we_n和oe_n为写与读使能操作;lb_n与ub_n用来做高低位字节配置。这里主要关注数据、地址和控制信号的有效操作时序。其完整真值如表11-1所示。,图11-1 IS61LV25616AL 结构框图,11.1.2 时序参数 异步SRAM 时序由于包含至少两个以上的时钟域,分析起来比较复杂。下面仅关注与设计相关的主要参数。 异步SRAM的两种读操作时序图

3、如图11-2(a)与(b)所示。图11-2中相关参数含义如下: (1) tRC:读时钟周期,即两次读操作的最小间隔时间。 (2) tAA:地址存取时间,即每次地址变化之后获取稳定数据的必需时间。 (3) tOHA:输出保持时间,即地址改变后输出数据依然保持有效的时间(这里不要与触发器的保持时间混淆了,它只是对输入d而言的)。,(4) tDOE:输出使能时间,即oe_n信号有效之后,能够正确获取有效数据的时间。 (5) tHZOE:高阻使能时间,即当oe_n无效之后,三态缓冲器进入高阻状态的时间。 (6) tLZOE:低阻使能时间,即三态缓冲器当oe_n有效时,离开高阻状态的时间。注意,即使输出

4、不在高阻态,数据依然无效。,图11-2 读操作时序图,异步SRAM采用we_n信号进行写操作控制的时序图如图11-3所示。其相关参数如下: (1) tWC:写周期时间,即两次写操作的间隙时间。 (2) tSA:地址建立时间,即we_n有效之前地址稳定的最小时间。 (3) tHA:地址保持时间,即we_n无效之后地址保持稳定的最小时间。 (4) tPWE1:we_n脉宽,即we_n有效的最小宽度。 (5) tSP:数据建立时间,即锁存沿来临之前数据需要稳定的时间。 (6) tHD:锁存沿来临之后数据保持稳定的时间。,图11-3 we_n信号控制写操作时序图,根据IS61LV25616AL数据手册

5、,以上参数信息具体值如表11-4所示。其实所有的参数信息都可以在数据手册中找到。,11.2 基本存储控制器 11.2.1 设计框图 基本SRAM的存储控制器的功能及I/O信号如图11-4所示。与SRAM通信的相关信号前面已讨论过,和主系统通信的信号主要包括: (1) mem:若为1,则表示初始化存储器操作。 (2) rw:若为“1”,则表示读;若为“0”,则表示写(0)操作信号。 (3) addr:18位地址信号。 (4) date_f2s:写入SRAM的16位数据。 (5) date_s2f_r:从SRAM读回来并寄存的16位数据寄存器。 (6) date_s2f_ur:从SRAM返回来未寄

6、存的数据。 (7) ready:表示控制器是否准备接收新命令。这个信号是必需的,读写操作在多个时钟周期完成时尤其需要。,图11-4 基本SRAM的存储控制器框图,存储控制器同时为SRAM包上了一层“同步壳”,使得主系统针对SRAM的操作为同步化操作。当主系统写数据到SRAM时,只需将地址与数据装载到相应总线上,然后激活控制命令,在时钟上升沿时刻,所有信号被存储控制器采集并执行写RAM的操作。对于读操作来说,数据会滞后一到两个时钟周期之后有效。 存储控制器基本结构框图如图11-5所示,其数据路径包括地址寄存器(用来存储地址)和两个数据寄存器(存储两个方向的数据)。由于数据总线dio为双向的,需要

7、一个三态缓冲器。控制路径由状态机来控制,根据如图11-2和11-3所示读写时序来产生合适的控制时序。,图11-5 SRAM控制器基本框图,11.2.2 时序要求 SRAM的时序图虽较复杂,但并不难懂。首先考虑一次读操作,在整个过程中,we_n一直保持无效,基本操作时序步骤如下: (1) 将地址值赋给addr总线,然后使能oe_n信号,这两个信号必须在整个操作中稳定。 (2) 等待至少tAA时间,这个时间间隔主要为了使得SRAM中数据有效。 (3) 从dio获取数据,然后oe_n信号置高,使之无效。,用we_n信号,控制单次写操作时序如图11-3所示,基本操作如下: (1) 置地址值在ad总线上

8、,数据在dio上,然后使能we_n信号(置为0)。这些信号在整个过程中保持稳定。 (2) 等待至少tPWE1时间。 (3) 置we_n信号无效,数据锁存在SRAM的时钟沿上。 (4) 清除dio总线的数据。 注意,tHD(写操作结束之后数据保持时间)对 SRAM来说是0 ns,清除总线数据和置信号we_n无效可以同时进行。然而在实际电路中,为了保证锁存正确,一般确保we_n信号首先无效。,11.2.3 存储器文件与SRAM的对比 前面在第五章中我们讨论过寄存器文件,其基本单元为寄存器(DFFs),所以它是全同步的。虽然存储器控制器使得对存储器的操作同步化了,可是两者还有一些区别: (1) 寄存

9、器文件通常有一个写端口和多个读端口; (2) 寄存器文件的读写端口可以同时进行操作(即读写操作可以同时完成); (3) 写寄存器只需一个时钟周期; (4) 寄存器读端口的数据通常有效并且读操作是不需要时钟周期和额外控制信号的。 总而言之,寄存器文件更快更灵活,但是考虑到电路的规模,寄存器文件更适合在存储容量比较小的情况下使用。,11.2.4 设计安全性 理解了如图11-5所示的框图,对SRAM控制器的结构就非常清楚了,剩下的任务就是设计控制器。可以采用安全设计,也就是说设计中考虑时序余量足够大而不包含任何严厉的时序约束。基本设计原则是设计中不包含任何不定态,控制信号直接由状态机产生,控制器用两

10、个时钟周期完成存取,总共需要三个时钟周期完成所有操作。,11.2.5 ASMD状态机图 考虑设计的安全性,设计如图11-6所示的ASMD状态图。状态机包含五个状态。idle状态为初始状态,状态机的外部输入信号有mem和rw信号,当mem信号有效时,开始对memory操作,而rw信号决定读还是写操作。 对于读操作,状态机进入rd1状态,存储器地址线对addr采样,然后存储在addr_reg寄存器中,oe_n信号在rd1与rd2状态下有效。在读周期完成后,FSM返回到idle状态,获取的数据存储在data_f2s_reg寄存器中,oe_n信号最后无效。注意图11-6有两个读端口,data_s2f_

11、r信号是当状态机退出r2状态时有效,数据直到下一个读周期来临一直保持不变,data_s2f_wr信号直接与SRAM的dio总线相连,其数据在rd2状态后有效。当状态机进入idle状态时就失效了。一些应用中,主系统采集并存储数据在自身的寄存器中,而未寄存输出允许在整个操作完成之前一个周期完成。,图11-6 “安全”SRAM控制器ASMD图,对于写操作来说,状态机进入wr1状态,地址信号线addr和数据信号线data_f2s同时采样并分别存储在addr_reg和data_f2s_reg寄存器中,we_n与tri_n信号在wr1状态有效;然后,使能三态缓冲器将数据送到SRAM的dio总线上。当状态机

12、进入wr2状态时,we_n无效,但tri_n仍然有效,这样确保数据在we_n由0变为1时正确锁存在SRAM中;写周期结束后,状态机返回到idle状态,tri_n无效且dio总线上的数据无效。,11.2.6 时序分析 为了确保时序操作的正确性,要检查是否满足条件时序参数,状态机的控制时钟为50 MHz,那么状态机在每个状态停留时间为20 ns。 在读周期中,oe_n需2个状态有效,共40 ns。对于时序要求为10 ns的tAA参数提供了30 ns的余量,虽然表面上oe_n在rd2状态可以不赋值,但这样增加了一个更严厉的约束。当状态机由rd2状态转为idle状态时,数据存储在data_s2f寄存器

13、中。虽然oe_n此时无效,但由于FPGA管脚的延迟以及tHZOE的影响,数据依然会保持有效一小段时间,所以正好可以在时钟沿上被采样。,在写周期里,we_n在wr1状态置1有效,20 ns的间隔大于8 ns的tPWE1的需求,tri_n信号在wr2状态依然有效,所以确保数据在we_n信号由0到1的沿变化过程中稳定。 在整个操作中,读与写操作共用了两个时钟周期完成。在读操作期间,寄存器data_s2d_ur在第二个时钟周期后有效,寄存器data_s2d_r在第二个时钟上升沿有效。虽然存储器读写操作可以在两个时钟内完成,但是读和写操作在完成之后都要回到idle状态,主系统需要等待一个时钟周期开始新的

14、操作,这样总共需要三个时钟周期完成操作。,11.2.7 HDL代码设计 HDL设计按照时序图11-5和状态机图11-6来进行设计,存储器控制器必须要产生快速毛刺滤除信号。有一种办法是,修改摩尔输出逻辑,使其包含预输出缓冲器,即对每一个输出信号增加驱动寄存器来减少毛刺,同时降低时钟到输出的延时。为了补偿插入缓冲器带来的延迟,在状态机输出逻辑中可用预输出信号值来替换当前状态值。完整的代码如程序11-1所示。,【程序11-1】 SRAM控制器设计。 module sram_ctrl ( input wire clk, reset, /主系统端接口信号 input wire mem, rw, inpu

15、t wire 17:0 addr, input wire 15:0 data_f2s, output reg ready, output wire 15:0 data_s2f_r, data_s2f_ur, /SRAM端接口信号 output wire 17:0 ad, output wire we_n, oe_n, /SRAM接口信号 inout wire 15:0 dio_a, output wire ce_a_n, ub_a_n, lb_a_n );,/状态机状态信号声明 localparam 2:0 idle = 3b000, rd1 = 3b001, rd2 = 3b010, wr1 = 3b011, wr2 = 3b100; /信号声明 reg 2:0 state_reg, state_next; reg 15:0 data_f2s_reg, data_f2s_next; reg 15:0 data_s2f_reg, data_s2f_next; reg 17:0 addr_reg, addr_next; reg we_buf, oe_buf, tri_buf; reg we_reg, oe_reg, tri_reg;,/FSMD 状态和数据寄存器 always (posedge clk, posedge reset) if (reset) begin state_

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

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

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