摘 要: 研究了基于FPGA的同步FIFO和移位寄存器,,利用同步FIFO作為大幅面高速彩色噴繪機噴頭與上位機之間數(shù)據(jù)傳輸以及接口數(shù)據(jù)傳輸?shù)木彺婺K。該設計在保證數(shù)據(jù)傳輸實時性的前提下,,解決了噴頭和上位機像素數(shù)據(jù)格式方向不一致的問題,,并消除了部分數(shù)據(jù)冗余。
關鍵詞: FPGA;同步FIFO,;移位寄存器,;噴繪機
隨著社會生產與研究設計對噴繪產品高速化的需求與日俱增,傳統(tǒng)的數(shù)字噴墨式印刷機已經不能滿足這種需求,。而大幅面高速彩色噴繪機無論是在數(shù)據(jù)的傳輸速度還是在打印的質量上都超過了傳統(tǒng)的數(shù)字噴墨式印刷機,。但是,大幅面高速彩色噴繪機的技術并不是十分成熟,,還有許多的地方可以改進,。
近年來,隨著微電子設計技術與工藝的發(fā)展,,數(shù)字集成電路從電子管,、晶體管、中小規(guī)模集成電路,、超大規(guī)模集成電路逐步發(fā)展到今天的專用集成電路(ASIC),。ASIC的出現(xiàn)降低了產品的生產成本,提高了系統(tǒng)的可靠性,,縮小了電路的物理尺寸,,推動了社會的數(shù)字化進程[1]。數(shù)字電路設計當中用FPGA來實現(xiàn)FIFO的功能可以更好地解決并行性和實時性問題,,而且用FPGA實現(xiàn)的FIFO更容易修改和測試,,可以降低成本和縮短開發(fā)周期。
1 像素數(shù)據(jù)傳輸定時分析
像素數(shù)據(jù)傳輸時序如圖1所示,,像素數(shù)據(jù)傳輸在CLK的同步下進行,,每次傳送256×2 bit,使用256個CLK時鐘,。在傳輸開始前和傳輸結束后,,CLK應該保持在高電平。每次傳輸完后,,等待3個連續(xù)的像素時鐘(PIXELCLK),,即點火信號,3個點火信號使存儲在噴頭中的像素數(shù)據(jù)完成點火輸出,。第一個點火脈沖有數(shù)據(jù)鎖存的功能,,在該脈沖過后,前次接收的數(shù)據(jù)完成鎖存,,可以開始下一次的數(shù)據(jù)移位輸入工作,,盡管此時上一次輸入的像素數(shù)據(jù)還沒有消耗完。因此,,可實現(xiàn)數(shù)據(jù)傳輸和點火同時進行。在第一個點火脈沖到來期間,,像素數(shù)據(jù)和像素時鐘應該保持不變,。
2 像素數(shù)據(jù)格式
像素數(shù)據(jù)分為點火和不點火兩種,,點火的(噴出的)像素其數(shù)據(jù)要求為D2D1D0(D6D5D4)=111,不點火的(不噴出的)像素要求D2D1D0(D6D5D4)=000,。因此,,實際傳輸時可采用兩條信號線,一條負責D2D1D0的像素,,另一條負責D6D5D4的像素,,而在數(shù)據(jù)進入噴頭之前,將輸入的1信號展開成111,,0信號展開成000即可,。這樣可用兩條信號線實現(xiàn)6條信號線的功能。
每次傳送,,一個噴頭所需要的數(shù)據(jù)為512 bit,,其中,第0和第511 bit必須為0,,實際完成510孔數(shù)據(jù)的傳送,,但是數(shù)據(jù)傳送使用的是256個CLK時鐘,每時鐘傳送2 bit,。分作兩條信號線傳輸,,一條是D2D1D0負責256~511孔的數(shù)據(jù)傳送,D6D5D4負責0~255孔的數(shù)據(jù)傳送,。這就要求有一種電路,,先緩沖256~511孔的數(shù)據(jù),再將0~255孔的數(shù)據(jù)與之合并后同時傳送到噴頭,。
如考慮圖像的存儲格式,,噴頭應該倒置,即510孔的位置在前,,0孔的位置在后,,即實際的像素數(shù)據(jù)的順序號與噴頭的孔號相反,噴頭的像素數(shù)據(jù)如表1所示,。
3 總體實現(xiàn)
3.1 噴頭接口模塊
噴頭接口模塊接收來自于上位機的打印圖像數(shù)據(jù),,在噴頭數(shù)據(jù)時鐘clk的同步下,向噴頭送出噴頭數(shù)據(jù),。依據(jù)運動控制模塊傳出的當前位置和自身存儲的打印位置,,送出點火信號fire。
由于噴頭要求將0~255噴孔和256~511噴孔的數(shù)據(jù)同時送出,,因此,,噴頭接口應該至少能存儲512個噴孔的數(shù)據(jù),每噴孔1 bit數(shù)據(jù),共64 B,,32個半字(16 bit),。為保證實時性,這些數(shù)據(jù)應該通過緩沖與上位機接口,,最好的緩沖就是FIFO,。其設計原理圖如圖2所示。
3.2 移位控制器
移位控制器負責從數(shù)據(jù)緩存FIFO1中讀出數(shù)據(jù),,并按需要的順序裝入到FIFO2中,,在FIFO2裝滿的同時讀取兩個數(shù)據(jù)緩存中的數(shù)據(jù)并進行移位操作??刂破鬟\轉的另一個條件是上一個裝入-點火周期完成,,因此必須在檢測到點火信號變?yōu)榈碗娖胶蟛拍苡|發(fā)。其設計ASM圖如圖3所示,。
3.3 波形驗證
輸出控制器完成輸出數(shù)據(jù)的裝載和移位輸出的控制,。具體要求是當數(shù)據(jù)向數(shù)據(jù)緩存FIFO1裝載已經完成并到達點火邊緣時,自動進行256 bit數(shù)據(jù)的裝載和移位,,達到0~511孔同時裝入數(shù)據(jù)的目的,。然后等待點火信號,當?shù)谝粋€點火信號過后,,就可重復裝入輸出,。其波形驗證如圖4所示。
隨著圖像逐步向大格式方向發(fā)展,,無論研究還是生產都對上位機和打印機之間的數(shù)據(jù)傳輸速度要求越來越高,。因此,不僅要利用FIFO作為緩沖來解決噴頭和上位機存在的像素數(shù)據(jù)方向相反的問題,,而且要利用異步FIFO用不同時鐘驅動讀寫的特性,,使其自動讀取USB芯片內的數(shù)據(jù),從而大大提高數(shù)據(jù)傳輸速度,,解決數(shù)據(jù)傳輸?shù)膶崟r性問題,。該設計已經應用于實際開發(fā)項目中,并使大幅面高速彩色噴繪機的數(shù)據(jù)傳輸速率和圖像正確性得到了極大的改善,。
參考文獻
[1] 王誠,,吳繼華,范麗珍,,等.Altera FPGA/CPLD設計(基礎篇)[M].北京:人民郵電出版社,,2005.
[2] 張延偉,楊金巖,,葛愛學.Verilog HDL程序設計實例詳解[M].北京:人民郵電出版社,,2008.
[3] 王開軍,,姜宇柏.面向DPLD/FPGA的VHDL設計[M].北京:機械工業(yè)出版社,2006.
[4] 熊紅兵,,陳琦.基于FPGA的異步FIFO設計與實現(xiàn)[J].微計算機信息,,2006,,2(17).
[5] Altera Corporation.QuartusIIVersion 6.0 Handbook[Z].2006.
[6] 任曉東,,文博.CPLD/FPGA高級應用開發(fā)指南[M].北京:機械工業(yè)出版社,2005.