基于fpga的高速数据旋转控制装置和方法

文档序号:2498646阅读:152来源:国知局
专利名称:基于fpga的高速数据旋转控制装置和方法
技术领域
本发明涉及数码印花控制领域及FPGA技术,尤其涉及一种基于FPGA的高速数据 旋转控制装置和方法。
背景技术
随着数码印花机的飞速发展,数码打印产业的快速增长,对数码印花速度有了更 高的要求,需要有更快数据处理能力的控制装置来实现数码印花机的数据处理。近年来FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑替代的应用转变 为能够面向复杂的计算密集型应用。最新推出的FPGA器件中,不仅集成有丰富的可配置逻 辑块资源(Configurable Logic Block, CLB),还包括大量面向计算密集应用的DSP单元、 块状RAM(BlockRAM,BRAM)和用于高速串行通信的RocketIO GTP收发器单元。同时为方便 FPGA的调试,各FPGA厂商还推出了片内逻辑分析测试工具(如Xilinx公司的ChipScope), 在软硬件上保证了在FPGA上实现高性能计算的可行性。针对数码印花机自定义接口及高速数据传输的要求,需要有专用系统作为数码印 花机的数据处理。相对与通用计算机对于数码印花机的数据处理,特别是要求数据按bit 位的旋转,通用计算机的处理速度远远无法达到印花机的要求,所以通过专用系统来实现 数据高速旋转来提高印花机的工作效率。

