微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > FPGA与USB技术在纺织品数字印刷机系统中的应用

FPGA与USB技术在纺织品数字印刷机系统中的应用

时间:08-08 来源:互联网 点击:


在PC与FX2LP的前端控制系统中,FX2LP的内置CPU负责接收上位PC机发来的命令对印刷机的运动进行操控, 并同步图像数据, 图像数据通过FPGA和ARM送到喷头, 并在合适时机命令喷头做一次点火动作。如果用传统的方法, 由FX2LP的内置CPU直接寻址存储由上位机发来的图像数据的图像存储器, 并将图像数据与运动控制同步发送到FPGA, 然后FPGA配合ARM控制喷头点火,这些动作需要复杂的指令序列, 多次的存储器访问, 需要耗费大量的时间,要实现较高的数据传输率几乎是不可能的。
 分析纺织品喷墨印刷机的工作机制发现, 前端控制系统不需要理解上位机传来的图像数据,它所要做的仅是对这些图像数据的同步, 在适当的时机将图像数据传送到喷头。因此, 图像数据可以不通过FX2LP的内置CPU存取, 可直接在CPU的同步下送到喷头。由于EZ-USB FX2提供了一种独特的架构,EZ-USB的CPU可不在USB主机和外部逻辑的数据通道上。为了达到最大的数据带宽,EZ-USB将USB主机和外部逻辑直接连接,从而将CPU旁路掉,使USB接口和外部应用环境直接共享FIFO,而微处理器可不参与数据传输[4],此时无需执行USB接口芯片内部8051固件程序便可直接实现端点FIFO与外部的数据交换,这种被称为“量子FIFO”的处理构架,很好地解决了普通微处理器转发方式造成的带宽瓶颈[3]。
通过以上的分析, 系统采用了一种将图像数据旁路的方法。用CY7C68013A内部共享的4 K端点FIFO作为图像暂时的存储器。FIFO存储器的输入端点直接接收USB主机端的图像像素数据。FIFO存储器的输出端点数据由FPGA同步读取, 读取的数据经过ARM的控制指令和硬件通道发送到喷头。因而图像数据的传输速度不再与EZ-USB的CPU的存储器寻址周期紧密相关,从而利用这种旁路的快速通路实现PC 机与喷头之间的高速数据传输。FIFO 的作用也表现为在高速的USB传输与中速连续的喷印需求之间建立一个缓冲。


2.2 FPGA桥接部分
由于选用CY7C68013A芯片作为USB2.0接口芯片,而该芯片的接口频率与系统主控制器的总线时序不同,不能直接将该芯片与主控制器总线连接,所以考虑用FPGA作为桥接,这样就需要该芯片与FPGA内部的总线进行接口,考虑数据传输速率的不同,同时在FPGA内部建立USB的数据缓冲区,该缓冲区由FIFO构成,完成与主控制器的信息交换。同时,FPGA作为Slave FIFO模式的外部控制逻辑,提供USB的片选、写数据时钟和端点选择等信号,实现对数据读写的控制,桥接电路的接口图如图2所示。

(1)与USB芯片的接口
FPGA内部总线是同步32 bit总线,总线信号包括11位地址线addr、32 bit数据输入data_i、32 bit数据输出data_o、写控制输入we、总线周期信号cyc、锁存信号stb、响应信号输出ack,以及系统时钟信号clk和系统复位信号rst、字节选择信号sel。
(2)FIFO的选择与建立
由于FIFO的两端要以不同的速率操作,因此采用的FIFO以不同的时钟工作,写入以USB_IFCLK为同步时钟,读出以系统时钟clk_i为同步时钟。写入请求线SLRD与写入时钟同步,当FIFO没有满且USB芯片非空时,始终产生写入请求。这样保证FIFO自动将USB芯片内的数据读出,减少软件判断的负担。
由于采用不同时钟的FIFO模块不能自动产生接近满和接近空信号,故使用一个半满信号,该信号由读使用字rdusedw的最高位获得。这样只要适当选择FIFO的容量,就可由ARM判断半满信号,一旦有半满信号,ARM就可不再判断,连读读出FIFO中一半容量的数据。考虑喷头每次喷射需要至少1 KB的数据,故选择FIFO至少为16 bit,2 KB的容量。当ARM检测到FIFO没有达到半满时,如果FIFO没空,仍然可以读出数据,只是这时每读出一个字就必须检测一下FIFO是否为空,读出的速率不可能达到很高。


3 软件设计
3.1 USB固件程序

USB固件是运行在CY7C68013A中集成的微控制器上的程序,Cypress公司的EZ-USB FX2开发套件提供给用户一个固件函数库(Ezusb.lib)和固件框架(Framework),两者均是基于KEIL C51开发的。在使用固件框架进行特定的固件开发时,固件框架已经实现了初始化、重枚举、电源管理等功能。对用户而言,只需要在固件架构的预留位置处添加代码,就可以完成特定的功能[4]。
在本系统的固件程序设计中,利用初始设置函数TD_Init()和描述符表文件Dscr.a51完成系统的初始化以及端点配置等工作。为了优化数据传输速度,配置双端点组合的方式实现高速批量传输,设置相关特殊功能寄存器的初值以实现本系统的同步Slave FIFO的自动传输功能[5]。
固件程序在接到上位机传来的喷印请求命令时, 开启一次USB传输。在ARM发起控制信号启动小车运动 到达喷印位置时, ARM从FPGA内部FIFO读取图像数据并启动喷头点火信号, 完成一个像素点的喷印。然后继续小车运动, 开始下一次喷印。当一次喷印结束,ARM将系统状态经由CY7C68013A反馈给PC后, CY7C68013A结束本次数据传输。ARM主控程序命令小车减速、停止并启动卷布动作。待卷布完成后, 一个动作流程结束,等待接收下一个命令。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top