新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > FPGA與USB技術(shù)在紡織品數(shù)字印刷機系統(tǒng)中的應(yīng)用

FPGA與USB技術(shù)在紡織品數(shù)字印刷機系統(tǒng)中的應(yīng)用

作者: 時間:2011-08-08 來源:網(wǎng)絡(luò) 收藏

摘 要: 介紹了的設(shè)計概況以及USB控制器的特性,闡述了通過Verilog HDL語言設(shè)計FPGA對 USB 控制器的訪問控制操作、USB控制器固件程序設(shè)計、USB驅(qū)動程序設(shè)計及PC端的應(yīng)用程序設(shè)計。測試結(jié)果表明, FPGA通過USB接口實現(xiàn)了高速可靠的數(shù)據(jù)傳輸。
關(guān)鍵詞: FPGA; USB2.0; ;

工業(yè)化系統(tǒng)分為印刷機和上位主控PC機兩部分, 紡織品印刷機不是一套獨立的系統(tǒng),是接收上位主控PC機的指令和圖像數(shù)據(jù), 依據(jù)指令和圖像數(shù)據(jù)完成印刷動作并將自身工作狀態(tài)反饋給上位主控PC 機的設(shè)備。接口部分是實現(xiàn)印刷機中的前端控制器與上位主控PC 機之間通信的橋梁。
  紡織品數(shù)字噴墨印刷機在實時工業(yè)現(xiàn)場,要求達到較高的傳輸速度,傳統(tǒng)的數(shù)字噴墨式印刷機與主機的通信主要通過主機主板提供的串行接口、并行接口或通過接口卡來實現(xiàn),因其傳輸速度較低已不能滿足工業(yè)生產(chǎn)過程高速化的需求。USB技術(shù)很好地解決了上述問題,雖然最近發(fā)布的USB3.0協(xié)議理論上可達到5 Gb/s的極限傳輸速度,但因目前集成USB3.0的微處理器仍處在實驗測試階段,有待全面優(yōu)化后發(fā)布市場。因此支持USB2.0協(xié)議的微處理芯片依然是工業(yè)高速印染設(shè)備中所選擇的主要通信微處理器。
  FPGA是一種現(xiàn)場可編程門陣列電子集成器件,由于其集成度高,用中小規(guī)模集成電路實現(xiàn)的幾大塊印刷電路板縮小至一兩片超大規(guī)模集成電路,不僅使控制系統(tǒng)的體積大為縮小,而且系統(tǒng)的可靠性得到大大提高。 FPGA的可編程性還可以使紡織品數(shù)字印刷機控制系統(tǒng)的設(shè)計、調(diào)試、生產(chǎn)和維護更加靈活方便。隨著大規(guī)??删幊踢壿嬈骷?FPGA的飛速發(fā)展,F(xiàn)PGA器件可以在這樣的運動控制系統(tǒng)中發(fā)揮優(yōu)越的性能和較大的作用。它作為紡織品數(shù)字印刷機控制系統(tǒng)的輔助電路,可代替許多傳統(tǒng)的邏輯電路 ,簡化系統(tǒng)設(shè)計,并且可提高系統(tǒng)的可靠性,減小電路板體積,使產(chǎn)品小型化,同時也有利于保護知識產(chǎn)權(quán)[1]。如何優(yōu)化USB2.0設(shè)備的傳輸性能,突破速度瓶頸,最大限度地提高傳輸速度,是印刷機設(shè)計中急需解決的問題。 本文設(shè)計了基于USB2.0的高速工業(yè)化紡織品數(shù)字噴墨印刷機數(shù)據(jù)傳輸系統(tǒng),進而研究FPGA在印刷機系統(tǒng)中的設(shè)計優(yōu)化以及實現(xiàn)USB2.0接口數(shù)據(jù)傳輸速度的全面提升的方法。


