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