由于当Dual Port RAM中写入一帧完整的正确数据后才能输出,所以读控制首先必须判断Dual Port RAM一帧是否写满。榆测到满帧信号rframe后,在等待输出数据帧头信号rfp到来后控制读指针waddr移动读出数据,并置位rvalid表征输出数据的可靠性。
部分程序没计如下:
3 多时钟域数据传递的FPGA实现
设计方案完成后选用Xilinx Spartan-II FPGA实现电路,并在Xilinx ISE6.0集成环境下用Modelsim5.7进行了电路仿真。
图6为写使能信号dataen恒为有效值“1”的仿真结果截图。
可见,在写使能信号dataen恒为有效值“1”的情况下,在写时钟clka控制下当写数据帧头信号sof有效时,写控制器开始写入数据,接收到连续8个数据后,写控制器发出一个帧满信号wframe。wframe信号经过异步转换后转换成clkb时钟域的信号。在读控制器的控制下,当clkb时钟处于上升沿,并且检测到读出数据帧头fp时,开始从outdata向外发送数据,并将valid置为有效。
图7为当写使能信号dataen变化时的仿真结果截图。
可见,将dataen置低后,系统不再接受写入数据,所以也不再输出数据,valid被置为低电平,输出数据无效。写控制的使能端控制达到要求。
4 结 语
针对异步并行通信接口芯片设计中涉及的多时钟域的数据传递问题,本文采用FIFO存储器来完成不同时钟域之间数据流传递、同步器来完成控制信号传递的方案。仿真验证结果表明,数据传递准确、稳定、可靠,没有出现竞争冒险和亚稳态,完全达到了设计要求。
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术