工程師深談ARM+FPGA的設計架構
最近學習了ARM+FPGA的設計架構,ARM和FPGA結構的通信大致可以分為兩種:
本文引用地址:http://www.104case.com/article/201710/366885.htm一種是數據量小、通信速率要求不高的情況,可以考慮采用SPI、IIC等差UN星通信方式。ARM都帶有相關的SPI通信控制器等,在ARM端直接對相關的SPI通信控制器操作就可以了。而FPGA這一端可作為SPI從,按照SPI協議的時序寫好從設備接口,這個工作量沒有多大,所以相對都比較容易。
另一種是數據量大、通信速率要求較高的情況,就要采用并行總線的方式了。這時把FPGA當做ARM的一個片外的SRAM訪問就可以,可以在FPGA內部生成一個雙口RAM,輸出的數據總線管腿直接連接到ARM的并行總線的數據總線上,雙口RAM一端的地址總線也一樣直接連接到ARM的并行總線中的地址總線。這樣就可以實現FPGA從DPRAM一端讀寫,ARM從DPRAM的另一端讀寫的功能了,當然還需要其他一些使能或片選的控制信號。這里FPGA一側較好實現,而ARM一側需要開發SRAM(FPGA)驅動,這個還沒有實際做過,所以沒有把握。
NXP的ARM即LPC系列的并行總線稱之為外擴地址與數據總線,由EMC(外部存儲器控制器)控制,通過對EMC寄存器的控制就可以實現在外擴地址和數據總線上的數據收發。若是采用LPC系列ARM加一片FPGA,實現他們通信的關鍵應該在于這個EMC寄存器的控制,不知道按照一定的順序操作這個寄存器組寫出來的數據收發程序是不是就可以稱之為所謂的驅動,求大神解釋。
TI的ARM或DSP都有一個GPMC(通用內存控制器),它類似于LPC的EMC,是TI的芯片中用于與外部存儲設備如NORFLASH、NANDFLASH、SRAM等通信的一個借口。對于這個同樣也有上邊的那個疑問。
三星的S5PV210則是有一組并行總線接口,稱之為SROM,同樣也有一個SROM控制器,支持外擴的NORFALSH、NANDFLASH、SRAM 等,應該也類似于LPC系列的EMC。我通過對這個控制寄存器的操作就可以實現對外部SRAM(FPGA)的讀寫,不知道這樣理解對不對。
還有一個疑問就是,如果有操作系統,再要實現ARM和FPGA的通信是不是就沒有這樣簡單了?在沒有操作系統時,我僅僅對某個相關的控制寄存器操作就可以實現,這時就不可行了?這些都是以后要弄明白的。調研了這么長時間,始終沒有著手找找現有的資源,寫寫程序做一下這個通信,感覺還是沒有理解到位。果真是什么東西都要實踐一下才能理解深刻。手頭有一塊LPC2478($11.0980)的ARM加FPGA的板子,但沒有操作系統或者只有UC/OSII,不知道跟ARM有操作系統如Linux時,有什么區別。先上手做一做吧。
評論