激光振鏡位置數(shù)據(jù)轉(zhuǎn)換模塊從左到右可以分為四級
(1)最前一級是三個數(shù)據(jù)鎖存子模塊DA_REG,分別用來鎖存X、Y軸振鏡位置數(shù)據(jù)和停留時間數(shù)據(jù)。由于ARM向FPGA 發(fā)送數(shù)據(jù)的操作沒有實現(xiàn)ARM和FPGA的時鐘同步,ARM發(fā)送數(shù)據(jù)和FPGA實現(xiàn)FIFO存儲數(shù)據(jù)使用的都是各自的時鐘,因此可能會出現(xiàn)數(shù)據(jù)還沒有存入FIFO 就消失了,或者重復(fù)存入數(shù)據(jù)的現(xiàn)象。為此,通過增加DA_REG子模塊來實現(xiàn)數(shù)據(jù)的鎖存并產(chǎn)生將數(shù)據(jù)存入FIFO的寫使能有效信號,當(dāng)ARM向FPGA發(fā)送X軸、Y軸位置數(shù)據(jù)或者位置停留時間數(shù)據(jù)時,DA_REG子模塊會立即將數(shù)據(jù)鎖存住,并產(chǎn)生相應(yīng)FIFO的寫使能有效信號,當(dāng)數(shù)據(jù)存入FIFO后,再將寫使能信號wrreq變?yōu)闊o效。需要注意的是FIFO存儲數(shù)據(jù)時鐘的周期要小于ARM寫信號nWE的有效時間,當(dāng)ARM 的寫信號nWE有效時,使用FIFO的存儲數(shù)據(jù)時鐘對nWE進(jìn)行微分,wrreq輸出一個時鐘周期的高電平有效信號來存儲數(shù)據(jù),這樣就實現(xiàn)了ARM與FPGA異步地傳輸并向FIFO中存儲數(shù)據(jù)的功能。
(2)第二級的子模塊是3個16 bits× 1024 words的FIFO存儲模塊,分別用來存儲X、Y軸振鏡位置數(shù)據(jù)和停留時間定時數(shù)據(jù)。FIFO存儲數(shù)據(jù)的寫使能信號wrreq由DA_REG子模塊產(chǎn)生,讀出數(shù)據(jù)的讀使能信號rdreq由啟動打標(biāo)信號和后一級的定時子模塊共同產(chǎn)生,當(dāng)啟動打標(biāo)信號有效,會使rdreq有效,然后3個FIFO輸出第一組數(shù)據(jù);之后,當(dāng)定時子模塊DA_TIMER的定時時間到會再次使rdreq有效,輸出下一組數(shù)據(jù),依次下去直到打標(biāo)數(shù)據(jù)全部輸出完畢。
(3)第三級包括定時子模塊 DA_TIMER、啟動打標(biāo)子模塊DA_DIFF、控制激光器開關(guān)的子模塊 DA_ENPWM、半空中斷的門限子模塊THRESHOLD和一些附加邏輯。其中,DA_ENPWM子模塊產(chǎn)生控制激光器開關(guān)的信號PWMSWITCH,當(dāng)啟動打標(biāo)后PWMSWITCH有效(高電平),當(dāng)FIFO中沒有數(shù)據(jù)了,即打標(biāo)結(jié)束后PWMsWITCH變?yōu)闊o效(低電平);用THRESHOLD子模塊來產(chǎn)生半空中斷信號DA_mid_int,當(dāng)FIFO中的數(shù)據(jù)個數(shù)大于等于514時,DA_mid_int為低電平,當(dāng)FIFO中數(shù)據(jù)個數(shù)小于512時,DA_mid_int為高電平,ARM將DA_mid_int 的上升沿作為最終半空中斷信號有效,門限子模塊的作用是防止因為存儲數(shù)據(jù)和讀取數(shù)據(jù)過程中在短時間內(nèi)重復(fù)產(chǎn)生半空中斷信號。半空中斷信號有效,ARM 會再次發(fā)送FIFO容量一半的打標(biāo)數(shù)據(jù);空中斷信號有效作為通知ARM打標(biāo)結(jié)束的信號。
(4)最后一級包括X、¥軸振鏡位置數(shù)據(jù)鎖存子模塊 DA_FEEDBACK和將位置數(shù)據(jù)串行輸出的子模塊DA_SERIAL。在打標(biāo)過程中,控制器可以通過讀取X、Y軸振鏡位置數(shù)據(jù)鎖存子模塊中的位置數(shù)據(jù)來確定X、Y軸振鏡所處的位置;DA_SERIAL子模塊功能是將X、Y軸振鏡的位置數(shù)據(jù)串行地輸出給數(shù)模轉(zhuǎn)換器,并產(chǎn)生所需的時鐘信號和控制DA轉(zhuǎn)換器啟動轉(zhuǎn)換的信號。