使用QDR-IV设计高性能网络系统——第二部分

2017-02-24 17:10:44 来源:半导体器件应用网

在本系列第一部分,我们探讨了两种类型的QDR-IV存储器、时钟、读/写操作和分组操作。在第二部分,我们将探讨总线转换、总线翻转、地址奇偶校验等重要的总线问题。

总线转换的注意事项

总线转换时间非常重要,其决定了读和写指令间是否需要额外的间隔来避免在同一个I/O 端口上发生总线冲突。

想象下QDR-IV HP SRAM 中端口A 先后收到写指令和读指令。从CK 信号的上升沿(与初始化写指令周期相对应)算起,在整整三个时钟周期后向DQA 引脚提供写数据。读数据则将在下一个周期发送,因为 DQ从CK 信号的上升沿(与初始化读指令的周期相应)算起五个时钟周期后才能获得数据。此外,为符合总线转换时间和传输时延(从ASIC/FPGA 到QDR IV 存储器),还有两个额外周期。因此,启动写指令后,可以立即启动读指令。

在其他情况下,如果先启动读指令后启动写指令,那么发送读指令经过三个时钟周期后,才能发送写指令。这是因为,从在时钟信号CK 的上升沿上对读指令进行采样算起,经过五个周期后可获得DQA 引脚上的读数据,并且从在时钟信号CK 的上升沿上对写指令进行采样算起,在整三个时钟周期内向DQA 引脚提供写数据。否则,将会发生总线冲突。因此,发送写指令后的最小时钟周期应该为RL – WL + 1(RL:读时延;WL:写时延;这两个时延的单位为时钟周期数)。另外一个时钟周期用于正确捕获数据并补偿总线转换时延(通常为一个时钟周期)。

如果传输时延大于总线转换时延,那么‘读到写’指令间的间隔为:

“读到写”指令间的时间周期 = 读时延 – 写时延 + 1 + 传输时延

请参考图7。发送读指令经过四个时钟周期后,将发送端口A 的写指令。这样是为了避免因读/写时延、总线转换时间和传输时延间的差别而导致的总线冲突。

图7. QDR-IV HP SRAM时序分析图

总线翻转

QDR-IV 器件支持总线翻转以降低切换噪声和I/O功耗。在存储事务处理中,存储器控制器和QDR-IV都可以选择应用总线翻转。

由于QDR-IV 器件的POD 信令模式为I/O 信号提供了到VDDQ 的高压终端选项,所以信号转为高电平逻辑状态不会耗电。因此,总线翻转对于POD I/O 信号是一个很重要的性能。QDR-IV 会保证翻转地址和数据总线的数据完整性。

使用芯片配置寄存器来启用或禁用地址和数据总线翻转功能。

地址总线翻转

AINV 是双倍数据速率信号,每次将地址发送给存储器器件时都会更新该信号。AINV 引脚指示是否对地址总线(An –A0)和AP 进行了翻转。AINV 是高电平有效信号。当AINV = 1 时,将翻转地址总线;当AINV = 0 时,不翻转地址总线。AINV 引脚的功能由存储器控制器控制。

地址总线和地址奇偶位都被视为地址组(AG)。

表5显示的是AG 定义以及x18 和x36 QDR-IV 选项的AINV 设置条件。

表5. 地址总线翻转条件

  x18 x36
地址群 AG[22:0] = A[21:0],AP AG[21:0] = A[20:0],AP
翻转逻辑  
如果AG[22:0]中逻辑“0”的数量≥12,将AINV置为1,这时会对AG[22:0]进行翻转
 
如果AG[21:0]中逻辑“0”的数量≥11,将AINV置为1,这时会对AG[21:0]进行翻转
如果AG[22:0]中逻辑“0”的数量<12,将AINV置为0,这时不会翻转AG[22:0] 如果AG[21:0]中逻辑“0”的数量<11,将AINV 置为0,这时不会翻转AG[21:0]
 

x36器件示例

不进行地址总线翻转::

