杜 斐,何嘉文,劉承禹,張 駿,田 澤
(航空工業(yè)西安航空計算技術研究所,陜西 西安 710068)
嵌入式處理器是目前片上系統中常用的處理器引擎,包括處理器、PLB總線系統、軟件驅動等部分,其性能高、功耗低、使用靈活,且能夠通過PLB總線和其他IP相連接,在片上系統芯片中應用廣泛[1-2]。
由于PLB總線結構復雜,時序多樣,且其接口時序與常用的寄存器接口訪問時序差距較大,不利于迅速建立成熟IP和PLB總線連接。為解決此問題,首先深入研究嵌入式處理器內部PLB總線協議和PLB總線各個接口的結構及機制,然后在理解PLB總線系統時序以及內部各子模塊的功能與工作機制的基礎上,提出一種高效時序轉換電路解決方案,以滿足PLB端單拍傳輸、Line傳輸和Burst傳輸,從設備端同步、異步時序傳輸的通信需求。通過功能仿真和工程實踐表明,該時序轉換電路工作穩(wěn)定,性能良好,具有配置靈活、使用方便、數據傳輸效率高等優(yōu)點,較好地滿足了應用需求[3-5]。
PLB總線是嵌入式處理器內部的主要總線,主要特性如下:
性能高:支持讀操作和寫操作的重疊傳輸,支持兩種操作在同一周期發(fā)出,以最大程度提高總線效率;數據總線和地址總線不耦合,以提高系統帶寬;地址流水線可擴展,支持數據重疊傳輸,總線的延遲減少;支持總線請求/仲裁重疊,支持同步總線。
靈活性高:最多支持16主16從設備,且為每個主設備分配多個優(yōu)先級以方便根據主從設備的重要度仲裁;支持原子操作;支持指令預取和數據預取;支持4字節(jié)到32字節(jié)的各種長度的DMA傳輸[6-7]。
為實現片內PLB總線和從設備的連接,該文提出一種高效時序轉換電路解決方案。其具體功能為,PLB端支持四字、雙字、字、半字以及字節(jié)單拍傳輸,4字Line、8字Line、16字Line傳輸和四字Burst傳輸。從設備端支持同步時序、異步時序,其中,可根據需要編程異步時序的時鐘周期數,每個片選空間可分別獨立編程,且能提供4個片選空間,每個片選空間大小固定為32 MB,其地址空間分配固定,PLB4總線上的單次訪問不能跨越片選空間分配的32 MB地址邊界[8-9]。時序轉換電路系統應用框圖如圖1所示。

圖1 時序轉換電路系統應用框圖
該文設計開發(fā)的時序轉換電路具有以下特點:
(1)配置靈活:為適應各種從設備接口,本時序轉換電路支持異步接口和同步接口,異步接口的時序分為3個階段,具體包括建立階段/選通階段/保持階段,使用者可依據需要對3個階段的周期數進行編程。同步時序每周期一次訪問,訪問長度用戶可配置,且可以根據用戶需要編程延遲1周期或者2周期。
(2)使用方便:基于用戶的使用需求,本時序轉換電路在PLB總線端主要支持單拍操作、8字Line操作和4字Burst操作,用戶進行小規(guī)模數據搬運(32位以下數據)時,可使用單拍操作,進行中等規(guī)模數據搬運(32~512位數據)時,可使用8字Line操作,進行大規(guī)模數據搬運(512位數據以上)時,可使用4字Burst操作。
(3)數據傳輸效率高:進行單拍操作,本時序轉換電路從收到PLB一端輸入的請求,到向從設備一端輸出請求,僅需2個PLB_CLK時鐘周期;進行4字Burst操作,本時序轉換電路從收到PLB一端輸入的請求,到向從設備一端輸出請求,僅需8個PLB_CLK時鐘周期[10-11]。
時序轉換電路體系架構框圖如圖2所示。狀態(tài)機完成內部各個狀態(tài)的轉換與控制;時鐘分頻電路根據分頻配置值完成對PLB時鐘的分頻,產生從設備使用的時鐘;寄存器控制電路完成處理器對寄存器的配置;輸出控制根據狀態(tài)機和寄存器配置值產生到時序轉換電路和回復PLB接口的控制信號及地址、數據總線。

