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