发明内容
本发明提供了一种高可靠性、高吞吐量的基于FPGA的高速数据旋转控制装置。一种基于FPGA的高速数据旋转控制装置,包括数据接收器,用于块数据的接收;数据输入分配器,连接数据接收器和三个数据缓存器,用于将数据接收器接收的 块数据进行分流输入控制;三个数据缓存器,连接数据输入分配器、数据输出分配器和各自对应的数据旋转 器,用于原始块数据和旋转后块数据的缓存;三个数据旋转器,连接各自对应的数据缓存器,用于数据的旋转;(每个数据缓存器和每个数据旋转器为一组,共三组)数据输出分配器,连接数据输出器和三个数据缓存器,用于将三个数据缓存器发 送的块数据进行选择输出控制;数据输出器,连接数据输出分配器,用于块数据的并行输出;尽管本发明基于FPGA的高速数据旋转控制装置的各个组成部分的功能可以通过 通用计算机的编程实现,但是本发明采用FPGA中的特定功能块来实现,可以完成更高的数 据旋转效率。本发明还提供了一种基于FPGA的高速数据旋转控制方法。一种基于FPGA的高速数据旋转控制方法,包括块数据接收控制的步骤,块数据分
4流输入控制的步骤,数据处理的流水线控制的步骤,块数据选择输出控制的步骤和块数据 输出控制的步骤,其中,块数据接收控制的步骤,由数据接收器根据数据输入分配器的空闲状态来实现;块数据分流输入控制的步骤,在由数据接收器将块数据接收后,根据三个数据缓 存器空闲状态来决定块数据的分流输入控制;数据处理的流水线控制的步骤,三个数据缓存器分别对应有三个工作阶段,块数 据的写入,块数据的旋转和块数据的读出,数据处理的流水线工作如下第一阶段,第一数据缓存器开始块数据的写入,第二数据缓存器(和第三数据缓 存器处于空闲状态,不做任何动作;第二阶段,第一数据缓存器开始块数据的旋转,第二数据缓存器开始块数据的写 入,第三数据缓存器处于空闲状态不做任何动作;第三阶段,第一数据缓存器开始块数据的读出,第二数据缓存器开始块数据的旋 转,第三数据缓存器开始块数据的写入;第四阶段,第一数据缓存器开始块数据的写入,第二数据缓存器开始块数据的读 出,第三数据缓存器开始块数据的旋转;第五阶段,第一数据缓存器开始块数据的旋转,第二数据缓存器开始块数据的写 入,第三数据缓存器开始块数据的读出;......以此类推,循环操作,形成块数据的写入,块数据的旋转和块数据的读出三
级流水线工作,以此提高数据的吞吐量。块数据选择输出控制的步骤,根据三个数据缓存器的块数据输出完成状态来决定 块数据的选择输出控制;块数据输出控制的步骤,由数据输出器根据数据输出分配器的完成状态来实现。数据接收器检查数据输入分配器是否处于空闲状态,若是,则进行块数据接收;若 否,则不进行块数据接收。输入分配器按照第一数据缓存器,第二数据缓存器和第三数据缓存器的次序判断 输入完成状态的步骤如下A.数据输入分配器检查第一数据缓存器是否处于数据输入完成状态,若是,则检 查第二数据缓存器的输入完成状态,若否,则将块数据分配至第一数据缓存器;B.数据输入分配器检查第二数据缓存器是否处于数据输入完成状态,若是,则检 查第三数据缓存器的输入完成状态,若否,则将块数据分配至第二数据缓存器;C.数据输入分配器检查第三数据缓存器是否处于数据输入完成状态,若是,则检 查第一数据缓存器的输入完成状态,若否,则将块数据分配至第三数据缓存器;数据分流输入控制循环A,B, C步骤。输出分配器按照第一数据缓存器,第二数据缓存器和第三数据缓存器的次序判断 输出完成状态的步骤如下D.数据输出分配器检查第一数据缓存器是否处于输出完成状态,若是,则检查第 二数据缓存器的输出完成状态,若否,则数据分配器将第一数据缓存器的数据输出送至数 据输出器;E.数据输出分配器检查第二数据缓存器是否处于输出完成状态,若是,则检查第
5三数据缓存器的输出完成状态,若否,则数据分配器将第二数据缓存器的数据输出送至数 据输出器;F.数据输出分配器检查第三数据缓存器是否处于输出完成状态,若是,则检查第 一数据缓存器的输出完成状态,若否,则数据分配器将第三数据缓存器的数据输出送至数 据输出器;数据选择输出控制循环D,E,F步骤。本发明方法对块数据的处理的采用流水线控制,工作如下第一阶段,开始A步骤;第二阶段,开始第一数据缓存器的块数据旋转,开始B步骤;第三阶段,开始第二数据缓存期的块数据旋转,开始D步骤,开始C步骤;第四阶段,开始第三数据缓存器的块数据旋转,开始E步骤,开始A步骤;第五阶段,开始第一数据缓存器的块数据旋转,开始F步骤,开始B步骤;......以此循环开始三级流水线的工作流程。数据输出器检查数据输出分配器是否有数据输出状态,若是,则将数据输出分配 器发送的块数据由数据输出器输出,若否,则数据输出器不输出。采用通用计算机来完成图像数据的旋转,对于一个200MByte大小的数据,需要15 分钟的旋转时间,采用本发明处理系统和处理方法,需要9秒的旋转时间,可以明显看出, 本发明处理系统和处理方法可以实现数据的高速处理,采用并行的三级流水线处理模式, 数据旋转速度可以达到60Mbyte/s的平均处理速度。


图1为本发明控制装置的结构示意框图;图2为本发明控制装置的三级流水线操作示意图;图3为本发明控制装置的缓存器内部操作有限状态机跳转图;图4为本发明控制方法的数据流控制流程图。
具体实施例方式如图1所示,本发明控制装置的结构,包括数据接收器110,用于块数据的接收,块数据为数码印花机的一个待打印的扫描行 (现有数码印花技术中,根据打印机的喷头个数将完整的图像分割成若干个扫描行);在现 有数码印花机领域中,一般是工业计算机通过软件将待打印扫描行进行旋转,而本发明是 将待打印的扫描行从工业计算机传输至数据接收器110后再进行旋转。为了适应工业计算 机与数据接收器110之间的数据传输,可以是工业计算机先将待打印的扫描行进行打包, 再通过中间设备转发(其中包括对打包后数据的接收、解析等)至数据接收器110。中间设 备可以采用通用的嵌入式处理器以及相应的存储芯片。数据输入分配器120,连接数据接收器110,第一数据缓存器130,第二数据缓存器 150和第三数据缓存器170,用于将数据接收器110接收的块数据进行分流输入控制;第一数据缓存器130,连接数据输入分配器120,第一数据旋转器140和数据输出 分配器190,用于原始块数据和旋转后块数据的缓存;
第一数据旋转器140,连接第一数据缓存器130,用于数据的旋转;第二数据缓存器150,连接数据输入分配器120,第二数据旋转器160和数据输出分配器190,用于原始块数据和旋转后块数据的缓存;
第二数据旋转器160,连接第二数据缓存器150,用于数据的旋转;第三数据缓存器170,连接数据输入分配器120,第三数据旋转器180和数据输出 分配器190,用于原始块数据和旋转后块数据的缓存;第三数据旋转器180,连接第三数据缓存器170,用于数据的旋转;数据输出分配器190,连接第一数据缓存器130,第二数据缓存器150,第三数据缓 存器170和数据输出器160,用于将第一数据缓存器130,第二数据缓存器150,第三数据缓 存器170发送的块数据进行选择输出控制;数据输出器200,连接数据输出分配器190,用于块数据的并行输出,并行输出至 数码印花机数据喷头。本发明基于FPGA的高速数据旋转控制方法,包括块数据接收控制的步骤,块数据 分流输入控制的步骤,数据处理的流水线控制的步骤,块数据选择输出控制的步骤和块数 据输出控制的步骤,块数据接收控制的步骤,由数据接收器110根据数据输入分配器120的空闲状态 来实现;块数据分流输入控制的步骤,在由数据接收器110将块数据接收后,根据第一数 据缓存器130,第二数据缓存器150,第三数据缓存器170的输入未完成状态来决定块数据 的分流输入控制;数据处理的流水线控制的步骤,数据处理的流水线工作如下第一阶段,第一数据缓存器130,开始块数据的写入,第二数据缓存器150和第三 数据缓存器170处于空闲状态,不做任何动作;第二阶段,第一数据缓存器130开始块数据的旋转,第二数据缓存器150开始块数 据的写入,第三数据缓存器170处于空闲状态不做任何动作;第三阶段,第一数据缓存器130,开始块数据的读出,第二数据缓存器150开始块 数据的旋转,第三数据缓存器170开始块数据的写入;第四阶段,第一数据缓存器130,开始块数据的写入,第二数据缓存器150开始块 数据的读出,第三数据缓存器170开始块数据的旋转;第五阶段,第一数据缓存器130,开始块数据的旋转,第二数据缓存器150开始块 数据的写入,第三数据缓存器170开始块数据的读出;......以此类推,循环操作,形成块数据的写入,块数据的旋转和块数据的读出三
级流水线工作,以此提高数据的吞吐量。块数据选择输出控制的步骤,根据第一数据缓存器130,第二数据缓存器150,第 三数据缓存器170的块数据输出完成状态来决定块数据的选择输出控制;块数据输出控制的步骤,由数据输出器200根据数据输出分配器190的完成状态 来实现。如图2所示,本发明控制装置的三级流水线操作示意图数据处理的流水线控制,工作如下
第一阶段,开始第一数据缓存器130的块数据写入;第二阶段,开始第一数据缓存器130的块数据旋转,开始第二数据缓存器150的块 数据写入;第三阶段,开始第二数据缓存器150的块数据旋转,开始第一数据缓存器130的块 数据读出,开始第三数据缓存器170的块数据写入;第四阶段,开始第三数据缓存器170的块数据旋转,开始第二数据缓存器150的块 数据读出,开始第一数据缓存器130的块数据写入;第五阶段,开始第一数据缓存器130的块数据旋转,开始第三数据缓存器170的块 数据读出,开始第二数据缓存器150的块数据写入;......以此循环开始三级流水线的工作流程。如图3所示,本发明控制装置的缓存器内部操作有限状态机空闲状态,缓存器内部不做任何操作;数据输入状态,缓存器内部将执行数据的写入过程;数据旋转状态,缓存器内部执行数据的旋转操作;数据输出状态,缓存器内部执行数据的读取操作。系统复位后,缓存器内部处于空闲状态,不做任何的操作,当有数据写入的请求 时,进入数据输入状态,执行数据的写入过程,当数据写入完毕之后,进入数据旋转状态,执 行数据的旋转操作,当数据旋转完毕之后,进入数据输出状态,执行数据的读取输出操作, 当数据输出完毕之后,进入空闲状态,等待数据写入的请求。如图4所示,本发明控制方法的数据流控制图系统复位后,块数据输入,判断三个缓存器的空闲标志位,决定是否接收数据,若 否,则等待空闲标志位有效,若是,开始图2所示的三级流水线的操作,循环操作,直至块数 据的输入停止。
权利要求
一种基于FPGA的高速数据旋转控制装置,其特征在于,包括数据接收器(110),用于块数据的接收;数据输入分配器(120),连接数据接收器(110),第一数据缓存器(130),第二数据缓存器(150)和第三数据缓存器(170),用于将数据接收器(110)接收的块数据进行分流输入控制;第一数据缓存器(130),连接数据输入分配器(120),第一数据旋转器(140)和数据输出分配器(190),用于原始块数据和旋转后块数据的缓存;第一数据旋转器(140),连接第一数据缓存器(130),用于数据的旋转;第二数据缓存器(150),连接数据输入分配器(120),第二数据旋转器(160)和数据输出分配器(190),用于原始块数据和旋转后块数据的缓存;第二数据旋转器(160),连接第二数据缓存器(150),用于数据的旋转;第三数据缓存器(170),连接数据输入分配器(120),第三数据旋转器(180)和数据输出分配器(190),用于原始块数据和旋转后块数据的缓存;第三数据旋转器(180),连接第三数据缓存器(170),用于数据的旋转;数据输出分配器(190),第一数据缓存器(130),第二数据缓存器(150)和第三数据缓存器(170)和数据输出器(200),用于将第一数据缓存器(130),第二数据缓存器(150)和第三数据缓存器(170)发送的块数据进行选择输出控制;数据输出器(200),连接数据输出分配器(190),用于块数据的并行输出。
2.一种基于FPGA的高速数据旋转控制方法,包括块数据接收控制的步骤,块数据分流 输入控制的步骤,数据处理的流水线控制的步骤,块数据选择输出控制的步骤和块数据输 出控制的步骤,其特征在于块数据接收控制的步骤,数据接收器(110)判断数据输入分配器(120)的空闲状态, 当数据输入分配器(120)空闲时,数据接收器(110)接收块数据再传输至数据输入分配器 (120);块数据分流输入控制的步骤,输入分配器(120)按照第一数据缓存器(130),第二数据 缓存器(150)和第三数据缓存器(170)的次序判断输入完成状态,将块数据发送至处于未 完成状态的且顺序在前的一个数据缓存器;数据处理的流水线控制的步骤,第一数据缓存器(130),第二数据缓存器(150)和第三 数据缓存器(170)各自对输入分配器(120)发送的数据块进行块数据的写入,块数据的旋 转和块数据的输出操作;块数据选择输出控制的步骤,输出分配器(190)按照第一数据缓存器(130),第二数据 缓存器(150)和第三数据缓存器(170)的次序判断输出完成状态,选择处于输出完成状态 的且顺序在前的一个数据缓存器;块数据输出控制的步骤,由数据输出器根据数据输出分配器的完成状态进行输出。
3.如权利要求2所述的高速数据旋转控制方法,其特征在于,所述的块数据分流输入 控制的步骤中,输入分配器(120)按照第一数据缓存器(130),第二数据缓存器(150)和第 三数据缓存器(170)的次序判断输入完成状态的步骤如下A.数据输入分配器(120)检查第一数据缓存器(130)是否处于数据输入完成状态,若 是,则检查第二数据缓存器(150)的输入完成状态,若否,则将块数据分配至第一数据缓存器(130);B.数据输入分配器(120)检查第二数据缓存器(150)是否处于数据输入完成状态,若 是,则检查第三数据缓存器(150)的输入完成状态若否,则将块数据分配至第二数据缓存 器(150);C.数据输入分配器(120)检查第三数据缓存器(170)是否处于数据输入完成状态,若 是,则检查第一数据缓存器(150)的输入完成状态若否,则将块数据分配至第三数据缓存 器(170);数据分流输入控制循环A,B, C步骤。
4.如权利要求3所述的高速数据旋转控制方法,其特征在于,所述的块数据选择输出 控制的步骤中,输出分配器(190)按照第一数据缓存器(130),第二数据缓存器(150)和第 三数据缓存器(170)的次序判断输出完成状态的步骤如下D.数据输出分配器(190)检查第一数据缓存器(130)是否处于输出完成状态,若是,则 检查第二数据缓存器(150)的输出完成状态,若否,则数据分配器(190)将第一数据缓存器 (130)的数据输出送至数据输出器(200);E.数据输出分配器(190)检查第二数据缓存器(150)是否处于输出完成状态,若是,则 检查第三数据缓存器(150)的输出完成状态,若否,则数据分配器(190)将第二数据缓存器 (150)的数据输出送至数据输出器(200);F.数据输出分配器(190)检查第三数据缓存器(170)是否处于输出完成状态,若是,则 检查第一数据缓存器(150)的输出完成状态,若否,则数据分配器(190)将第三数据缓存器 (170)的数据输出送至数据输出器(200);数据选择输出控制循环D,E,F步骤。
全文摘要
本发明公开了一种基于FPGA的高速数据旋转控制装置,包括数据接收器、数据输入分配器、数据缓存器、数据旋转器、数据输出分配器、数据输出器。本发明还提供了一种基于FPGA的高速数据旋转控制方法,包括块数据接收控制的步骤,块数据分流输入控制的步骤,数据处理的流水线控制的步骤,块数据选择输出控制的步骤和块数据输出控制的步骤。本发明通过实现数据的三级流水线的操作方式来提高数据的吞吐量,通过状态机的控制,来实现数据严格的循环操作,提高了系统的可靠性。
文档编号B41J29/00GK101797848SQ201010039578
公开日2010年8月11日 申请日期2010年1月7日 优先权日2010年1月7日
发明者田翔, 陈耀武 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1