串并转换与并串转换是高速数据流处理的重要技巧之一。其实现方法多种多样,根据数据的顺序和数量的不同要求,可以选用移位寄存器、双口RAM(Dual RAM)、SRAM、SDRAM或者FIFO 等实现。
带有高速收发器或LVDS等串行收发器的应用都包含了典型的串并转换与并串转换设计。以笔者在《XilinxFPGA伴你玩转USB3.0与LVDS》一书的第8章介绍的LVDS收发实验为例。如图3.21所示,FPGA接收到LVDS串行时钟s_clk和串行数据s_data,s_data是逐位传输的,每个s_clk时钟周期传输4bit数据。每2个s_clk时钟周期共传输8bit数据,这8bit数据就是实际应用中有具体意义的有效数据。因此,串并转换后,1bit位宽的s_data在2个s_clk时钟周期中累计送入的8bit数据,最终要转换为FPGA的并行时钟p_clk所同步的8bit位宽的并行数据p_data上。
图3.21 串并转换波形
由于LVDS的传输基于FPGA的硬件物理层结构,因此FPGA开发工具上通常都有配套支持的IP核供直接配置使用,串并转换(LVDS接收)或并串转换(LVDS发送)的工作都由IP核完成了,无需设计者自己写代码实现。
笔者在实际设计中,使用较多的是基于FIFO的串并转换或并串转换设计。如图3.22所示,左右两个FIFO,除了起到了数据缓存的作用,也起到了位宽变换,即串并转换(16bit转换为64bit)和并串转换(64bit转换为16bit)的作用。
图3.22 串并转换与并串转换应用
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !