一种实现数据并串转换无缝输出的系统及方法

文档序号:6613858阅读:196来源:国知局
专利名称:一种实现数据并串转换无缝输出的系统及方法
技术领域
本发明涉及数据通信领域,尤其涉及一种实现数据并串转换无缝输出的系 统及方法。
背景技术
数据通信中经常要对数据进行并串转换及发送,如图1所示。数据的并串 转换实现起来比较容易,但实现数据的无缝传送则比较困难,这是因为并行数 据输入部分和串行数据输出部分很可能不用一个时钟同步,或者传输速率不一 样。并行数据的写入和并串转换都需要一个时间,这个时间往往也会造成输出 的数据不连续。
现有技术是在图1中的串行数据输出后面再加一级先入先出队列FIFO, 通过FIFO和并串转换部分的相互握手来实现数据的无缝输出,如图2所示。 使用单缓冲区的FIFO实现数据的串行输出比较容易,但是实现无缝输出相对 困难。因为,在实现中FIFO里的串行数据减少到一个门限值后,外界数据源 向FIFO加载一系列数据。在加载该数据时,为了保证无缝输出,FIF0同时输 出串行数据,由于外界数据源给FIFO加载数据的速度要大于FIFO串行输出数 据的速度,因此导致外界数据源难以确定将数据写到FIFO中的位置,进而容 易造成数据覆盖(叠加)或者产生空数据(产生传输缝隙)。为了解决此问题, 对FIFO和数据源(并串转换部分)之间的握手机制要求较高,导致实现复杂。

发明内容
为了解决上述技术问题,本发明提出一种实现数据并串转换无缝输出的系 统及方法,目的在于有效避免可能发生的数据叠加和传输缝隙,并使实现数据 并串转换的无缝输出的方法和系统简单。
本发明公开了一种实现数据并串转换无缝输出的系统,包括用于提供并行
数据的并行数据源模块,还包括并行数据接收模块,包括有左右缓冲区,用于接收缓存所述并行数据,而 且当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中数据读 取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左缓冲区 中读取数据;
并行数据输入切换控制模块,用于控制选择左右缓冲区之一写入并行数
据;
串行数据输出模块,包含有输出切换,用于从所述缓冲区中读取数据并无 缝输出数据,其中输出切换控制从左右缓冲区之一读取数据。 所述系统还包括
第一标志位控制模块,用于标志所述左右缓冲区数据是否处于写满状态, 左右缓冲区都写满时,将第一标志位置为左缓冲区写满,在左缓冲区写满时, 将第一标志位置为左缓冲区写满,在右缓冲区写满时,将第一标志位置为右缓
冲区写满;
第二标志位控制模块,用于标志缓冲区数据是否写入,在缓冲区数据写满 时,第二标志位控制模块将第二标志位置为等待状态,在左右缓冲区之一的数 据被读完时,第二标志位控制模块将第二标志位从所述等待状态置为数据写入 状态。
所述系统还包括计数模块,用于控制串行数据输出模块根据其当前数值将 所述左右缓冲区之一的对应比特数据输出,所述计数模块计数达到循环计数最 大值时,所述缓冲区之一的数据串行输出完成。
所述计数模块还包括第三标志位,其在初始态和所述缓冲区之一的数据串 行输出完成后跟随第一标志位,用于选择所述缓冲区之一读取数据。
所述系统,还包括串行输出时钟生成模块,用于同步计数模块、串行数据 输出模块和第二标志位控制模块,所述串行输出时钟是一个周期固定的持续时 钟。
本发明还公开了一种实现数据并串转换无缝输出的方法,包括如下步骤
(1) 并行数据源向并行数据接收模块中的左右缓冲区依次写入数据;
(2) 所述左右缓冲区都写满数据后,串行数据输出模块先从左缓冲区中 读取数据,在左缓冲区数据读取完后,再从右缓冲区中读取数据;
(3) 当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中数据读取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左 缓冲区中读取数据;
(4)依此交替读取数据和写入数据,以实现数据的无缝输出。 所述实现数据并串转换无缝输出的方法,还包括步骤
(81) 所述左、右缓冲区都写满数据时,将第一标志位置为左缓冲区写满 状态,所述左缓冲区写满后,将第一标志位置为左缓冲区写满状态,所述右缓 冲区写满后,将第一标志位置为右缓冲区写满状态,此时,将第二标志位置为 等待状态;
(82) 在所述缓冲区的数据被读完后,将所述第二标志位从所述等待状态
置为数据写入状态,根据第一标志位,控制选择缓冲区进行数据写入,根据第 一标志位,控制选择缓冲区进行数据读取。
所述的实现数据并串转换无缝输出的方法,写入数据的速度大于缓冲区串 行数据的输出速度。
所述的实现数据并串转换无缝输出的方法,步骤82还包括在串行数据
输出模块按计数模块当前值从左右缓冲区之一发送对应比特,计数模块达到循 环计数最大值时,所述缓冲区的数据被读取完成。
本发明的有益效果在于能将并串转换后的数据无缝输出,并且相对于现有 技术,实现更为简单。


