一種在CCSS中與DSP進行聯(lián)合仿真的方法
關鍵詞: DSP仿真;DDK
DDK(DSP Developer Kits)作為Synopsys公司的仿真軟件CoCentric System Studio的一個組件,允許設計者開發(fā)、測試和分析系統(tǒng)設計中關于DSP部分的內(nèi)容。利用這個工具箱,可以實現(xiàn)在CCSS(CoCentric System Studio)環(huán)境中進行DSP軟件部分的驗證功能。
CCSS中的DDK種類
在CCSS中所支持的DDK 種類如表1所示。
作者所用的DSP屬于TI的C5XX系列,在此以TI的 TMS320C5XX DSP Develop Kit為例進行說明。
TMS320C5XX DDK由以下兩部分組成:
ystem Studio TI TMS320C5XX Stream Driven Simulator model library
?TMS320C5XX simulator
在庫中可以選擇多種DSP輸入輸出的組合,有單輸入單輸出、單輸入二輸出等,根據(jù)原匯編代碼選擇相應的模塊。所選模塊的功能由裝載到其內(nèi)部的匯編代碼程序決定。匯編代碼是按照模塊的input dataset定義的,并且可由用戶進行配置。圖1所示為DSP Simulator 與System Studio Stream Driven Simulator之間的關系。
System Studio Stream Driven Simulator可以從系統(tǒng)的層次化示意性描述中生成可執(zhí)行的仿真驅(qū)動流。它包括一個仿真核(simulator kernel)和一套可裝載的軟件模塊。仿真核本身并不執(zhí)行任何數(shù)字信號處理功能,但是可以配合可裝載軟件模塊的激活來完成信號處理任務。軟件模塊與仿真核之間通過標準的軟件接口實現(xiàn)互連。
DSP Simulator作為System Studio Stream Driven Simulator的子系統(tǒng),與仿真核在同一過程執(zhí)行。在System Studio Stream Driven Simulator來看,DSP Simulator是一個C編寫的基本模塊,但是該模塊的實現(xiàn)由DSP Simulator運行實際程序完成。
圖1 DSP Simulator和System Studio Stream Driven Simulator的關系圖
圖2 環(huán)境變量設定
圖3 仿真模塊
CoCentric中進行DSP仿真流程
修改代碼
在裝載代碼之前,要對代碼進行一些修改,以滿足聯(lián)合仿真的要求。裝載到TMS320C5XX Stream Driven Simulator model的匯編代碼有特殊的結(jié)構(gòu),所需修改的匯編語言代碼結(jié)構(gòu)主要包括下面三個方面:
(1) Initialization Code Section:要以xxxInitBegin和xxxInitEnd作為初始化代碼部分的界定符。
(2) Processing Section:要以xxxBegin和xxxEnd作為處理部分的界定符,其中xxx表示匯編代碼段的名稱。
(3) Data Transfer:為了在System Studio Stream Driven Simulator與TMS320C5XX sim5xx設置通訊的緩存,要開辟兩塊存儲區(qū)。輸入緩沖以xxxInVectorn開始,輸出緩沖以xxxOutVectorn開始。System Studio Stream Driven Simulator必須知道每次匯編代碼所消耗和產(chǎn)生的數(shù)據(jù)信息量,并在xxxLenInVectorn和xxxLenOutVectorn兩個存儲區(qū)加以體現(xiàn)。
生成可執(zhí)行代碼
在進行此步之前,必須保證環(huán)境變量指向TMS320C5XX編譯器所在目錄,可以在Options下的Environment Variables進行設定,如圖2所示。
環(huán)境變量設置好之后,用下面兩個命令編譯源代碼并裝載目標代碼:$TMS320C5xx/asm5000 -v50 name.asm和$TMS320C5xx/lnk500 name.cmd。其中name.asm代表匯編源代碼程序;name.cmd為初始化sim500的command文件。
交互命令
當INTERACTIVE參數(shù)設定為1時,對應的TMS320C5XX模塊以交互的形式進行仿真。
以匯編文件copy.asm為例說明仿真流程
程序說明
這個程序完成的功能是將四個數(shù)據(jù)由輸入端拷貝到輸出端。起始位置在copyInVector1的數(shù)據(jù)將被置于起始位置為copyOutVector1的存儲區(qū)域。兩個存儲區(qū)域所要存儲的數(shù)據(jù)個數(shù)在copyLenInVector1和copyLenOutVector1中定義。每次程序部分執(zhí)行之前,4個數(shù)據(jù)由Stream Driven Simulator寫入以copyInVector1為標志的起始位置,當代碼執(zhí)行完,可以從以copyOutVector1為起始標志的存儲區(qū)讀取數(shù)據(jù)。(匯編源程序見本刊網(wǎng)站www.eaw.com.cn)
選擇模塊
匯編源代碼有一個輸入和一個輸出端口,選擇tic5xx_1_1,可以滿足要求。圖3所示的是整個仿真模塊。
配置模塊
選中tic5xx_1_1模塊,點右鍵出現(xiàn)模塊配置對話框,將前面提到的參數(shù)interactive設置為1,下面定義余下的三個參數(shù)。
-tic5xx_load_file:指的是含有可執(zhí)行代碼的程序;
-tic5xx_init_file:指的是當sim500初始化時裝載的程序;
-load_file_name:指明匯編代碼的名稱。
這個例子中三個文件分別為:copy.out ,copy.take,copy。
需要注意的是:file handling數(shù)據(jù)類型要設定為Explicit;file format數(shù)據(jù)類型要設定為ASCII_BL_EOR(Blank Line as End Of Record)。
生成可執(zhí)行代碼
在終端執(zhí)行下面兩條命令:
$TMS320C5xx/asm500 -v50 copy.asm
$TMS320C5xx/lnk500 copy.cmd
如果.out文件正確生成,則可以裝載到模塊中,進行在CCSS環(huán)境下的仿真。
結(jié)語
目前,已經(jīng)實現(xiàn)了在CCSS中進行對DSP功能的驗證,這種方法可以大大簡化算法與實際DSP實現(xiàn)的驗證過程。該方法使在同一環(huán)境下,對算法結(jié)果與DSP具體實現(xiàn)結(jié)果進行比較成為可能,并且很容易對各項測試指標進行測試和統(tǒng)計,是一種省時高效的仿真方法?!?/P>
參考文獻
1 Synopsys.Inc. CoCentric System Studio Developer Kit Guide (Version 2000.11-CSS1, April 2001).
2 Synopsys.Inc. CoCentric System Studio DSP Developer Kits User Guide (Version 2000.11-CSS1, April 2001)
評論