彭琿 張曉娜 張翔 于鑫

【摘要】? ? 首先分析DSP6x架構嵌入式CPU的模擬需求,然后研究了DSP6x架構的嵌入式CPU模擬器的架構設計、組成與功能、運行流程與接口設計等,最后設計實現了基于DSP6x架構嵌入式CPU模擬技術構建的嵌入式軟件測試平臺。
【關鍵詞】? ? DSP6x? ? 嵌入式CPU? ? 模擬仿真
引言:
DSP6x系列的CPU是典型的嵌入式系統芯片處理器。該系列CPU采用超長指令字結構,具有易編程性,且編譯性能較好,同時該CPU上還集成了一些大容量的存儲器,使得應用變得非常方便。所以廣泛應用于通信導航、彈載星載、航空航天等多種領域的嵌入式裝備設備中。
本文以典型的DSP6x系列CPU為研究對象,通過對DSP6x系列嵌入式CPU內核的結構、組成、指令執行過程和執行時序的研究分析,介紹了對DSP6x系列芯片進行仿真模擬的總體架構、操作流程、指令集模擬執行過程等。
一、DSP6x嵌入式CPU原理
1.1典型DSP6x架構的CPU分析
典型DSP6x系列DSP包括DSP62x和DSP64x兩個定點系列和DSP67x一個浮點系列,其DSP芯片中包括CPU、存儲器及定時器、串口等外設。
DSP6x系列DSP含有不同大小的數據存儲器。與CPU一樣,DMA控制器(直接存儲訪問)、EMIF接口(外部存儲器接口)和省電邏輯電路等外設,也是DSP必備的組成部分。通用寄存器組一般分為A組和B組。8個運算功能單元的名稱分別為.L1、.L2、.S1、.S2、.M1、.M2、.D1、.D2。內核控制寄存器包括AMR、CSR、IFR、ISR、ICR、IER、ISTP、IRP、NRP、PCE1、PC等控制器。控制邏輯是DSP6x處理器內核各種運行時序控制的單元。測試和仿真是接仿真器的接口。中斷是DSP6x處理器的中斷處理模塊。
1.2典型DSP6x架構CPU原理分析
DSP6x系列CPU的總線分為兩種:程序總線和數據總線。程序總線主要負責將存儲在CPU芯片程序存儲器中的指令,傳送至CPU芯片的執行器執行。程序總線寬度為256位,一次取指操作是同時取8條指令,將8條指令同時通過程序總線傳遞給CPU執行器。在執行器上執行時,每條指令都獨占一個操作單元。取指、分配和譯碼三個指令操作,都可在一個CPU周期內讀取并傳遞8條(32位)指令。這些指令的操作方式都是由控制寄存器組進行控制。從在程序存儲器中讀取第一個取值指令包起,一個超長指令字的處理流程就開始了。
DSP6x系列CPU芯片外存儲器及芯片外總線都是不區分程序和數據的。CPU芯片所有存儲器(內部和外部的程序存儲器和數據存儲器),都是按字節進行統一編址的。無論是讀外部指令或者對外交換數據,CPU都需要通過DMA和EMIF。但CPU內部交換數據時使用數據總線,在取指令時才使用程序總線。
與指令執行相關的主要包括數據通路和控制寄存器。數據通路一般包括執行指令的功能單元、通用寄存器組和數據總線。DSP6x系列CPU有兩個類似的數據通路,每個數據通路都有4個功能單元和1組通用寄存器。4個功能單元執行指令的操作,所有算術邏輯運算指令(除讀、存儲及轉移指令外)的源操作數和目的操作數都放在通用寄存器中,這樣指令運算的速度就更快。CPU一般使用讀指令和存儲指令在通用寄存器組與片內存儲器間進行數據交換,在進行數據交換時,由兩個指令的數據尋址單元提供數據存儲的地址。
1.3指令執行過程分析
DSP6x系列CPU的指令執行過程都是按3級流水線模式。流水線的每一級由不同數量的執行節拍組成。一般“取指”級有4個節拍;“譯碼”級有2個節拍;“執行”級執行節拍數不是固定的,不同指令有不同的節拍數。每個指令執行的節拍數量的差別主要在“執行”級。
“取指”指令的4個節拍分別是:PG、PS、PW、PR。“譯碼”指令的2個節拍分別是:DP和DC。在“譯碼”級中,在DP節拍期間,1個取值包的8條指令可根據并行執行的需要,分成若干個執行包。
在“執行”指令中,定點計算和浮點計算的所占的流水線節拍數量是不同的,前者最多占5個節拍,而后者最多則可占有10個節拍。
二、DSP6x嵌入式CPU模擬器總體設計
2.1架構設計
嵌入式CPU模擬器在設計上采用模塊化的結構設計。其系統架構設計如圖1所示。
從DSP6x的體系架構上來分析,DSP62x、DSP64x和DSP67x的體系結構是一致的,包括處理器流水線、算術運算單元、內存、寄存器等。在設計時,采用向下兼容的模式,DSP67x兼容DSP64x,DSP64x又兼容dsp62x。
2.2組成與功能
嵌入式CPU模擬器主要由目標碼文件解析、內存模擬、指令集模擬解析、算術運算單元模擬、總線模擬、流水線模擬、寄存器模擬、外設接口仿真等功能模塊組成。
1.目標碼文件解析
DSP6x處理器的目標碼格式為COFF文件格式。模擬器讀取目標碼文件中的數據到模擬器仿真內存中,讀取的數據包括代碼段的數據、數據段的數據、向量表段的數據等。
2.內存模擬
按照DSP6x處理器的內存分布來動態創建內存空間。
3.指令集模擬解析
模擬器模擬DSP6x系列的180多條指令,包括存儲類、算術類、邏輯類、搬移類、程序轉移類等類別的指令。模擬解析每種類別的指令在不同的運算功能單元上運行。
4.算術運算單元模擬
模擬器模擬DSP6x架構CPU的6個算術運算單元ALU、2個乘法器和1個地址產生器等。模擬這6個算術運算單元ALU和2個乘法器在1個CPU周期內同時執行8條指令的運算過程。
5.寄存器模擬
模擬器模擬DSP6x處理器的A和B兩個通用寄存器組,以及通用內核寄存器。模擬其利用通用接口函數,對通用寄存器組和特殊功能寄存器進行訪問和位操作的運行過程。
6.總線模擬
模擬器模擬DSP6x處理器的程序總線和數據總線。模擬總線的位數為32位。程序總線和數據總線運行過程采用并行模擬的技術進行模擬。
7.流水線模擬
模擬器模擬DSP6x的“取指、譯碼、執行”3級流水線的工作過程,并根據3級流水線各級的實際工作節拍,模擬指令在各級的CPU工作節拍。
8.外設接口仿真
模擬器模擬外設接口。在外設接口模塊中,包含接口仿真所需要的接口函數以及時序控制與調度模塊,來完成外設仿真的實時性。
2.3 運行流程設計
在嵌入式CPU模擬器運行流程中,首先導入源代碼進行交叉編譯,交叉編譯器編譯后的二進制目標碼導入到嵌入式CPU模擬內存中,然后通過嵌入式代碼指令集執行。在執行過程中,當訪問特定端口地址時,響應綁定的外設仿真函數,最后外設仿真函數的接口數據源與仿真測試環境構建進行數據交互,完成整個嵌入式軟件測試的運行流程。
2.4外部接口設計
在嵌入式軟件外部接口中,嵌入式CPU模擬器與外設接口的訪問都是通過外部接口寄存器進行的,每個外部接口的寄存器與具體地址空間一一對應。訪問外部接口寄存器,就是訪問特殊的地址空間。通過設定地址空間綁定函數,關聯外設與外設仿真接口函數,實現外部接口仿真。
根據上述嵌入式軟件外部接口仿真過程,設計外部初始化接口和外部參考時鐘接口。在外部初始化接口中,根據外設寄存器的端口地址,把外設關聯到相應的外設仿真函數中,實現IO、AD/DA、串口、CAN、1553B等外設與仿真外設庫的關聯。外部參考時鐘實現外部接口設備的時序仿真與控制。寄存器讀寫接口實現相關的內存、寄存器的讀寫功能。
在嵌入式軟件外部接口中,還設計了寄存器讀寫接口、內存讀寫接口、中斷事件觸發接口、數據傳遞接口、內核處理器的控制接口等。內核處理器的控制接口包括啟動接口、停止接口、繼續執行接口和復位接口。
三、結束語
在通用計算機平臺上,模擬并運行嵌入式軟件,是提高嵌入式軟件開發與測試效率的通用方法,不同嵌入式系統模擬的技術不同,但是關鍵技術都是嵌入式CPU對指令執行過程的模擬。本文重點研究了嵌入式CPU模擬的技術方案,限于篇幅的限制,其具體實現的細節這里就不再類似。有興趣的讀者可以查閱本作者其他類似論文。
參? 考? 文? 獻
[1]蔡建平,關于嵌入式應用開發技術 單片機與嵌入式系統應用 2001年第1期
[2](美)奧沙納(Oshana,R),(美)雷林(Kraeling,M.)主編;單波等譯.嵌入式系統軟件工程:方法、實用技術及應用[M].北京:清華大學出版社,2016
[3](美)施部.克.威(V,S.K.)著,伍微譯.嵌入式系統原理、設計及開發[M].北京:清華大學出版社,2012
[4]文玉亮(導師:宋彬)H.264編碼算法的DSP優化與實現,《西安電子科技大學碩士論文》—2008-01-01
[5]董培(導師:沈玉蓀)H.264編碼器在DSP和智能手機平臺上的優化實現,《北京工業大學碩士論文》—2008-03-01