當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]以PC機作為主機,通過PC的ISA總線與DSP的HPI主機并口連接作為傳輸通道,實現(xiàn)對PC機ISA插卡上的DSP芯片TMS320VC5402進行實時在線程序裝載。

摘要:以PC機作為主機,通過PC的ISA總線與DSP的HPI主機并口連接作為傳輸通道,實現(xiàn)對PC機ISA插卡上的DSP芯片TMS320VC5402進行實時在線程序裝載。

    關(guān)鍵詞:DSP  HPI主機并口 ISA總線  軟配置

一、引言

目前,隨著微電子技術(shù)的飛速發(fā)展,在基于工業(yè)測控和數(shù)據(jù)采集領(lǐng)域的PC機板卡產(chǎn)品中,高速DSP芯片的使用已經(jīng)是越來越普及。眾多廠家生產(chǎn)的DSP芯片中以美國TI公司(德州儀器)生產(chǎn)的DSP芯片的應(yīng)用最為普遍。同傳統(tǒng)的諸如單片機的程序裝載過程相比,DSP廠家為芯片提供了更多、更靈活的程序裝載方法。電子工程師在設(shè)計DSP系統(tǒng)中究竟采用那種程序裝載方法,應(yīng)視產(chǎn)品類型的不同而有所選擇。當(dāng)前許多廠家所生產(chǎn)的DSP芯片中都集成了主機并行接口,利用主機并口可以完成主機和DSP之間的并行數(shù)據(jù)交換。例如TI公司的TMS320C54X系列的DSP芯片、AD公司ADSP21XX系列的DSP芯片等。而主機并口在完成主機與DSP進行數(shù)據(jù)交換的同時,還大都具有程序裝載的功能。在PC板卡類電子產(chǎn)品上使用DSP芯片時,實際上是一種主從模式的應(yīng)用,即把PC機作為主機,DSP芯片作為從機。這時采用主機并口通過PC機的系統(tǒng)總線來完成程序的裝載就成了一種既經(jīng)濟實用又靈活方便的方式。下面以TI公司的TMS320VC5402為例(以下簡稱為VC5402),本文介紹了如何由PC的ISA總線來完成DSP程序的HPI(主機并行接口)裝載,并給出了軟硬件開發(fā)的實例。

二、硬件設(shè)計

1.VC5402的HPI程序裝載過程   

     VC5402內(nèi)部具有4K×16位字的ROM,當(dāng)系統(tǒng)上電復(fù)位后,如果VC5402的MP/MC引腳為低,那么VC5402的PC程序指針跳到地址為0XFF80的ROM處開始執(zhí)行復(fù)位向量段的程序。該段程序是廠家在出廠時就固化好的一段程序,它首先執(zhí)行跳轉(zhuǎn)指令,跳到地址為0XF800處開始執(zhí)行,從0XF800開始的ROM的內(nèi)容被稱為程序裝載器(Bootloader)。在那里DSP將要判斷用戶究竟采用了那種程序裝載方式,而判斷的依據(jù)是通過諸如中斷的有無、數(shù)據(jù)或I/O空間固定地址單元內(nèi)特定的標(biāo)志字的有無等廠家已經(jīng)定義好的方式來識別的。值得注意的是,VC5402的HPI裝載方式與C54X系列的其它型號稍有不同。其不同有以下兩點:

⑴ VC5402的HPI裝載過程是在復(fù)位過程(Reset)以后完成的,不是在復(fù)位過程中完成的。

⑵ /INT2標(biāo)志位不是判斷HPI裝載模式的唯一方法,VC5402內(nèi)地址為0X007F的RAM單元的內(nèi)容也是判斷HPI裝載模式的一種方法。

PC機的ISA總線作為主機(以后稱為HOST)可以通過HPI口把VC5402的程序裝載到VC5402內(nèi)部雙存取RAM中開始執(zhí)行。

圖1 ISA總線與VC5402的HPI接口電路

     2.硬件實現(xiàn)

實現(xiàn)ISA總線與VC5402的HPI硬件接口比較簡單,需要注意的一點就是VC5402與ISA總線需要電平轉(zhuǎn)換。由于ISA總線電平是5V TTL電平,而VC5402是3.3V電平,所以兩者不能直接接口。我們可以使用PHILIPS公司的74LVC245電平轉(zhuǎn)換芯片,這種芯片采用3.3V供電,能允許5V和3.3V兩種電平的輸入信號。輸出為3.3V電平,可以和3.3V器件直接接口。電路原理圖見圖一:

