打標時,需要主處理器ARM 將大量的打標數據發送給FPGA,為了減少ARM向FPGA發送數據操作的時間,采用DMA方式進行數據傳輸。設計中ARM通過地址自加的 DMA傳輸方式向FPGA中寫入數據,由于只對2位地址ADDR譯碼而高位地址不參加譯碼,因此地址自增只產生4個使能信號,實際上就是循環向3個FIFO緩沖區寫入數據。
設計中FIFO存儲模塊使用宏功能模塊實現,生成的FIFO模塊。3個FIFO模塊的容量都是16 bits×1024 words。輸出信號almost_full在數據總數達到514時變為高電平,輸出信號 almost_empty在數據總數低于512時變為高電平。
振鏡位置數據轉換模塊就是要完成將振鏡位置數據串行輸出給數模轉換器AD1866,因此需要按照AD1866的時序來編寫串行輸出子模塊DA_SERIAL的程序。AD18666的工作時序圖。CLK是串行時鐘信號,DL、DR是兩路數模轉換的數據輸入信號,LL、LR是兩路數模轉換的鎖存使能和啟動轉換命令輸入信號。AD1866在時鐘信號CLK的上升沿讀取數據,因此FPGA在時鐘信號CLK的下降沿將數據輸出到數據總線上,以保證數據穩定后再讀取數據。
AD1866讀取數據后,內部的移位寄存器從低位向高位進行移位,因此要將數據從最高位MSB到最低位LSB依次串行輸出。在最低位數據輸出之后的第一個時鐘的下降沿,需要LL、LR也輸出一個下降沿作為數據鎖存使能和啟動數模轉換的信號。