圖2 時序轉換電路體系架構框圖
時序轉換電路作為片內PLB總線與從設備轉接口,通過將PLB總線時序轉換成從設備時序,實現對從設備的訪問,其對從設備的訪問支持8位、16位和32位讀寫訪問。時序轉換電路為從設備提供異步接口和同步接口,其中異步接口的時序分為3個階段,具體包括建立階段/選通階段/保持階段,使用者可依據需要對3個階段的周期數進行編程。同步時序每周期一次訪問,訪問長度用戶可配置,且可以根據用戶需要編程延遲1周期或者2周期。
時序轉換電路支持大量的PLB時序,包括單拍傳輸(128位/64位/32位/16位/8位)、Line傳輸(4字/8字/16字)以及4字Burst傳輸。
2.2.1 時鐘分頻
時鐘分頻電路如圖3所示,作用為根據配置將PLB時鐘分頻為從設備使用的時鐘,此電路可設置的分頻比率包括2分頻/4分頻/8分頻,分頻器根據設置輸出相應PLB時鐘頻率分之一的時鐘。

圖3 時鐘分頻電路
2.2.2 寄存器控制
處理器通過PLB總線對時序轉換電路寄存器的訪問是通過寄存器控制模塊實現的。
寄存器的讀寫操作的時序圖如圖4所示,當確認地址有效時,將sl_addrack信號拉高,向PLB總線表明當前地址已存儲,同時在abus_r和rnw_r兩個信號中存儲plb地址和讀寫標志。之后,若此操作為寄存器讀操作,將reg_cs_n拉低,根據abus_r的值將相應的返回值輸出到PLB總線上。若此操作為寄存器寫操作,將reg_cs_n拉低,將plb_wrdbus的值寫入相應寄存器。

圖4 寄存器讀寫時序圖
本模塊共實現5個寄存器,分為兩組。第一組為全局控制寄存器,用于配置CLK_DIV分頻比率,產生一分頻、二分頻、四分頻、八分頻,供時鐘分頻模塊使用。第二組分為4個片選空間控制寄存器,分別控制4個從設備的同步/異步時序選擇,異步寫建立/選通/保持時間,異步讀建立/選通/保持時間,供輸出控制模塊使用。
2.2.3 輸出控制
輸出控制根據狀態(tài)機和寄存器配置值產生到時序轉換電路和回復PLB接口的控制信號及地址、數據總線。下面以PLB總線上的單拍和Line讀寫操作為例,詳細介紹其實現。
如圖5所示,此操作為單拍讀操作,數據位寬為64位,其從設備接口配置為32位。且設置主設備的PLB時鐘頻率為從設備的slave_clk頻率的2倍。當PLB_pavalid信號為高,且PLB_abus地址落在本模塊的地址空間時,將sl_addrack信號拉高,并將信號plb_abus、plb_be、plb_size、plb_rnw存儲在內部信號abus_r、be_r、size_r、rnw_r。存儲后在從設備時鐘slave_clk的T0周期,根據rnw_r判斷操作的讀和寫,size_r判斷讀寫長度、be_r判斷操作類型,可知此操作為64位單拍讀操作。此時在從設備接口根據寄存的數據輸出(由于主設備接口為64位,從設備接口為32位,故從設備需要2拍才能完成一次主設備操作),因此,在T1到T2的周期,接口輸出片選slave_cs_n和讀信號slave_rd_n。之后按照存儲的地址信號abus_r輸出信號slave_addr,之后輸出信號slave_addr將在片選和寫信號有效時按32位遞增。從設備接口的讀數據總線slave_data_out在T2以及T3周期返回數據W0、W1,接口需要存儲T2周期的數據W0,之后在T3周期將W0和W1合并為64位數據后在sl_rddbus信號輸出到PLB總線,在T4周期,將讀數據響應信號sl_rddack和讀訪問完成信號sl_rdcomp置為1表明當前操作完成。