由于需要PC對VC5402進行實時的程序裝載,那么VC5402的復(fù)位就不能用簡單的RC電路來完成,這里采用一片74HC74的D觸發(fā)器由PC控制完成VC5402的復(fù)位過程。圖中,我們把/HINT和/INT2連在一起,是因為VC5402在運行Bootloader時會自動在/HINT引腳輸出一個低電平,這樣會使VC5402在復(fù)位結(jié)束后馬上能識別到當(dāng)前的裝載模式為HPI模式,而忽略對其它模式的循環(huán)搜索。電路設(shè)計時需要注意對VC5402的HPI相關(guān)控制引腳的接法。對于控制引腳,采用不同的HOST時,接法也會有所不同。這里需要了解一下HPI主機并口工作的時序,時序圖見圖二。圖中的/HCS信號是HPI使能輸入信號,當(dāng)使用HPI時,/HCS信號必須接地。/HAS是HPI的地址鎖存輸入信號,這個信號在地址總線與數(shù)據(jù)總線分時復(fù)用的處理器(例如8031)作為HOST時作為地址鎖存信號來使用;對于ISA總線,其地址線和數(shù)據(jù)線是分開的,所以/HAS只要接3.3V即可。/HDS1和/HDS2是兩個數(shù)據(jù)鎖存信號,事實上使用其中的一個就可以了,而另一個則必須接3.3V。本例子中使用了/HDS1,而/HDS2接了3.3V。應(yīng)該指出,當(dāng)不使用/HAS信號時,/HDS1和/HDS2兩個輸入信號也具有地址鎖存作用,在它們的下降沿時刻,VC5402的HPI鎖存HCNTL0、HCNTL1、HBIL和HR/W四個控制輸入信號的值。通過這四個信號的值,VC5402可以確定當(dāng)前是對那個寄存器進行操作、是讀操作還是寫操作、是對16位字長的高八位還是低八位進行傳輸,因此電路設(shè)計時必須確保在/HDS1或/HDS2下降沿時上述四個控制信號具有正確的邏輯電平,否則整個程序裝載過程將會失敗。

圖2 HPI操作時序圖

     由于VC5402內(nèi)部是16位的數(shù)據(jù)總線,而其HPI主機并口卻是一個8位的數(shù)據(jù)總線,所以通過HPI與HOST進行一個16位字的數(shù)據(jù)交換需要分兩次來完成,HBIL信號來指出當(dāng)前是第一個字節(jié)還是第二個字節(jié)。HR/W輸入信號來指出當(dāng)前HOST的數(shù)據(jù)傳輸方向,由于這里只是對VC5402進行程序裝載,即HOST只對HPI進行寫操作,所以把HR/W接地。至于HCNTL0、HCNTL1兩個輸入控制信號的作用,這里不妨簡述如下:

HOST通過HPI與VC5402進行數(shù)據(jù)交換時,實際上只是對VC5402的三個寄存器進行訪問,它們是HPI控制寄存器HPIC、HPI地址寄存器HPIA和HPI數(shù)據(jù)寄存器HPID。HOST對這三個寄存器的尋址,是通過輸入信號線HCNTL0和HCNTL1來完成的,具體過程如下表一。實際應(yīng)用中通常是把HCNTL0、HCNTL1連同HBIL接到HOST的地址線上。

表一 HPI主機并口的地址分配

HCNTL0 HCNTL1 功  能  描  述
0 0 HOST讀寫HPI控制寄存器HPIC
0 1 HOST讀寫HPI控制寄存器HPID,同時HPIA具有自動加1的功能,這種方式可以數(shù)據(jù)交換的速度
1 0 HOST讀寫HPI地址寄存器HPIA
1 1 HOST讀寫HPI數(shù)據(jù)寄存器HPID,HPIA寄存器不受影響

電路中用一片GAL16V8來完成PC的I/O地址譯碼。下面來對VC5402進行I/O資源分配。分配情況見表二。根據(jù)資源分配,對照圖一所示電原理圖,寫出GAL16V8的譯碼狀態(tài)方程:

IO4=A9*/A8*/A7*/A6*A5*A4*/A3*/A2*/A1*/A0*AEN*/IOW ;對VC5402復(fù)位譯碼

/IO1=/IOW                                  ;送/HDS1進行數(shù)據(jù)鎖存

/IO6=A9*/A8*/A7*/A6*A5*A4*A3*AEN           ;HPI地址選通

為了防止74LVC245高阻輸出時的不穩(wěn)定對/HDS1造成誤操作,使用10KΩ的電阻對/HDS1進行上拉是必要的。

表二 PC對VC5402的I/O資源分配

I/O地址

操         作

230H 對VC5402進行復(fù)位,當(dāng)寫00H時是執(zhí)行復(fù)位,當(dāng)寫入01H時是跳出復(fù)位狀態(tài)
238H 寫HPIC是第一個字節(jié)
239H 寫HPIC是第二個字節(jié)
23CH 寫HPIA是第一個字節(jié)
23DH 寫HPIA是第二個字節(jié)
23EH 寫HPID是第一個字節(jié)
23FH 寫HPID是第二個字節(jié)

 三、軟件設(shè)計