1 系統(tǒng)設(shè)計
  針對紡織品印刷機系統(tǒng)的特點,本系統(tǒng)可實現(xiàn)由一臺PC機控制運行,采用IJA模式噴繪機噴頭,每噴頭510孔,180 dpi。為了提高噴繪速度,采用分組噴頭,每組6色或者8色,共3~6組可選。支持打印1~4灰度等級的圖像。系統(tǒng)的主控制器由數(shù)據(jù)傳輸板與運動控制板組成,主要由S3C2440為處理器的ARM核心板構(gòu)成,400 MHz的工作主頻,64 MB的SDRAM,16 MB的Flash,支持LCD接口,支持IIC接口,支持16 bit的外部總線尋址,支持DMA。主控制器接收來自PC的控制命令和圖像數(shù)據(jù),檢測并控制系統(tǒng)中的各個運動環(huán)節(jié),同步運動與噴頭的噴射,并將噴頭需要的圖像數(shù)據(jù)傳輸?shù)絿婎^板上。
  主控制器在聯(lián)機工作時要能與PC雙向通信,接收PC發(fā)來的圖像數(shù)據(jù)和各種配置信息以及控制命令,同時要將系統(tǒng)的狀態(tài)傳送給PC,可考慮采用USB2.0的接口協(xié)議。由于S3C2440不支持USB2.0協(xié)議,系統(tǒng)擴展的USB擴展接口芯片,為緩沖該芯片與ARM總線,系統(tǒng)擴展了一片F(xiàn)PGA。由FPGA負責USB的接口緩沖、運動控制、位置、速度檢測、二級墨盒液位檢測、二級墨盒液泵控制、噴頭板的圖像數(shù)據(jù)格式轉(zhuǎn)換和傳輸、按噴頭位置及顏色順序點火噴頭的控制。
本文主要討論PC主機與印刷機主控制板的數(shù)據(jù)通信。鑒于系統(tǒng)的需求,本通信模塊采用支持USB2.0高速數(shù)據(jù)傳輸?shù)腅Z-USB FX2LP單片機CY7C68013A作為接口芯片。采用FPGA EP1C6Q-240做為USB接口芯片的外部邏輯,完成FPGA與USB接口芯片之間的通信。當上位機發(fā)出控制信號,經(jīng)接口芯片CY7C68013A解析后與FPGA進行通信。系統(tǒng)主控制器檢測到上位機發(fā)出的啟動數(shù)據(jù)傳輸、選擇數(shù)據(jù)格式等命令時,啟動數(shù)據(jù)傳輸,經(jīng)由SIE解析的數(shù)據(jù)包通過USB接口芯片CY7C68013A以同步從屬FIFO的模式將數(shù)據(jù)經(jīng)由CY7C68013A內(nèi)部乒乓控制的FIFO緩存后快速存入FPGA內(nèi)部的FIFO中,然后由主控制器ARM控制FPGA將主機通過USB傳遞的數(shù)據(jù)由噴頭控制器讀取數(shù)據(jù),再分配給6色噴頭。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

FPGA與USB技術(shù)在紡織品數(shù)字印刷機系統(tǒng)中的應(yīng)用

2 硬件設(shè)計
2.1 USB接口部分

紡織品數(shù)字印刷機的噴印以行為單位,每行噴印過程中必須以恒定的速度噴印。在每行的行端,噴頭小車要進行加減速和換向,要卷動卷布輥進布,以便進行下一行的噴印。恒定速度的噴印必須有恒定的圖像數(shù)據(jù)傳輸率來保證。噴印速度要求越高,對圖像數(shù)據(jù)的傳輸速度要求也越高。在本通信系統(tǒng)中,選用CY7C68013A芯片,其采用的構(gòu)架是EZ-USB FX2LP,是在 FX2 的基礎(chǔ)上改進而成的一款 USB2.0 芯片,它集成了增強型的8051內(nèi)核,并采用了低功耗設(shè)計,代表了業(yè)界的領(lǐng)先水平,是新一代符合USB2.0高速控制器的構(gòu)架,完全兼容FX2[2]。


