松耦合式可編程復雜SoC的設計實(shí)現
AMBA總線(xiàn)是一種應用廣泛的層次化總線(xiàn)結構,有高速的AHB和低速APB之分,其中AHB是一種流水式高速總線(xiàn)結構,地址和數據總線(xiàn)相互獨立,可掛載16個(gè)Master和Slaver設備,常用來(lái)組織和連接高性能模塊,如處理器、DMA控制器、協(xié)處理器等[5~7]。AHB總線(xiàn)的核心是AHB控制器,主要包括仲裁器,譯碼器和多路復用器,其中仲裁器選擇AHB Master,而譯碼器選擇AHB Slave,實(shí)現寫(xiě)數據WDATA和讀數據RDATA分開(kāi),如圖3所示。

DMA控制器
DMA是指設備直接對計算機存儲器進(jìn)行讀寫(xiě)操作的方式。這種方式下數據的讀寫(xiě)無(wú)需CPU執行指令,也不經(jīng)過(guò)CPU內部寄存器,而是利用系統的數據總線(xiàn)直接在源地址和目的地址之間傳送數據,達到極高的傳輸速率。DMA控制器一方面可以接管總線(xiàn),即可以像CPU一樣視為總線(xiàn)的主設備,這是DMA與其它外設最根本的區別;另一方面,作為一個(gè)I/O器件,其DMA控制功能正式通過(guò)初始化編程來(lái)設置。當CPU對其寫(xiě)入或讀出時(shí),它又和其它的外設一樣成為總線(xiàn)的從屬設備。本文中為了實(shí)現DMA和AHB密切配合,即啟動(dòng)DMA后大量原始數據通過(guò)AHB總線(xiàn)從數據存儲器進(jìn)入Speed模塊,需要DMA控制器內部包含AHB Master模塊,如圖4所示。另外需要說(shuō)明的是,LEON3為了實(shí)現AHB上設備的plugplay需要在0xFFFFF000-0xFFFFF800地址空間添加設備信息[8~9],所以DMA 控制器和Speed協(xié)處理器亦要如此,以便LEON3的軟硬件協(xié)調一致。在C語(yǔ)言實(shí)現DMA時(shí),向DMA的控制寄存器寫(xiě)入相應的信息,即可啟動(dòng)DMA傳輸,如圖5所示。

圖4 DMA與AHB Master的關(guān)系

圖5 啟動(dòng)DMA的C代碼示意
Speed的AHB接口
為了使Speed可以順利接收LEON3傳送過(guò)來(lái)的控制字或DMA傳送過(guò)來(lái)的原始數據,需要在原有的Speed core模塊頂層添加AHB Slaver協(xié)議來(lái)接收AHB上傳送的數據,以及產(chǎn)生相應波形的HDL代碼來(lái)將C程序的信息生成Speed所能識別的信號波形進(jìn)入Speed模塊內部,即從圖6中的控制字,轉化成圖7中的時(shí)序。

圖6 C語(yǔ)言描述的Speed控制字

圖7 Speed core所需的配置時(shí)序
同理于控制字,濾波系數和原始數據的輸入亦需要一定的HDL代碼來(lái)實(shí)現指令或數據向時(shí)序圖的轉化,其本質(zhì)相當于譯碼,實(shí)現起來(lái)難度不大,此處就不再累述。Speed處理后數據通過(guò)狀態(tài)信號(zero_flag)下降沿觸發(fā)LEON3的中斷響應,實(shí)現向外部存儲器的輸出,此過(guò)程和數據輸入類(lèi)似。
評論