qiaoning6666

并串转换(原创)

0
阅读(5537)

并串转换

   并串转换想起来挺简单,但是实际设计起来还是需要费点周折的,近几天因为项目需要,需要设计一个并串转换的模块,以便完成与ADI芯片的通信。

    并串转换是有一定的限制的,时钟速率(串口数据速率)必须至少高于并口数据速率的N(N是代表并口数据的位宽)倍,如果时钟速率过低,则不可能完成数据的并串转换。并串转换模块的设计思想是先将得到的并口数据进行缓存,然后以较快的速率将并口数据以较快的速率给出来。下图是将位宽为两位的并行数据转换成串行数据的模块。

图1 并串转换模块

   下面来简单分析一下它的基本工作原理,data_in(1:0)是并行数据输入端,data_en是数据使能信号,第次并行数据到来时,data_en便会持续1个时钟周期,clk是系统工作时钟,rst_n是复位使能端,低电平有效,data_out是串行数据输出口,每个串行数据的持续一个系统时钟周期,data_valid是串行数据有效信号。在本模块的设计中,模块内部采用了一块4*2bit的RAM块,用来存储输入的并行数据,当并行数据每来4个时,便将四个并行数据一块转换成8位串行数据,并给出data_valid串行数据有效信号。下图2和图3是具体的逻辑功能仿真图。

图2 逻辑功能仿真图一

图3 逻辑功能仿真图二

    下面简单分析一下模块的工作原理。首先,当并行数据到来时,数据便会存入RAM块,并且RAM块的写地址总线便会加1,当并行数据的数量达到4个时,便会给出一个ram_full的指示信号,表示RAM块中已经存满了数据,这时就会驱动fie_2_div,fre_2_div实际上是clk的二分频,用它来作为RAM块读地址线的使能信号,因为并行数据的宽度是2,所以选择的是2分频,如果并行数据的宽度是N的话,则应该选择N分频,fie_2_div的有效时间是持续5个周期,data_valid是串口数据的使能端,从上图3可以看出,RAM块的数据读出放在data_reg里面,蓝色标尺的位置是data_valid第一个有效的时刻,从这个时刻算起往后7个系统时钟的上升沿便是串口数据的有效位置。

    总结:在设计本模块的时候,首先应该把握核心思想,确定读地址线跟串行数据输出的关系,准确的判定数据有效使能跟串行数据的关