在PC與FX2LP的前端控制系統(tǒng)中,F(xiàn)X2LP的內(nèi)置CPU負責接收上位PC機發(fā)來的命令對印刷機的運動進行操控, 并同步圖像數(shù)據(jù), 圖像數(shù)據(jù)通過FPGA和ARM送到噴頭, 并在合適時機命令噴頭做一次點火動作。如果用傳統(tǒng)的方法, 由FX2LP的內(nèi)置CPU直接尋址存儲由上位機發(fā)來的圖像數(shù)據(jù)的圖像存儲器, 并將圖像數(shù)據(jù)與運動控制同步發(fā)送到FPGA, 然后FPGA配合ARM控制噴頭點火,這些動作需要復雜的指令序列, 多次的存儲器訪問, 需要耗費大量的時間,要實現(xiàn)較高的數(shù)據(jù)傳輸率幾乎是不可能的。
 分析紡織品噴墨印刷機的工作機制發(fā)現(xiàn), 前端控制系統(tǒng)不需要理解上位機傳來的圖像數(shù)據(jù),它所要做的僅是對這些圖像數(shù)據(jù)的同步, 在適當?shù)臅r機將圖像數(shù)據(jù)傳送到噴頭。因此, 圖像數(shù)據(jù)可以不通過FX2LP的內(nèi)置CPU存取, 可直接在CPU的同步下送到噴頭。由于EZ-USB FX2提供了一種獨特的架構(gòu),EZ-USB的CPU可不在USB主機和外部邏輯的數(shù)據(jù)通道上。為了達到最大的數(shù)據(jù)帶寬,EZ-USB將USB主機和外部邏輯直接連接,從而將CPU旁路掉,使USB接口和外部應(yīng)用環(huán)境直接共享FIFO,而微處理器可不參與數(shù)據(jù)傳輸[4],此時無需執(zhí)行USB接口芯片內(nèi)部8051固件程序便可直接實現(xiàn)端點FIFO與外部的數(shù)據(jù)交換,這種被稱為“量子FIFO”的處理構(gòu)架,很好地解決了普通微處理器轉(zhuǎn)發(fā)方式造成的帶寬瓶頸[3]。
通過以上的分析, 系統(tǒng)采用了一種將圖像數(shù)據(jù)旁路的方法。用CY7C68013A內(nèi)部共享的4 K端點FIFO作為圖像暫時的存儲器。FIFO存儲器的輸入端點直接接收USB主機端的圖像像素數(shù)據(jù)。FIFO存儲器的輸出端點數(shù)據(jù)由FPGA同步讀取, 讀取的數(shù)據(jù)經(jīng)過ARM的控制指令和硬件通道發(fā)送到噴頭。因而圖像數(shù)據(jù)的傳輸速度不再與EZ-USB的CPU的存儲器尋址周期緊密相關(guān),從而利用這種旁路的快速通路實現(xiàn)PC 機與噴頭之間的高速數(shù)據(jù)傳輸。FIFO 的作用也表現(xiàn)為在高速的USB傳輸與中速連續(xù)的噴印需求之間建立一個緩沖。


2.2 FPGA橋接部分
由于選用CY7C68013A芯片作為USB2.0接口芯片,而該芯片的接口頻率與系統(tǒng)主控制器的總線時序不同,不能直接將該芯片與主控制器總線連接,所以考慮用FPGA作為橋接,這樣就需要該芯片與FPGA內(nèi)部的總線進行接口,考慮數(shù)據(jù)傳輸速率的不同,同時在FPGA內(nèi)部建立USB的數(shù)據(jù)緩沖區(qū),該緩沖區(qū)由FIFO構(gòu)成,完成與主控制器的信息交換。同時,F(xiàn)PGA作為Slave FIFO模式的外部控制邏輯,提供USB的片選、寫數(shù)據(jù)時鐘和端點選擇等信號,實現(xiàn)對數(shù)據(jù)讀寫的控制,橋接電路的接口圖如圖2所示。