1.軟件開發(fā)步驟

   基于ISA總線實現(xiàn)對VC5402的軟配置,軟件的關(guān)鍵在于HOST方軟件的編寫,至于VC5402的運行程序的編寫當(dāng)然不在討論的范疇。HOST方軟件所要完成的任務(wù)就是把VC5402的運行程序按照編程者事先指定好的地址進行定位裝載然后運行。那么究竟應(yīng)該把什么格式的文件裝載到VC5402的內(nèi)部,又怎樣裝載呢?鑒于此,可以把HOST方軟件用下面四個步驟來概括:

⑴生成* .OUT形式的公用目標(biāo)文件(COFF)。

當(dāng)在TI公司的C54X集成開發(fā)環(huán)境CCS 5000 下進行C54X系列的程序開發(fā)時,都會經(jīng)過編譯,鏈接最后生成*.OUT文件。

⑵對*.OUT文件進行提取,從中篩選出對最后裝載有用的代碼和地址信息。

第一步所產(chǎn)生的*.OUT文件由于是COFF格式的文件,也就是一種模塊化的經(jīng)過Bootload后就可執(zhí)行的文件,它的可重定位特性使得用戶可以對程序在允許的地址范圍內(nèi)靈活地安排。正因為如此,*.OUT文件還不是一個完完全全的可執(zhí)行代碼,它里面包含有一些關(guān)于程序中各個段的諸如起始地址、段的長度這樣的輔助信息,如果把這些信息連同程序代碼都裝入DSP內(nèi)部,程序是不會被正常執(zhí)行的。這時必須要對*.OUT進行輔助信息與可執(zhí)行代碼的提取與分離。完成這個任務(wù)是靠專門的程序完成的,是TI公司提供的,程序的名稱是:Coff_both.exe。這個程序可以在TI的網(wǎng)站上免費下載,空間為120K。利用該程序?qū)?.OUT文件進行操作最后生成第三步所需的*.OUT.C的文件。

    ⑶把經(jīng)過提取的*.OUT.C文件按照文件提供的起始地址和程序代碼通過HPI裝載到VC5402內(nèi)部。

第二步生成的*.OUT.C文件明確地告訴了程序有幾個段,每個段的大小,段的起始地址以及每個段的16進制代碼。有了這個文件,就知道了該寫些什么內(nèi)容到VC5402里去才能夠開始執(zhí)行VC5402的程序了。接下來要做的就是通過編寫自己的應(yīng)用程序把*.OUT.C文件中的16進制代碼通過HPI寫入VC5402內(nèi)部。

⑷把程序執(zhí)行的首地址寫入VC5402內(nèi)部地址為0X007F的單元內(nèi)部。

在把所有的代碼都裝載完畢后,最后必須要在VC5402內(nèi)部0X007F的RAM單元內(nèi)寫入程序執(zhí)行的首地址。當(dāng)VC5402檢測到0X007F單元內(nèi)的值為非0值時,就知道HPI裝載過程已經(jīng)結(jié)束,并從0X007F單元指定的地址開始執(zhí)行程序,至此整個裝載過程結(jié)束。

2.軟件開發(fā)實例

    結(jié)合圖一的硬件電路,對照軟件開發(fā)的每一個步驟,我們給出了一個簡單的軟件開發(fā)的例子,意在使對此感興趣的讀者能夠通過此例,真正明白用HPI進行VC5402裝載的全過程。圖一中VC5402的XF輸出引腳接了一個發(fā)光二極管,VC5402程序的功能就是使該二極管不停的閃爍。下面按照上述的四步流程進行:

⑴編寫example.asm 和example.cmd 文件,用CCS 5000集成開發(fā)軟件生成example.out文件。關(guān)于通過控制XF引腳來使發(fā)光二極管閃爍的VC5402程序的編寫,這里就不再贅述。

⑵把Coff_both.exe 和example.out文件放在同一目錄下,在DOS命令提示符下鍵入:Coff_both -out example.out 。這時就會生成example.out.c格式的文件。該文件的形式見圖三。這個程序只有一段程序,即.text段,這段程序一共由41個字組成,該程序段需要裝載到開始地址為0X0080開始的內(nèi)部RAM中去運行。而這41個字的16進制代碼則是最后真正被執(zhí)行的VC5402的程序代碼。