圖5 PLB總線64位單拍讀時序

圖6 PLB總線8字Line寫時序
圖6是PLB總線8字Line寫訪問,在從設備時鐘slave_clk頻率和PLB時鐘plb_clk頻率一致時的時序圖。當PLB_Pavalid信號為高,且PLB_abus地址落在本模塊的地址空間時,將信號plb_abus、plb_be、plb_size、plb_rnw存儲在內部信號abus_r、be_r、size_r、rnw_r中,存儲后,在slave_clk的T0周期,根據rnw_r判斷操作的讀和寫,size_r判斷讀寫長度、be_r判斷操作類型,可知此操作為8位Line寫操作。將從設備接口設置為32位的同步接口,因此,完成8字Line操作需要8個周期,如圖6所示即T1到T8周期,輸出寫信號slave_wr_n和片選信號slave_cs_n為0,并將PLB數據總線plb_wrdbus的數據寄存的輸出到slave_data_in,地址slave_addr的初始值采用存儲在內部信號abus_r,隨后寫信號有效遞增,在T4和T8周期,輸出PLB總線寫數據響應信號sl_wrdack為1,在T8周期后將寫訪問完成信號sl_wrcomp寫為1[12-13]。
時序轉換電路設計完成后,基于此模塊的需求,搭建驗證平臺,對模塊的功能進行驗證。驗證過程包括驗證平臺開發(fā)、驗證項策劃以及仿真驗證結果三個部分。下面分別對此三部分進行介紹。
2.3.1 驗證平臺搭建
為保證驗證環(huán)境與實際使用環(huán)境盡可能一致,該文基于嵌入式處理器系統來開發(fā)驗證平臺。在成熟的嵌入式處理器系統自帶的PLB總線上,掛接自主開發(fā)的時序轉換電路,然后在時序轉換電路后面掛接4個從設備模型。驗證平臺的激勵由C語言開發(fā),使用嵌入式處理器系統自帶的編譯器編譯為指令文件后,直接寫入處理器系統的外部ram中,等待處理器復位完成后,將自動從外部ram中讀取指令,并通過PLB總線向時序轉換電路下達四字、雙字、字、半字以及字節(jié)單拍傳輸,4字Line、8字Line、16字Line傳輸,四字Burst傳輸指令。時序轉換電路根據指令內容選擇是配置內部寄存器,還是配置從設備。為保證測試結果正確性,在時序轉換電路外部開發(fā)同步/異步接口從設備模型,用于響應時序轉換電路的請求,并檢測時序轉換電路輸出的同步、異步時序訪問是否與期望值一致[14-15]。虛擬仿真驗證平臺框圖如圖7所示。

圖7 時序轉換電路虛擬仿真驗證平臺框圖
2.3.2 驗證策劃
為進行全面驗證,針對時序轉換電路需求及設計核心要點,涵蓋所有PLB總線端和從設備端支持的模式,策劃出以下驗證項,具體如表1所示。

表1 驗證項策劃表
2.3.3 仿真驗證結果
在上文搭建的驗證平臺上,按照策劃的驗證項對時序轉換電路進行測試,測試結果表明,此時序轉換電路功能和性能達到了設計要求,能夠高效、靈活地在PLB總線和從設備間進行數據傳遞。
根據測試后的代碼覆蓋率的統計結果可知,被測時序轉換電路的總語句覆蓋率(stmt graph)為100%,分支覆蓋率(branch graph)為100%。由于default語句很難覆蓋到,所以其內部部分子模塊的覆蓋率并未達到100%。綜上所述,上述代碼覆蓋率百分比的情況可以認為滿足了目標覆蓋率要求。
基于嵌入式處理器,給出了一種時序轉換電路,能夠在PLB總線和從設備間高效、靈活地進行數據傳遞,并進行了必要的功能仿真和工程實踐。結果表明,該轉換電路工作穩(wěn)定、性能良好,較好地滿足了應用需求,且對其他類似接口轉換設計具有一定的借鑒意義。