FPGA與USB技術(shù)在紡織品數(shù)字印刷機系統(tǒng)中的應(yīng)用

(1)與USB芯片的接口
FPGA內(nèi)部總線是同步32 bit總線,總線信號包括11位地址線addr、32 bit數(shù)據(jù)輸入data_i、32 bit數(shù)據(jù)輸出data_o、寫控制輸入we、總線周期信號cyc、鎖存信號stb、響應(yīng)信號輸出ack,以及系統(tǒng)時鐘信號clk和系統(tǒng)復位信號rst、字節(jié)選擇信號sel。
(2)FIFO的選擇與建立
由于FIFO的兩端要以不同的速率操作,因此采用的FIFO以不同的時鐘工作,寫入以USB_IFCLK為同步時鐘,讀出以系統(tǒng)時鐘clk_i為同步時鐘。寫入請求線SLRD與寫入時鐘同步,當FIFO沒有滿且USB芯片非空時,始終產(chǎn)生寫入請求。這樣保證FIFO自動將USB芯片內(nèi)的數(shù)據(jù)讀出,減少軟件判斷的負擔。
由于采用不同時鐘的FIFO模塊不能自動產(chǎn)生接近滿和接近空信號,故使用一個半滿信號,該信號由讀使用字rdusedw的最高位獲得。這樣只要適當選擇FIFO的容量,就可由ARM判斷半滿信號,一旦有半滿信號,ARM就可不再判斷,連讀讀出FIFO中一半容量的數(shù)據(jù)??紤]噴頭每次噴射需要至少1 KB的數(shù)據(jù),故選擇FIFO至少為16 bit,2 KB的容量。當ARM檢測到FIFO沒有達到半滿時,如果FIFO沒空,仍然可以讀出數(shù)據(jù),只是這時每讀出一個字就必須檢測一下FIFO是否為空,讀出的速率不可能達到很高。


3 軟件設(shè)計
3.1 USB固件程序

USB固件是運行在CY7C68013A中集成的微控制器上的程序,Cypress公司的EZ-USB FX2開發(fā)套件提供給用戶一個固件函數(shù)庫(Ezusb.lib)和固件框架(Framework),兩者均是基于KEIL C51開發(fā)的。在使用固件框架進行特定的固件開發(fā)時,固件框架已經(jīng)實現(xiàn)了初始化、重枚舉、電源管理等功能。對用戶而言,只需要在固件架構(gòu)的預(yù)留位置處添加代碼,就可以完成特定的功能[4]。
在本系統(tǒng)的固件程序設(shè)計中,利用初始設(shè)置函數(shù)TD_Init()和描述符表文件Dscr.a51完成系統(tǒng)的初始化以及端點配置等工作。為了優(yōu)化數(shù)據(jù)傳輸速度,配置雙端點組合的方式實現(xiàn)高速批量傳輸,設(shè)置相關(guān)特殊功能寄存器的初值以實現(xiàn)本系統(tǒng)的同步Slave FIFO的自動傳輸功能[5]。
固件程序在接到上位機傳來的噴印請求命令時, 開啟一次USB傳輸。在ARM發(fā)起控制信號啟動小車運動 到達噴印位置時, ARM從FPGA內(nèi)部FIFO讀取圖像數(shù)據(jù)并啟動噴頭點火信號, 完成一個像素點的噴印。然后繼續(xù)小車運動, 開始下一次噴印。當一次噴印結(jié)束,ARM將系統(tǒng)狀態(tài)經(jīng)由CY7C68013A反饋給PC后, CY7C68013A結(jié)束本次數(shù)據(jù)傳輸。ARM主控程序命令小車減速、停止并啟動卷布動作。待卷布完成后, 一個動作流程結(jié)束,等待接收下一個命令。


