在基于雙CPU的嵌入式應用中,通常都會涉及數據交互的問題。一般來說有兩種數據交互的方案:一種是使用諸如SPI的通信協議直接進行數據傳輸,這種方法只適用于小規模的數據交互,對于批量數據則顯得無能為力;另一種則是雙CPU通過外部總線接口擴展外部共享存儲器,例如雙口RAM,通過共享存儲器實現對交互數據的寫入與讀出,目前大部分雙CPU都是采用這種方案。處理器中大都集成有較大規模的Flash存儲器,如果能通過外部總線直接訪問處理器的內存儲器并進行讀/寫,就可以將共享存儲器從片外移到片內。片內集成的存儲器在速度和可靠性方面都比片外擴展的存儲器要高很多,有些處理器集成的F1ash存儲器還帶有ECC校驗,進一步提高了存儲數據的可靠性。 1 處理器MPC5554的總線模式 MPC5554是Freescak公司推出的32位PowerPC系列處理器,其內核為PowerPC Book E結構的e20026CPU,外圍有豐富的外設接口,包括有eMIOS、eQADC、DSPI、eSCI、eDMA、eTPU、FlexCAN等模塊,可以方便地與外設進行連接。這款處理器廣泛地應用在汽車電子和航空航天等場合,具有成熟可靠的體系結構和廣泛的技術支持。 MPC5554的外部總線模塊稱為EBI(External BusInterface)模塊,同其他處理器的外部總線模塊一樣,也可以擴展諸如F1ash、SSRAM以及異步存儲器。EBI模塊可以工作在許多不同的模式下,主要有以下幾種模式: ◆單獨主機模式,此模式下只響應處理器內部的命令,忽略所有的外部總線請求; ◆外部主機模式,此模式下可以響應處理器內部的命令和外部總線請求,并且允許外部主機訪問內部地址空間; ◆模塊禁止模式,模塊被禁止后即停止工作; ◆16位數據總線模式,數據總線只有16位,DATA[O:15]有效,DATA[16:31]無效; ◆調試模式,當系統處于此模式下時,EBI模塊不受影響,仍正常工作。 以上幾種模式中,只有外部主機模式下可以實現外部主機訪問MPC5554內部存儲地址的功能。 2 MPC5554的外部主機模式 EBI Moclule Configuration Register(EBI_MCR)寄存器是EBI模塊的配置寄存器,其中的EXTM位即為EBI的外部主機模式選擇位,置1表示將EBI模塊置為外部主機模式,置0表示為單獨主機模式。在啟動模塊時,需要將MDIS位清O。 EBI模塊的外部引腳在外部主機模式時全部需要使用,MPC5554與外部主機的硬件連接如圖1所示。 2.1 內部存儲空間地址編碼 當EBI被配置為外部主機模式時,外部主機可以通過總線訪問內部的存儲空間。MPC5554,內部地址總線是32位,但外部地址總線只有24位,需要通過特殊的解碼方式來將24位地址總線擴展為32位。EBI模塊將外部總線的ADDR[8:11]這4位進行解碼,作為內部總線ADDR[O:11]的12 位。解碼的規則為: ①當外部地址總線的ADDR[8]=O時,EBI忽略外部數據,無效地址。 ②當外部地址總線的ADDR[8]=1時,ADDR[9:11]用來選擇為Flash存儲地址的區塊;匹配則進入該區塊,不匹配則返回總線錯誤標志。 外部主機模式下具體的地址譯碼如表1所列。 2.2 外主模式下外部主機在內存儲器上讀寫數據 外部主機在得到總線控制權后,通過拉低TS位來初始化對內存儲器的操作。如2.1節所示,當地址線上的信號匹配時,即可訪問內存儲器空間,訪問結束于TA信號或TEA信號出現。TA信號為正常結束信號,TEA信號則表示有總線上的錯誤。圖2為外部主機讀數據流程,圖3為外部主機讀數據時序。 圖4和圖5為外部主機寫數據的流程和時序,與讀數據時的大體類似。但需要注意的是,規定外主訪問的最小延遲是3個總線周期,在實際系統中還需要根據具體訪問的存儲器塊來決定。 3 系統設計 3.1 硬件設計 主芯片使用處理器MPC5554,其內部Flash有2 MB,通過EBI模塊進行外部訪問。外部主機使用Altera公司生產的Cyclone II系列FPGA芯片EP2C35F672,芯片的I/O資源豐富,選用的672引腳封裝最大可用I/O為475個,對于I/O需求很多的應用非常適合。 EP2C35F672的33 216個LE單元,105個M4K的RAM塊,可以滿足較高要求的應用。 電路板上的電源種類較多,MPC5554需要有5 V、3.3V、1.5 V供電,EP2C35F672需要3.3 V和1.2 V供電,外部輸入則為5 V。采用2片LT1765將5 V轉換至3.3 V和1.2 V,1.5 V則利用NJD2783從3.3 V處生成。 根據圖1所示的連接,將MPC5554的EXTAL、TS、TSIZ[0:1]、ADDR[8:31]、DATA[O:31]、RD_WR、BR、BG、 BB、TA、TEA等信號線全部接至FPGA的I/O處,其中EXTAL需要引至FPGA的PLL輸出口作為外部輸入時鐘,其余的都接至普通I/O。 為了方便調試及觀察結果,將MPC5554的1路SCI接口引出,通過MAX3232電平轉換至RS232電平,然后連至PC上的串口,使用超級終端程序進行觀察。 3.2 軟件設計 軟件的設計需要MPC5554與FPGA協同工作。首先需要將MPC5554配置為外主模式,在MPC5554的EBI模塊里共有2個主要的配置寄存器,分別是EBI模塊配置寄存器EBI_MCR和EBI總線監控寄存器EBI_BMCR。 EBI模塊配置寄存器負責整個模塊的基礎配置,MDIS位控制EBI模塊是否啟用,EXTM位配置EBI是否為外主模式,DBM位控制。EBI為32位或 16位數據總線,EARP[O:1]用來設置總線請求的優先級。 EBI總線監控寄存器負責對總線監測控制,BMT[O:7]位為總線監測的超時周期,BME位控制總線監測的使能。 另外,還有一個總線傳輸錯誤狀態寄存器EBI_TESR,TEAF位為傳輸錯誤標志位,BMTF為總線監測超時標志位。 EBI模塊的初始化程序為: 在讀取操作時,EBI模塊在接收到FPGA發來的地址信息后,返回相應地址的數據信息;在寫入操作時,EBI模塊根據FPGA發來的地址信息,將數據信息寫入相應地址。根據圖2~圖5的流程與時序,作為外部主機的FPGA起到發起數據傳輸并結束的作用。FPGA部分使用VHDL語言,只附上結構體里的 process部分。 結語 本文所述的基于MPC5554和FPGA的測試系統已調試完成,MPC5554內部的Flash存儲器可以通過EBI模塊由外部的FPGA進行讀寫。與外掛的存儲器相比,通信讀/寫速度和系統的可靠性都大大提高。在實際應用中,其他處理器也可以像文中的FPGA一樣模擬總線時序。當應用中不需要數據傳輸時,也可將連接配置為普通I/0以作他用,硬件配置靈活。 參考文獻 1. Freescale MPC5553/MPC5554 Microcontroller Reference Manual 2005 2. Altera Cyclone II Device Handbook 2007 作者:安鵬 清華大學 來源:單片機與嵌入式系統應用 2009 (3) |