FPGA與ADSP TS201的總線接口設計方案
1.2 突發流水線協議
因為數據總線位寬小于數據位寬,那么它只能通過兩次傳輸來完成。但是如果DSP沒有任何指示信號,FPGA并不知道當前傳輸是高32位數據,還是低32位數據,這時候另外一個信號BURST就顯得尤為重要了。
引腳BRST可以用來指示多個傳輸過程合成一個傳輸過程,圖2是DSP通過32位數據總線寫64位數據時序圖。
由圖2可以看出,數據傳輸機制與普通流水協議相同,只多了一個BRST指示信號,它與地址1同時有效,表示本次數據沒有傳輸完畢,下次要傳輸的數據與本次傳輸的數據是一個整體,即BRST有效時傳輸是低32位數據,無效時傳輸的是高32位數據,這樣就實現了在32位數據總線上傳輸64位數據,如果沒有BRST信號,該過程會被認為是2次32位傳輸。
同理,如果用32位數據總線傳輸128位數據,在傳輸前3個32位數據的時候,BRST信號有效,傳輸最后一個32位數據BRST無效。
注意:使用流水協議時,流水深度由傳輸類型(讀數據還是寫數據)決定。在寫數據傳輸中,流水深度固定為1;在讀數據傳輸中,流水線深度可由用戶編程決定,即由系統配置寄存器SYSCON決定,在1~4之間可變。
由于DSP的協議是相對固定的,FPGA只需按照協議進行設計即可,下面以DSP訪問FPGA內部寄存器為例詳細介紹。筆者建議采用同步設計,主要信號、輸出信號都由時鐘沿驅動,可以有效避免毛刺。
為了使所設計的模塊通用化,可設流水深度、數據總線位寬、寄存器位寬、寄存器地址可設。筆者建議采用參數化設計,使用參數傳遞語言GENERIC將參數傳遞給實體,在實體內部使用外if…else結構,這樣在一個程序中可以包含各種情況,但不會增加邏輯的使用量。下面以個別情況為例,詳細介紹。
評論