本设计中用读地址和写地址相减结果来判断FIFO 的存储状态。当读写地址的差值不相同时,说明FIFO内有数据,如果地址差为±1024说明FIFO已写满,如果差值小于±1024说明FIFO未满。当读写地址的差值相同时,说明FIFO内没有数据为空状态。程序如下所示: offset <= "0000000000" when(f_addrd = f_addwr) else (f_addwr - f_addrd) when(f_addwr > f_addrd) else (1023 + f_addwr - f_addrd); 2.2 同步数据传输时序设计 同步数据传输是指时钟选通信号CLK由驱动芯片伴随发送数据一起发送。在同步数据收发中,数据信号同时钟选通信号一起发向接收端。选通信号用于接收端锁存数据信号。如图3所示。
图3 源同步数据传输
与现有技术(常用并行总线传输技术)相比,本设计所采用源同步数据传输方法最大的优点是提高了总线数据传输速度的最大值,放弃了常用并行总线传输时序中由数据接收端发出的控制信号对总线数据传输操作进行同步的方法,而是使得数据同步信号和数据信号由数据源端总线接口同步发出,二者的传输路径、方向、走线长度都基本相同。二者之间的传输时间差异仅为板卡(或芯片)的传输抖动,按照目前器件水平,二者之间的延迟可以控制在1ns量级。基本可以满足这两个信号(数据同步信号和数据信号)同时到达数据接收端板卡接口的要求,实现总线上的高速数据传输。 对片上集成高速FIFO的读写操作采取分时进行,当启动采集信号有效时,将采集数据写入高速缓存中,直至停止采集。当总线授予该采集单元使用权后,进行高速缓存的读数操作,将数据写入总线。控制器件对高速FIFO的读控制时序如图4所示。
图4 高速FIFO的读操作时序
当系统主控模块授予该采集单元总线使用权后,即REQ=’0’,由主控模块写入总线标识位146F、146F,写入当前采集单元的16位卡地址和32位帧计数。此时,判断高速缓存FIFO中是否有数据,如果有,进行读数操作;若没有,则等待。当高速缓存FIFO中有数据(fifone=’0’)时,为提高总线写入速度,在写入数据的同时,读出FIFO中的下一个数。因此写入总线第一个数据为无效数据。随后依次写入AD编码数据。当主控模块收回总线使用权,采集单元控制逻辑保证将当前数据正确写入存储器总线接口电路,总线写信号buswr置为弱上拉,数据总线置为高阻态。FIFO数据写入总线部分程序如下所示。 |