假设要访问的地址分别为22’h 000199和22’h 3FFCFF。17个地址引脚需要在第一个和第二个地址的逻辑状态间进行切换,如下表所示(红色单元格显示)。这样会增大地址引脚上的切换噪声、I/O电流以及串扰。

表6. 地址总线序列(未进行总线翻转)

AG[21:0] 22位(二进制)
第一个地址组 - 22h 000199 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1
第2个地址组 - 22h 3FFCFF 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1
 

进行地址总线翻转:

根据表5显示,第一个地址组(22h 000199)满足翻转逻辑条件。因此,存储器控制器发送第一个地址组前,它会将地址组从22’h 000199翻转为22’h 3FFE66,并将AINV引脚置为1。由于不需要翻转第二个地址组,所以存储器控制器可以将其直接发送,并将AINV设置为0。

下表显示的是地址总线翻转的结果。在这种情况下,只有5个地址引脚需要切换逻辑(红色单元格显示)。切换位的总数降低为5,所以降低了由于同时切换输出(SSO)而引起的噪声、I/O电流以及串扰。

表7. 地址总线序列(进行总线翻转)

AG[21:0] 22位(二进制) AINV
第一个地址组 - 22h 3FFE66(翻转后 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1
第二个地址组 - 22h 3FFCFF(保持不变 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0
 

数据总线翻转

数据总线翻转在数据线路中也类似,但翻转位由存储器控制器在存储器写操作期间生成,并且翻转位由QDR-IV存储器中的翻转逻辑在存储器读操作期间生成。

DINVA和DINVB引脚指示了是否翻转相应的DQA和DQB引脚。DINVA和DINVB均为高电平有效信号。当DINV = 1时,将翻转数据总线;当DINV = 0时,不翻转数据总线。

DINVA[1]和DINVA[0]相互独立并控制与其相应的DQA组。DINVA[0]控制DQA[17:0](对于x36的配置)或DQA[8:0](对于x18的配置)。DINVA[1]控制DQA[35:18](对于x36的配置)或DQA[17:9](对于x18的配置)。同样,DINVB[0]控制x36配置中的DQB[17:0]或x18配置中的DQB[8:0]。DINVB[1]控制x36配置中的DQB[35:18]或x18配置中的DQA[17:9]。

表8显示的是DINV位说明以及x18和x36 QDR-IV选项的DINVA设置条件。

表8. 数据总线翻转条件

  x18 x36
DINV位 DINVB[1]控制DQB[17:9],  DINVB[0]控制DQB[8:0] DINVA[1]控制DQA[35:18],  DINVA[0]控制DQA[17:0]
DINVB[1]控制DQB[35:18],  DINVB[0]控制DQB[17:0]
翻转逻辑 如果DQA[8:0]中的逻辑“0”数量 ≥ 5,将DINVA[0]设置为1,这时会对DQA[8:0]进行翻转 如果DQA[17:0]中的逻辑“0”数量 ≥ 10,将DINVA[0]设置为1,这时会对DQA[17:0]进行翻转
如果DQA[8:0]中的逻辑“0”数量< 5,那么不对DQA[8:0]进行翻转并将DINVA[0]设置为0 如果DQA[17:0]中的逻辑“0”数量< 10,那么不对DQA[17:0]进行翻转,并将DINVA[0]设置为0

注意:可以对DINVA[1]、DINVB[0]以及DINVB[1]使用相同的翻转逻辑,以便控制相应的DQ组。

x18器件的示例

不进行数据总线翻转:

假设需要分别发送DQA[8:0]上的9’h 007和9’h 1F3。6个数据引脚需要在第一个和第二个DQA[8:0]位的逻辑状态之间进行切换,如下表所示(红色单元格显示)。这样会增大数据引脚上的切换噪声、I/O电流以及串扰。

表9. 数据总线序列(不进行总线翻转)

DQA[8:0] 9位(二进制)
第一个DQA[8:0] - 9h 007 0 0 0 0 0 0 1 1 1
第二个DQA[8:0] - 9h 1F3 1 1 1 1 1 0 0 1 1
 

进行数据总线翻转:

根据表8,第一个DQA[8:0]满足翻转逻辑条件。因此,存储器控制器发送第一个DQA[8:0]前,它会将引脚地址从9’h 007翻转为9’h 1F8,并将DINVA[0]引脚设置为1。由于第二个DQA[8:0]不需要翻转,所以存储器控制器可以直接发送它,并将DINVA[0]设置为0。

表10显示的是数据总线翻转的结果。在这种情况下,只有3个数据引脚需要切换逻辑(红色单元格显示)。切换位的总数降低为3,所以降低了SSO的噪声、I/O电流以及串扰。

表10. 数据总线序列(进行总线翻转)

DQA[8:0] 9位(二进制) DINVA[0]
第一DQA[8:0] - 9h 1F8(翻转后) 1 1 1 1 1 1 0 0 0 1
第二个DQA[8:0] - 9h 1F3(保持不变) 1 1 1 1 1 0 0 1 1 0

地址奇偶校验

QDR-IV只有一条地址总线,但其以双倍数据速率和高频率运行。因此,地址奇偶校验输入(AP)和地址奇偶校验错误标志输出(PE#)引脚提供了片上地址奇偶校验功能,以便能够确保地址总线完整性。地址奇偶校验功能是可选的;可以使用配置寄存器来启用或禁用它。

通过该AP引脚可以在各地址引脚(An到A0)上进行偶校验。设置AP值,使AP和An-A0中逻辑“1”的总数为偶数。

对于数据总线宽度为x18的器件,设置AP值,使A[21:0]和AP中逻辑“1”的总数为偶数。

对于数据总线宽度为x36的器件,设置AP值,使A[20:0]和AP中逻辑“1”的总数为偶数。

器件的示例

以数据总线宽度为x36的器件的21’h1E0000和21’h1F0000地址为示例。表11显示的是如何为每个地址设置AP值。

表11. 地址奇偶功能

 
地址,A[20:0]x36器件)
AP A[20:0]AP中逻辑“1”的总数
 
 
21h1E0000 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 因为在A[20:0]中逻辑“1”的总数为偶数(4)
 
21h1F0000 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6
因为在A[20:0]中逻辑“1”的总数为奇数(5)
 

当发生奇偶错误时,在配置寄存器4、5、6和7中(请查看相关数据手册,了解有关配置寄存器的更多信息)记录第一个错误的完整地址以及端口A/B错误位和地址翻转位。端口A/B错误位表示发生地址奇偶错误的端口:0表示端口A,1表示端口B。持续锁存该信息,直到向配置寄存器3中的地址奇偶错误清除位写入1来清除该信息为止。

通过两个计数器,可以表示是否发生了多个地址奇偶错误。端口A错误计数是端口A地址上奇偶错误数量的运行计数器。同样,端口B错误计数是端口b地址上奇偶错误数量的运行计数器。每个计数器独立计数到最大值(3),然后将停止计数。这些计数器均是自由运行的;对配置寄存器3的地址奇偶错误清除位写入1,可将其复位。

检测到地址奇偶错误后,写操作就会被忽略,以防止损坏存储器。但是,如果输入地址错误,仍会继续执行读操作,但存储器会发送出假数据。

PE#为低电平有效信号,表示地址奇偶错误。检测到地址奇偶错误后,PE#信号在8个周期(QDR-IV XP SRAM)或5个周期(QDR-IV HP SRAM)内被设置为0。它将保持置位状态,直到通过配置寄存器清除了错误为止。处理完地址翻转便表示完成了地址奇偶检查。

PE#转为低电平后,会停止存储器操作,并使用配置寄存器将PE#复位为高电平。此外,由于发生AP错误的写操作也被阻止,所以需要向存储器重新编写数据。

在本系列第三部分,我们将探讨校正问题,其中包括矫正训练、控制/地址校正和读写校正,以及纠错码(ECC)和QDR-IV存储器控制器的设计建议。

本文由大比特资讯收集整理(www.big-bit.com)

声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请与我们联系,我们将及时更正、删除,谢谢。
Big-Bit 商务网

请使用微信扫码登陆

x
凌鸥学园天地 广告