3.2 驅(qū)動程序
USB設(shè)備驅(qū)動程序負責建立起主機端和設(shè)備端的聯(lián)系。在Cypress公司提供的EZ-USB FX2LP 開發(fā)包里包含了CyUSB.sys文件,這是一個符合WDM規(guī)范支持 USB2.0的通用設(shè)備驅(qū)動程序,開發(fā)應(yīng)用時只需對VID、PID等幾處修改即可滿足本系統(tǒng)的應(yīng)用需求。
通過對該驅(qū)動程序的CyUSB.inf文件進行客戶化設(shè)計并隨后采用Windows設(shè)備管理程序的做法,任何 USB設(shè)備均可與CyUSB.sys驅(qū)動程序相匹配。該驅(qū)動程序面向通用型用途的一個重要特點是其無需重新編譯即可進行客戶化設(shè)計,通過修改該驅(qū)動程序的.inf文件,能夠使其通告一個與眾不同的全局唯一標識符(GUID)。這將允許該驅(qū)動程序的不同副本在一臺PC上適度地共存。此外,該.inf文件還使得驅(qū)動程序能夠執(zhí)行一連串預(yù)先記錄的控制端點傳送。這便允許根據(jù)與其相連設(shè)備的Vendor ID和 Product ID來對該驅(qū)動程序的啟動特性進行客戶化設(shè)計[6]。


3.3 應(yīng)用程序
主機與設(shè)備一般通過主從方式進行數(shù)據(jù)通信,主機應(yīng)用程序向設(shè)備發(fā)送命令數(shù)據(jù)包,設(shè)備接收到命令數(shù)據(jù)后,接收主機傳送過來的數(shù)據(jù)。主機應(yīng)用程序通過設(shè)備驅(qū)動程序完成對設(shè)備的控制和通信,采用 VC++6.0編寫。
為了提高傳輸速度與效率,也為防止應(yīng)用程序在讀寫數(shù)據(jù)時產(chǎn)生的“假死機 ”現(xiàn)象,應(yīng)用程序采用多線程方法編寫,一般要把數(shù)據(jù)傳輸放在另外一個線程里,即單獨開啟一個批量傳輸線程作為區(qū)別于主線程的輔助線程。批量傳輸線程負責向設(shè)備寫入數(shù)據(jù),并通過消息傳送機制與主線程通信。主線程負責界面管理、數(shù)據(jù)處理、向設(shè)備發(fā)送命令數(shù)據(jù)包以及啟動/停止批量傳輸線程。
在線程循環(huán)中,主要調(diào)用BeginDataXfer()、WaitForXfer()、FinishDataXfer()3個函數(shù)。其中BeginDataXfer()為發(fā)起異步傳輸,并且立即返回。即發(fā)起此次需要傳輸字節(jié)后,并不會等待傳輸完畢,而是立即開始下一次字節(jié)數(shù)據(jù)的傳輸;WaitForXfer()為異步傳輸最大等待時間;執(zhí)行FinishDataXfer()時才開始真正地將傳輸數(shù)據(jù)寫入設(shè)備存儲器中。另外,如果要傳輸非512 B整數(shù)倍的數(shù)據(jù),而且不是一次傳輸完,則應(yīng)在批量傳輸線程中利用SetXferSize()函數(shù)重新設(shè)置傳輸大小,否則會導致數(shù)據(jù)不同步。
該系統(tǒng)經(jīng)過測試,達到了預(yù)想的噴繪效果和速度要求。通過對 FPGA器件的使用,減少了分立元件的數(shù)量,同時簡化了系統(tǒng)設(shè)計,增強了系統(tǒng)的可編程性能,使系統(tǒng)易于維護和升級,并有利于技術(shù)保密和知識產(chǎn)權(quán)保護。該設(shè)計方案已應(yīng)用于實際開發(fā)的項目中。

pid控制相關(guān)文章:pid控制原理


fpga相關(guān)文章:fpga是什么


pid控制器相關(guān)文章:pid控制器原理


存儲器相關(guān)文章:存儲器原理




評論


技術(shù)專區(qū)

關(guān)閉