⑶把example.out.c文件中的代碼由HPI寫到VC5402的內(nèi)部RAM中。 HOST主機軟件,需要用戶自己來編寫,可以采用VC或VB調(diào)用驅(qū)動程序來完成,也可以通過TURB0 C 2.0直接通過I/O操作來完成,甚至可用MASM的匯編語言來編寫,程序的主要任務(wù)就是讀取example.out.c文件和寫I/O端口。HOST主機軟件的流程圖見圖四。為了便于讀者編程驗證,我們用TURBO C 2.0編寫了名為HOST_HPI.C的主機程序,讀者可以運行該程序來讀取example.out.c文件,把41字的代碼裝載入VC5402。使用方法如下:在DOS命令提示符下鍵入:HOST_HPI.exe后,屏幕將提示輸入example.out.c文件的路徑,例如:鍵入:C: imyprojectsexample.out.c后,HOST_HPI.exe將完成HOST裝載VC5402的任務(wù),如果看到發(fā)光二級管不停的閃爍,表明VC5402已經(jīng)開始正常運行程序了。至此,整個裝載過程完畢。

3. HOST_HPI.C源程序

/*HOST_HPI.C*/

#include"stdio.h"

#include"dos.h"

#define SIZE 100

main()

{

  FILE *fp;

  Unsigned int DSP_RES,HPIC_H,HPIC_L;

Unsigned int HPIA_H,HPIA_L,HPID_H,HPID_L;

  char *a,ch,filename;

  unsigned int i,j,length,addr,start[10],*data;

  printf("Please input the name file: ");

  scanf("%s",filename);                /*輸入程序文件名*/

  if((fp=fopen(filename,"r"))==NULL)   /*打開程序文件*/

  {

    printf("cannot open file: ");

    exit(0);

  }

  DSP_RES=0x240;             /*設(shè)置DSP各寄存器的I/O地址*/

  HPIC_H=0x230;

  HPIC_L=0x231;

  HPIA_H=0x234;

  HPIA_L=0x235;

  HPID_H=0x236;

  HPID_L=0x237;

  outportb(DSP_RES,0x00);      /*DSP復(fù)位(DSP_RES寄存器置00H)*/

  delay(2000);                 /*延時以保證DSP準(zhǔn)確的復(fù)位*/

  outportb(DSP_RES,0x01);    /*DSP跳出復(fù)位(DSP_RES寄存器置01H)*/

  outportb(HPIC_H,0x00);    /*DSP的HPIC寄存器置0000H*/

  outportb(HPIC_L,0x00);

  i=0;

  while(!feof(fp))              /*判斷程序文件是否結(jié)束*/

{

    fgets(a,SIZE,fp);

    fgets(a,SIZE,fp);

    fscanf(fp,"%s",a);

    fscanf(fp,"%s",a);

    fscanf(fp,"%x",&length);    /*讀取數(shù)據(jù)的長度*/

    fgets(a,SIZE,fp);

    fscanf(fp,"%s",a);

    fscanf(fp,"%s",a);

    fscanf(fp,"%x",&addr);   /*讀取程序的開始地址*/

    fgets(a,SIZE,fp);

    fgets(a,SIZE,fp);

    for(j=0;j<length;j++)

    fscanf(fp,"%x,",data+j);

    start[i]=addr;                /*保存程序開始地址*/

    for(j=0;j<length;j++)    /*為DSP裝入數(shù)據(jù)*/

{

/*給DSP的HPIA寄存器賦程序地址,先賦高位再賦低位*/

      outportb(HPIA_H,addr>>8);       

outportb(HPIA_L,addr&0x00ff);

/*給DSP的HPID寄存器賦程序數(shù)據(jù),先賦高位再賦低位*/

      outportb(HPID_H,*(data+j)>>8);  

      outportb(HPID_L,*(data+j)&0x00ff);

      addr++;                   /*程序地址加1*/

    }

    for(j=0;j<4;j++)

    fgets(a,SIZE,fp);

    i++;                         /*循環(huán)次數(shù)加1*/

}

  fclose(fp);                      /*關(guān)閉程序文件*/

  outportb(HPIA_H,0x00);     /*給DSP的HPIA寄存器賦007FH*/

  outportb(HPIA_L,0x7f);

  /*將程序的起始地址start [0] 賦予DSP的HPID寄存器*/

outportb(HPID_H,start[0]>>8);   

  outportb(HPID_L,start[0]&0x00ff);

  printf("Write data to DSP success! "); /*返回寫數(shù)據(jù)成功提示,程序結(jié)束*/

}

 四、結(jié)論

通過本文可以看出,通過PCVC5402進行HPI的程序裝載屬于一種基于RAM的在線編程,相比于使用并行或串行EEPROM進行DSP程序裝載的方法,它不用對程序存儲器進行燒寫,屬于一種軟配置。在基于PC的插卡式測試設(shè)備開發(fā)過程中,這種方法避免了多次斷電、燒寫程序的不便,使設(shè)備具有了在線開發(fā)的特點。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