基于FPGA的同步FIFO在大幅面高速彩色噴繪機(jī)噴頭數(shù)據(jù)傳輸中的應(yīng)用
隨著社會生產(chǎn)與研究設(shè)計(jì)對噴繪產(chǎn)品高速化的需求與日俱增,傳統(tǒng)的數(shù)字噴墨式印刷機(jī)已經(jīng)不能滿足這種需求。而大幅面高速彩色噴繪機(jī)無論是在數(shù)據(jù)的傳輸速度還是在打印的質(zhì)量上都超過了傳統(tǒng)的數(shù)字噴墨式印刷機(jī)。但是,大幅面高速彩色噴繪機(jī)的技術(shù)并不是十分成熟,還有許多的地方可以改進(jìn)。
近年來,隨著微電子設(shè)計(jì)技術(shù)與工藝的發(fā)展,數(shù)字集成電路從電子管、晶體管、中小規(guī)模集成電路、超大規(guī)模集成電路逐步發(fā)展到今天的專用集成電路(ASIC)。ASIC的出現(xiàn)降低了產(chǎn)品的生產(chǎn)成本,提高了系統(tǒng)的可靠性,縮小了電路的物理尺寸,推動(dòng)了社會的數(shù)字化進(jìn)程[1]。數(shù)字電路設(shè)計(jì)當(dāng)中用FPGA來實(shí)現(xiàn)FIFO的功能可以更好地解決并行性和實(shí)時(shí)性問題,而且用FPGA實(shí)現(xiàn)的FIFO更容易修改和測試,可以降低成本和縮短開發(fā)周期。
1 像素?cái)?shù)據(jù)傳輸定時(shí)分析
像素?cái)?shù)據(jù)傳輸時(shí)序如圖1所示,像素?cái)?shù)據(jù)傳輸在CLK的同步下進(jìn)行,每次傳送256×2 bit,使用256個(gè)CLK時(shí)鐘。在傳輸開始前和傳輸結(jié)束后,CLK應(yīng)該保持在高電平。每次傳輸完后,等待3個(gè)連續(xù)的像素時(shí)鐘(PIXELCLK),即點(diǎn)火信號,3個(gè)點(diǎn)火信號使存儲在噴頭中的像素?cái)?shù)據(jù)完成點(diǎn)火輸出。第一個(gè)點(diǎn)火脈沖有數(shù)據(jù)鎖存的功能,在該脈沖過后,前次接收的數(shù)據(jù)完成鎖存,可以開始下一次的數(shù)據(jù)移位輸入工作,盡管此時(shí)上一次輸入的像素?cái)?shù)據(jù)還沒有消耗完。因此,可實(shí)現(xiàn)數(shù)據(jù)傳輸和點(diǎn)火同時(shí)進(jìn)行。在第一個(gè)點(diǎn)火脈沖到來期間,像素?cái)?shù)據(jù)和像素時(shí)鐘應(yīng)該保持不變。
2 像素?cái)?shù)據(jù)格式
像素?cái)?shù)據(jù)分為點(diǎn)火和不點(diǎn)火兩種,點(diǎn)火的(噴出的)像素其數(shù)據(jù)要求為D2D1D0(D6D5D4)=111,不點(diǎn)火的(不噴出的)像素要求D2D1D0(D6D5D4)=000。因此,實(shí)際傳輸時(shí)可采用兩條信號線,一條負(fù)責(zé)D2D1D0的像素,另一條負(fù)責(zé)D6D5D4的像素,而在數(shù)據(jù)進(jìn)入噴頭之前,將輸入的1信號展開成111,0信號展開成000即可。這樣可用兩條信號線實(shí)現(xiàn)6條信號線的功能。
每次傳送,一個(gè)噴頭所需要的數(shù)據(jù)為512 bit,其中,第0和第511 bit必須為0,實(shí)際完成510孔數(shù)據(jù)的傳送,但是數(shù)據(jù)傳送使用的是256個(gè)CLK時(shí)鐘,每時(shí)鐘傳送2 bit。分作兩條信號線傳輸,一條是D2D1D0負(fù)責(zé)256~511孔的數(shù)據(jù)傳送,D6D5D4負(fù)責(zé)0~255孔的數(shù)據(jù)傳送。這就要求有一種電路,先緩沖256~511孔的數(shù)據(jù),再將0~255孔的數(shù)據(jù)與之合并后同時(shí)傳送到噴頭。
如考慮圖像的存儲格式,噴頭應(yīng)該倒置,即510孔的位置在前,0孔的位置在后,即實(shí)際的像素?cái)?shù)據(jù)的順序號與噴頭的孔號相反,噴頭的像素?cái)?shù)據(jù)如表1所示。
3 總體實(shí)現(xiàn)
3.1 噴頭接口模塊
噴頭接口模塊接收來自于上位機(jī)的打印圖像數(shù)據(jù),在噴頭數(shù)據(jù)時(shí)鐘clk的同步下,向噴頭送出噴頭數(shù)據(jù)。依據(jù)運(yùn)動(dòng)控制模塊傳出的當(dāng)前位置和自身存儲的打印位置,送出點(diǎn)火信號fire。
由于噴頭要求將0~255噴孔和256~511噴孔的數(shù)據(jù)同時(shí)送出,因此,噴頭接口應(yīng)該至少能存儲512個(gè)噴孔的數(shù)據(jù),每噴孔1 bit數(shù)據(jù),共64 B,32個(gè)半字(16 bit)。為保證實(shí)時(shí)性,這些數(shù)據(jù)應(yīng)該通過緩沖與上位機(jī)接口,最好的緩沖就是FIFO。其設(shè)計(jì)原理圖如圖2所示。
3.2 移位控制器
移位控制器負(fù)責(zé)從數(shù)據(jù)緩存FIFO1中讀出數(shù)據(jù),并按需要的順序裝入到FIFO2中,在FIFO2裝滿的同時(shí)讀取兩個(gè)數(shù)據(jù)緩存中的數(shù)據(jù)并進(jìn)行移位操作??刂破鬟\(yùn)轉(zhuǎn)的另一個(gè)條件是上一個(gè)裝入-點(diǎn)火周期完成,因此必須在檢測到點(diǎn)火信號變?yōu)榈碗娖胶蟛拍苡|發(fā)。其設(shè)計(jì)ASM圖如圖3所示。
3.3 波形驗(yàn)證
輸出控制器完成輸出數(shù)據(jù)的裝載和移位輸出的控制。具體要求是當(dāng)數(shù)據(jù)向數(shù)據(jù)緩存FIFO1裝載已經(jīng)完成并到達(dá)點(diǎn)火邊緣時(shí),自動(dòng)進(jìn)行256 bit數(shù)據(jù)的裝載和移位,達(dá)到0~511孔同時(shí)裝入數(shù)據(jù)的目的。然后等待點(diǎn)火信號,當(dāng)?shù)谝粋€(gè)點(diǎn)火信號過后,就可重復(fù)裝入輸出。其波形驗(yàn)證如圖4所示。
隨著圖像逐步向大格式方向發(fā)展,無論研究還是生產(chǎn)都對上位機(jī)和打印機(jī)之間的數(shù)據(jù)傳輸速度要求越來越高。因此,不僅要利用FIFO作為緩沖來解決噴頭和上位機(jī)存在的像素?cái)?shù)據(jù)方向相反的問題,而且要利用異步FIFO用不同時(shí)鐘驅(qū)動(dòng)讀寫的特性,使其自動(dòng)讀取USB芯片內(nèi)的數(shù)據(jù),從而大大提高數(shù)據(jù)傳輸速度,解決數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性問題。該設(shè)計(jì)已經(jīng)應(yīng)用于實(shí)際開發(fā)項(xiàng)目中,并使大幅面高速彩色噴繪機(jī)的數(shù)據(jù)傳輸速率和圖像正確性得到了極大的改善。
評論