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