多时钟域数据传递的FPGA实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多时钟域数据传递的FPGA 实现
鲁 玲
(扬州大学能源与动力工程学院江苏扬州 225009)
摘 要:分析了多时钟域数据传递设计中亚稳态的产生以及对整个电路性能和功能的影响,以一款异步并行通信接口芯片的设计为例,详细描述了采用同步器、FIFO 实现8位并行数据到16位并行数据的两时钟域异步转换的过程。电路在
XilinxISE6.0环境下用Modelsim5.7进行了逻辑仿真,结果表明系统稳定可靠。
关键词:多时钟域;亚稳态;FP GA ;异步信号;FIFO
中图分类号:TP391.98 文献标识码:B 文章编号:10042373X (2007)212130203
An Implementation of Communicating Data bet w een Multi 2clock Domain B ased on FPG A
L U Ling
(Institute of Energy &Power ,Yanghou University ,Yangzhou ,225009,China )
Abstract :The paper analyses the metastability which is caused by communicating data between multi 2clock domain and effect of metastability to the circuit.For example ,the design of asynchronous parallel interface chip is described to make use of synchronizer and FIFO to transfer the data band f rom 8bits to 16bits between two clock domain in details.The circuit is simulated on a Modelsim5.7with Xilinx ISE6.0software and good test result has gotten.
K eywords :multi 2clock domain ;metastability ;FP GA ;asynchronous signal ;FIFO
收稿日期:2007207225
随着EDA 技术的发展,由于其在电子系统设计领域中的明显优势,FP GA 已经在许多方面得到了广泛应用,特别是在无线通信领域,FP GA 以其极强的实时性,指令软件编程的极大灵活性赢得了巨大的市场。本文采用
FP GA 来设计一款广泛应用于计算机、Modem 、数据终端
以及许多其他数字设备之间的数据传输的专用异步并行通信接口芯片,实现了某一时钟域(如66M Hz )的8位并行数据到另一低时钟域(如40M Hz )16位并行数据的异步转换,并且客户可以根据自己的要求进行数据定义。完成数据在不同时钟域间的正确传递的同时防止亚稳态的出现,保持系统的稳定,是电路设计的关键。1 时钟域转换中亚稳态的产生
触发器是数字电路设计中的一个重要元件,而触发器工作过程中存在数据建立与保持时间的约束,如果这种约束得不到满足,触发器就会进入某个不确定状态———亚稳态[1]。亚稳态的存在可能导致连锁反应,以致引起整个系统功能混乱。在单时钟域电路设计中由于不存在时钟之间的延迟和错位,所以建立条件和保持条件的时间约束容易满足。而在多时钟域里由于各个模块的非同步性,则必须考虑亚稳态的发生,如图1
所示。
图1 多时钟域亚稳态的产生
2 多时钟域数据传递方案
多时钟域传递的信号有两种,其一为控制信号,其二为数据流信号。针对这两种不同的信号,分别采取不同方案遏制系统堕入亚稳态。对控制信号采用同步器装置,即在2个不同的时钟域之间插入同步器;而对于不同独立时钟域之间的数据流传递,为了避免异步时钟域产生错误的采样电平,采用FIFO 存储器作为其转换接口,在输入端口使用写时钟写数据,在输出端口使用读时钟读数据,这样就完成了异步时钟域之间的数据交换[2]。
芯片的总体逻辑框图如图2所示,图中输入输出信号定义如表1所示。
从逻辑结构上将芯片划分为3块:写时钟域I/O
BU FFER 、读时钟域I/O BU FFER 及FIFO 存储器。I/O
BU FFER 的主要作用是对外部信号进行预处理,消除外
31自动化技术鲁 玲:多时钟域数据传递的FP GA 实现
部信号的毛刺,保证信号可靠并使外部的信号与时钟信号同步,消除不稳定的因素。根据信号的数目,BU FFER 由相应数目的多个D
触发器构成。
图2 芯片的总体逻辑框图
表1 芯片输入输出信号定义
clka :input clock (66M Hz )fp :output frame begin clkb :output clock (40M Hz )valid :Output data enable ,high level enable
rst :asynchronous reset ,low level enable indata :t he input data (8b )sof :input frame begin outdata :t he output
data (16b )
dataen :write enable
FIFO 存储器结构框图如图3所示,他由双端口存储
器(Dual Port RAM )、写控制单元(Write Control )和读控制单元(Read Control )构成。其中DUAL POR T RAM 是由ISE6.0的一个编辑软件CORE GEN ERA TER 自动生成,使用者只需设定RAM 的端口数、内存大小和读写控制便可以生成一个适合程序的子模块。由于读写时钟属于不同的时钟域,满帧信号Frame 从写控制单元向读控制单元传递时必须采取同步器(Synchronizer )同步。
图3 FIFO 存储器结构框图
2.1 写控制单元设计
写控制单元主要的功能是根据写数据有效信号wda 2
taen 判断输入数据是否正确,在检测到写入数据帧的开始
标志位wsof 后开始计数控制写指针waddr 的移动,将正确的数据写入DUAL POR T RAM 中
,并在一帧数据写满后向读控制单元发出写数据满帧信号wframe 。为防止亚稳态的出现,设计中采取了两个措施:一是采用锁存器将帧头信号wsof 拉长,确保其被稳定的采集;二是采用
Gray 编码计数器替代普通二进制编码计数器来控制写指
针waddr 的移动,因为Gray 码相邻两个编码之间有且只有1位发生变化从而抑制了竞争冒险的出现[3]。2.2 同步器设计
写控制单元发出的写数据满帧信号wframe 属于控制信号,他从写时域进入读时域必须采用同步器实现信号同
步,将写时域的满帧信号wframe 变换为读时域的满帧信号rframe 。由于信号是从高时钟域(66M Hz )流向低时钟域(40M Hz ),因此采用如图4所示的同步器[3]。
图4 同步器
同步器时序图如图5所示,可见在写时域的满帧信号
wframe 经过3个clka 周期延后跨越到读时钟域。
图5 同步器时序图
2.3 读控制单元设计
数据从写时域传递到读时域,时钟发生了变化,而且读控制单元的行为受到写控制单元及Dual Port RAM 中数据的存储情况的双重制约,因此他的设计是整个芯片设计成功的关键。
由于当Dual Port RAM 中写入一帧完整的正确数据后才能输出,所以读控制首先必须判断Dual Port RAM 一帧是否写满。检测到满帧信号rframe 后,在等待输出数据帧头信号rfp 到来后控制读指针waddr 移动读出数据,并置位rvalid 表征输出数据的可靠性。
部分程序设计如下:
--read control
process (clkb ,rst ) begin
if (rst =′0′
)then raddr <=(others =>′0′); elsif (clkb ′EV EN T and clkb =′1′
)then if (rcntf ="11"and rfp2=′0′
)then raddr <=raddr +"100";
elsif (rvalid =′1′
)then raddr <=radd_r +′1′; end if ; end if ;end process ;
process (clkb ,rst )begin
if (rst =′0′
)then rcntf <=(others =>′0′); elsif (clkb ′EV EN T and clkb =′1′)then if (rf rame =′1′and rfp2=′0′
)then rcntf <=rcntf +′1′; elsif (rf rame =′0′and rfp2=′1′and (rcntf ="01"or rc 2nt_f ="10"or rcnt_f ="11"))then
1
31《现代电子技术》2007年第21期总第260期
测试・测量・自动化