图l是现有技术的并串转换示意图2是现有技术的实现并串转换无缝输出的示意图3是本发明实现数据并串转换无缝输出方法的原理图4是本发明实现数据并串转换无缝输出的内部机理示意图5是第一标志位控制模块5的一个实施例流程图6是计数模块7的一个实施例流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明公开的一种实现数据并串转换无缝输出的系统及方法。其中实现数 据并串转换无缝输出的系统,包括
并行数据源模块l,用于提供并行数据;
并行数据接收模块3,包括有两个缓冲区,用于接收缓存所述并行数据, 且当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中数据读 取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左缓冲区 中读取数据;
并行数据输入切换控制模块2,用于控制选择左右缓冲区之一写入并行数
据;
串行数据输出模块4,包含有输出切换,用于从所述缓冲区中读取数据并 输出数据,其中输出切换控制从左右缓冲区之一读取数据;
标志位FLAG1控制模块5,用于标志所述左右缓冲区数据是否处于写满状 态,左右缓冲区都写满时,将标志位FLAG1置为左缓冲区写满,在左缓冲区写 满时,将FLAG1置为左缓冲区写满,在右缓冲区写满时,将FLAG1置为右缓冲 区写满;
标志位FLAG2控制模块6,用于标志缓冲区数据是否写入,在缓冲区数据 写满时,将标志位FLAG2置为等待状态,在左右缓冲区之一的数据被读完时, 将FLAG2从所述等待状态置为数据写入状态;
计数模块7,用于控制串行数据输出模块4根据其当前数值将所述左右缓 冲区之一的对应比特数据输出,计数模块7计数达到循环计数最大值时,所述 缓冲区之一的数据串行输出完成,然后,计数模块7重新从最小值开始计数, 指示串行数据输出模块4输出另一缓冲区对应比特数据;
串行输出时钟生成模块8,用于同步计数模块7、串行数据输出模块2和 FLAG2控制模块6。
计数模块7还包括标志位FLAG3,其在初始态和发送完一个缓冲区数据后 跟随FLAG1的数值,指示串行数据输出模块4选择左右缓冲区之一读取数据。 本说明书中,将一个缓冲区大小的数据称为一帧。 如图3所示,数据并串转换无缝输出的方法包括如下歩骤 第一步,在初始状态时,并行数据源l写满左右两个缓冲区之后,FLAG1控制模块5将FLAGl置为左缓冲区写满状态;
第二步,串行数据输出模块4扫描FLAG1,发现其状态指示可以输出数据, 从左缓冲区31开始读取数据串行输出,数据输出完成后,FLAG2控制模块6 将FLAG2置为数据写入状态,FLAG1控制模块5将FLAG1置为右缓冲区写满状 态;
第三步,串行数据输出模块4根据FLAG1状态从右缓冲区32中读取数据, 同时并行数据源1根据FLAG2状态写入并行数据,并行数据输入切换控制模块 2根据FLAG1状态控制并行数据写入左缓冲区31,左缓冲区31写满数据时, FLAG1控制模块5将FLAG1置为左缓冲区写满状态,同时,FLAG2控制模块6 将FLAG2置为等待状态,之后,当串行数据输出模块4从右缓冲区32中读取 数据完成时,FLAG2控制模块6将FLAG2置为数据写入状态;
第四步,串行数据输出模块4根据FLAG1状态从左缓冲区31中读取数据, 同时并行数据源1根据FLAG2状态写入并行数据,并行数据输入切换控制模块 2根据FLAG1状态控制并行数据写入右缓冲区32,右缓冲区32写满数据时, FLAG1控制模块5将FLAG1置为右缓冲区写满状态,同时,FLAG2控制模块6 将FLAG2置为等待状态,之后,当串行数据输出模块4从左缓冲区31中读取 数据完成时,FLAG2控制模块6将FLAG2置为数据写入状态;
第五步,依此重复第三、四步,完成无缝数据发送。
在上述方法中,并行数据源模块l不选择数据写入的缓冲区,它仅通过判 断FLAG2的状态,决定是否发送一帧数据给缓冲区,并行数据输入切换控制模 块2根据FLAG1的状态,控制选择左右缓冲区之一写入并行数据。
在上述方法中,并行数据的写入速度大于串行数据的输出速度。这样,并 行数据源1总是先写满一个缓冲区,然后轮询FLAG2,等待写入下一帧数据的 指示,满足串行数据输出模块4总可以有数据发送,实现串行数据无缝输出。 需要注意的是,在输出切换时, 一定要保证数据切换干净,没有丢失数据或者 重复数据。
在上述方法中,串行数据输出模块4按计数模块7当前值从左右缓冲区之 一发送对应比特,计数模块7达到循环计数最大值时,此缓冲区的数据被读取 完成。
在上述方法中,使用串行输出时钟生成模块8同步计数模块7、串行数据输出模块4和FLAG2控制模块6,该串行输出时钟生成模块为一个周期固定, 持续时钟。
本发明所述方法的内部机理如图4所示。
本发明所述方法的内部机理是由系统各个模块和各模块之间的相互作用 形成的。图中箭头连线表示控制方向。
并行数据源模块1写入数据到并行数据接收模块3,并行数据输入切换控 制模块2通过控制线CL3控制选择左右缓冲区之一写入数据。每次写满一个缓 冲区,并行数据源1通过控制线CL2控制FLAG1控制模块5根据FLAG1上一次 的状态来确定其下一个状态,因此,FLAG1用来表示左右缓冲区数据写满状态。 在初始状态时,在左右缓冲区都写满时,控制FLAG1为左缓冲区写满状态,在 左缓冲区第一次被读取完时,控制将FLAG1置为右缓冲区写满状态。
FLAG1控制模块5通过控制线CL4通知并行数据输入切换控制模块2缓冲 区写满状态,并行数据输入切换控制模块2根据此控制选择左右缓冲区之一写 入数据。
串行输出时钟生成模块生成时钟,通过控制线CL1同步计数模块7、串行 数据输出模块4和FLAG2控制模块6。
计数模块7在左、右两个缓冲区中都没有数据时,不计数,保持初始状态。 FLAG1控制模块5通过控制线CL9用FLAG1的状态通知计数模块左右缓冲区的 数据写满状态。初始状态时,FLAG1为00时表示左、右两个缓冲区均为空, 当左右两个缓冲区都写满时,FLAG1为左缓冲区写满状态,从而触发计数模块 7开始计数。
计数模块7和FLAG1控制模块5分别通过控制线CL6和CL5控制串行数据 输出模块4。串行数据输出模块4根据计数模块7的当前数值来将左右缓冲区 之一中的对应比特输出。FLAG1控制模块5通过FLAG1通知串行数据输出模块 4左右缓冲区的写满状态,串行数据输出模块4输出写满的缓冲区中的数据。 计数模块7中设置FLAG3来保存FLAG1的状态,直到计数模块7计数到循环计 数最大值时才容许FLAG3改变。串行数据输出模块4中的切换功能依据FLAG3 表示的缓冲区写满状态选择数据读取缓冲区。
当计数模块7中的计数到达循环计数最大值时,代表一帧的数据将要输出 完成,通过控制线CL7通知FLAG2控制模块6。 FLAG2控制模块6将FLAG2置为数据写入状态,通过控制线CL8通知并行数据源模块1开始写入下一帧数据。 通过系统内各个模块的并行执行和互相传递标志位,完成了数据的并串转 换的无缝输出。
图5为FLAG1控制模块5的一个具体实施例。FLAG1为00表示两个缓冲 区为空,FLAG1为01表示左边缓冲区写满,为10表示右边缓冲区写满。 步骤S51,复位后FLAG1值为00;
步骤S52,判断是否发生下面三种情况之一,如果发生,则执行步骤S53, 否则,FLAG1值不变,
情况l,在非初始状态时,并行数据源写满一缓冲区,
情况2,在初试状态时,并行数据源写满两个缓冲区,
情况3,在初始状态时,左缓冲区数据被读取完成;
步骤S53,判断FLAG1的值,
如果FLAG1值为10,则执行步骤S54,
如果FLAG1值为00,则执行步骤S55,
如果FLAGl值为Ol,则执行歩骤S56;
步骤S54,将FLAG1值反转为01;
步骤S55,将FLAG1值置为01;
步骤S56,将FLAG1值反转为10。
图6所示为计数模块7的一个具体实施例。
实施例中增加了一个FLAG3,其在初始态和发送完一帧数据后跟随FLAG1 的数值,指示串行数据输出模块4选择左右缓冲区之一读取数据。不使用FLAG1 指示串行数据输出模块4,是因为FLAG1在计数模块7的中间值也即一个缓冲 区没有读完的情况下,发生状态变化。
步骤S61,初始状态时,C0N为0, FLAG3为00,等待FLAG1从00翻转到 其他状态,FLAG3跟随FLAG1变化,如果FLAG1不变,CON—直保持不变;
步骤S62,查询C0N的数值,C0N为0时,执行步骤S63, CON为最大值时, 执行步骤S64, C0N为0和最大值之间数值时,执行步骤S67;
步骤S63,判断FLAG1是否从00翻转到其他状态,如果FLAG1已经翻转 到其他状态,表示左右缓冲区之一写满数据,则执行步骤S65,否则,跳转回 步骤S62;步骤S64,判断另一个缓冲区是否写满,如果写满,则执行步骤S66,否则 跳转回步骤S62;
步骤S65, C0N值由0变为1, FLAG3记录FLAG1的状态,启动一帧数据的 发送,发送时根据FLAG3来选择左右缓冲区之一的数据;
步骤S66, C0N值由最大值变为1, FLAG3记录FLAG1的状态,启动下一帧 数据的发送,发送时根据FLAG3来选择左右缓冲区之一的数据;
步骤S67, C0N数值加1。
计数模块7计数到循环计数最大值时,如果并行数据源1还没有写满另一 个缓冲区,只有等待,这样串行输出数据将不再连续。 FLAG2控制模块6的一个具体实施例如下所述
这里规定FLAG2为高时,为数据写入状态表示并行数据源1可以写下一帧 数据,为低时,为等待状态表示并行数据源l需要继续等待。
在初始状态时,左右两个缓冲区都为空时,FLAG2为高,且保持。
在初始状态时,写满第二个缓冲区时,FLAG2置为低。
当计数模块7计数到循环计数最大值时,如果另一个缓冲区已经写满, FLAG2变为高。
当计数模块7计数在中间值时,如果另一个缓冲区已经写满,FLAG2置低, 如果另一个缓冲区没有写满,FLAG2置高。
权利要求
1. 一种实现数据并串转换无缝输出的系统,包括用于提供并行数据的并行数据源模块,其特征在于,还包括并行数据接收模块,包括有左右缓冲区,用于接收缓存所述并行数据,而且当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中数据读取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左缓冲区中读取数据;并行数据输入切换控制模块,用于控制选择左右缓冲区之一写入并行数据;串行数据输出模块,包含有输出切换,用于从所述缓冲区中读取数据并输出,其中输出切换控制从左右缓冲区之一读取数据。
2. 根据权利要求l所述的数据并串转换无缝输出的系统,其特征在于, 所述系统还包括第一标志位控制模块,用于标志所述左右缓冲区数据是否处于写满状态, 左右缓冲区都写满时,将第一标志位置为左缓冲区写满,在左缓冲区写满时, 将第一标志位置为左缓冲区写满,在右缓冲区写满时,将第一标志位置为右缓冲区写满;第二标志位控制模块,用于标志缓冲区数据是否写入,在缓冲区数据写满 时,第二标志位控制模块将第二标志位置为等待状态,在左右缓冲区之一的数 据被读完时,第二标志位控制模块将第二标志位从所述等待状态置为数据写入 状态。
3. 根据权利要求l所述的数据并串转换无缝输出的系统,其特征在于, 所述系统还包括计数模块,用于控制串行数据输出模块根据其当前数值将所述 左右缓冲区之一的对应比特数据输出,所述计数模块计数达到循环计数最大值 时,所述缓冲区之一的数据串行输出完成。
4. 根据权利要求2所述的数据并串转换无缝输出的系统,其特征在于, 所述系统还包括计数模块,用于控制串行数据输出模块根据其当前数值将所述 左右缓冲区之一的对应比特数据输出,所述计数模块计数达到循环计数最大值 时,所述缓冲区之一的数据串行输出完成。
5. 根据权利要求4所述的数据并串转换无缝输出的系统,其特征在于, 所述计数模块还包括第三标志位,其在初始态和所述缓冲区之一的数据串行输 出完成后跟随第一标志位,用于选择所述缓冲区之一读取数据。
6. 根据权利要求5所述的数据并串转换无缝输出的系统,其特征在于, 还包括串行输出时钟生成模块,用于同歩计数模块、串行数据输出模块和第二 标志位控制模块,所述串行输出时钟是一个周期固定的持续时钟。
7. —种实现数据并串转换无缝输出的方法,其特征在于,包括如下歩骤(1) 并行数据源向并行数据接收模块中的左右缓冲区依次写入数据;(2) 所述左右缓冲区都写满数据后,串行数据输出模块先从左缓冲区中 读取数据,在左缓冲区数据读取完后,再从右缓冲区中读取数据;(3) 当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中 数据读取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左 缓冲区中读取数据;(4) 依此交替读取数据和写入数据,以实现数据的无缝输出。
8. 根据权利要求7所述的实现数据并串转换无缝输出的方法,其特征在 于,还包括步骤(81) 所述左、右缓冲区都写满数据时,将第一标志位置为左缓冲区写满 状态,所述左缓冲区写满后,将第一标志位置为左缓冲区写满状态,所述右缓 冲区写满后,将第一标志位置为右缓冲区写满状态,此时,将第二标志位置为 等待状态;(82) 在所述缓冲区的数据被读完后,将所述第二标志位从所述等待状态 置为数据写入状态,根据第一标志位,控制选择缓冲区进行数据写入,根据第 一标志位,控制选择缓冲区进行数据读取。
9. 根据权利要求7所述的实现数据并串转换无缝输出的方法,其特征在于,写入数据的速度大于缓冲区串行数据的输出速度。
10. 根据权利要求8所述的实现数据并串转换无缝输出的方法,其特征在 于,步骤82还包括在串行数据输出模块按计数模块当前值从左右缓冲区之 一发送对应比特,计数模块达到循环计数最大值时,所述缓冲区的数据被读取 完成。
全文摘要
本发明公开了一种实现数据并串转换无缝输出的系统,包括用于提供并行数据的并行数据源模块,还包括并行数据接收模块,包括有左右缓冲区,用于接收缓存所述并行数据,而且当右缓冲区中数据读取时,向左缓冲区中写入数据,并在右缓冲区中数据读取完成前写满左缓冲区,以用于右缓冲区中数据读取完成后,开始从左缓冲区中读取数据;并行数据输入切换控制模块,用于控制并行数据源模块选择左右缓冲区之一进行并行数据写入;串行数据输出模块,包含有输出切换,用于从所述缓冲区中读取数据并无缝输出串行数据,其中输出切换控制从左右缓冲区之一读取数据,从而实现数据并串转换无缝输出。
文档编号G06F13/38GK101441610SQ20071017786
公开日2009年5月27日 申请日期2007年11月21日 优先权日2007年11月21日
发明者郭正钧 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1