《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種基于PC主機(jī)的DSP自舉引導(dǎo)和通信設(shè)計(jì)
一種基于PC主機(jī)的DSP自舉引導(dǎo)和通信設(shè)計(jì)
徐勛光
摘要: 結(jié)合主機(jī)并行接口(HPI)的設(shè)計(jì)經(jīng)驗(yàn),詳細(xì)討論了DSP和主機(jī)(HOST)通過(guò)Enhanced 8bit HPI自舉引導(dǎo)的通信方案。
關(guān)鍵詞: DSP 接口 自舉引導(dǎo)
Abstract:
Key words :

  摘  要: 結(jié)合主機(jī)并行接口(HPI)的設(shè)計(jì)經(jīng)驗(yàn),詳細(xì)討論了DSP和主機(jī)(HOST)通過(guò)Enhanced 8bit HPI自舉引導(dǎo)的通信方案。
  關(guān)鍵詞: 主機(jī)并行接口  個(gè)人計(jì)算機(jī)  自舉引導(dǎo)

   隨著信號(hào)處理技術(shù)的高速發(fā)展,DSP已經(jīng)成為首選的數(shù)字信號(hào)處理芯片,如許多手機(jī)和硬盤中都嵌入了DSP芯片。目前的系統(tǒng)已經(jīng)很少有單機(jī)系統(tǒng),因此如何實(shí)現(xiàn)DSP與其他機(jī)器之間的通信是個(gè)關(guān)鍵問(wèn)題。主機(jī)并行接口(HPI)為用戶提供了高速的并行接口,使DSP擁有最優(yōu)的工作效率,也使得HOST CPU有更強(qiáng)大的控制權(quán)。
1 資源環(huán)境簡(jiǎn)介
  TMS320VC5402是TI公司推出的一款高性能、低功耗定點(diǎn)DSP,廣泛應(yīng)用于嵌入式系統(tǒng)以及無(wú)線通信領(lǐng)域。其CPU具有增強(qiáng)的多總線哈佛結(jié)構(gòu),速度為100MIPS,片內(nèi)有4KB ROM和16KB雙訪問(wèn)RAM。片上其他硬件資源主要有可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)發(fā)生器、二路多通道緩沖串行口(McBSP)和增強(qiáng)型8bit并行主機(jī)接口(HPI-8)等。
  該方案中HOST為PC機(jī)。PC的I/O并口(常用做打印機(jī)接口)端口地址為0x378~0x37A,0x378是數(shù)據(jù)口基地址,0x379為狀態(tài)口地址,而0x37A為控制口地址[1]。在Windows2000操作系統(tǒng)下,系統(tǒng)不能直接對(duì)I/O端口的讀寫(xiě)操作,而WIN98可以直接對(duì)I/O端口讀寫(xiě)操作。本文中所討論的引導(dǎo)方案是在WIN98 實(shí)模式DOS環(huán)境下實(shí)現(xiàn)的。需注意的是PC的0x378數(shù)據(jù)端口對(duì)應(yīng)的輸出芯片是74LS374。對(duì)于非增強(qiáng)型并口(SPP)只能輸出數(shù)據(jù),不能讀取外部數(shù)據(jù),讀操作所讀的數(shù)據(jù)只能是前一次PC機(jī)所寫(xiě)的數(shù)據(jù),如需讀取數(shù)據(jù)可在CMOS中將其設(shè)置為EPP。
TMS320VC5402的8bit HPI口為增強(qiáng)型。增強(qiáng)型HPI可訪問(wèn)片內(nèi)所有RAM空間。在非主機(jī)獨(dú)占模式下訪問(wèn)RAM時(shí),HOST的HPI訪問(wèn)一直和DSP同步,且HPI和DSP都有訪問(wèn)權(quán)。HPI通過(guò)對(duì)3個(gè)寄存器HPIC(控制寄存器)、HPIA(地址寄存器)和HPID(數(shù)據(jù)寄存器)訪問(wèn)片內(nèi)RAM。HOST用HCNT0/1引腳區(qū)分各寄存器,HBIL高低電平區(qū)分高低字節(jié),HDS1/2和HAS產(chǎn)生內(nèi)部控制傳送信號(hào)。由于HPI為8bit,所以每次都是傳送2字節(jié)再組成內(nèi)部的1個(gè)字(具體控制見(jiàn)后面程序)[2]。DSP/HPI工作時(shí)序圖如圖1所示。

 

2 引導(dǎo)及程序?qū)崿F(xiàn)
  DSP上電后,當(dāng)MP/MC為低電平時(shí),DSP開(kāi)始執(zhí)行片內(nèi)自舉引導(dǎo)程序。先清除IFR,置HINT為低,再檢測(cè)INT2位是否置位(置位可通過(guò)將HINT和INT2相連實(shí)現(xiàn)),如置位則進(jìn)行HPI引導(dǎo),HOST按照?qǐng)D1的時(shí)序?qū)?yīng)用程序或數(shù)據(jù)以字(分為2字節(jié))為單位下載到RAM。下載完后再在0X7F寫(xiě)入程序入口地址。該過(guò)程中DSP將一直檢測(cè)0X7F是否為0,如不為0,則跳轉(zhuǎn)到該地址(0X7F中的內(nèi)容)執(zhí)行程序。DSP在該過(guò)程中執(zhí)行以下代碼[3]:
 ??;從VC5402 ROM中截取的程序
  ssbx  intm;屏蔽所有中斷
  stm  #0FFFFh,@ifr  ;清除所有 IFR 標(biāo)志
  stm  #0,@HPIentry ??;設(shè)置HPI入口點(diǎn)(0X7F)的值為0
  stm  #08h,hpic  ?。恢肏INT為低
  bitf  @ifr,#int2msk ;檢查INT2標(biāo)志位是否置位
  bc  HPI,tc;如果INT2置位則進(jìn)行HPI引導(dǎo)
  ……
    HPI
  ldm  HPIentry,a   ;獲取HPI入口向量
  bc  hpiboot,aneq  ;如果0x7F內(nèi)容不為0,
            ??;則進(jìn)行HPI引導(dǎo)
  b  $-3;否則一直循環(huán)
  PC機(jī)并行打印口和DSP/HPI通信原理圖如圖2所示。由于PC機(jī)的并口輸出TTL電平,而DSP可接受的最高電平是3.6V,故需要電平轉(zhuǎn)換,圖中芯片SN74LVC16245就是起電平轉(zhuǎn)換作用的。此外,圖2中DSP的HINT和INT2相連(以選擇HPI引導(dǎo)),PC的STROBE(打印口引腳1)接DSP的HBIL,BUSY(打印口引腳11)接HRDY,AUTOFE(打印口引腳14)接HCNT0,INIT(打印口引腳16)接HDS1和SLCTIN(打印口引腳17)接HCNT1。
  在圖2的電路基礎(chǔ)上開(kāi)始HPI自舉引導(dǎo)。首先HOST初始化HPIC,向HPIC發(fā)送2個(gè)相同的8位數(shù)據(jù)的控制字。HPIC初始化完成后,HOST開(kāi)始寫(xiě)HPIA(HPIA存放數(shù)據(jù)地址)。在上述2個(gè)寄存器初始化都完成后,HOST便可向DSP的RAM寫(xiě)數(shù)據(jù)。實(shí)際上HOST通過(guò)寫(xiě)HPID,然后DSP按照HPIA指定的地址,自行將HPID的數(shù)據(jù)寫(xiě)到片內(nèi)RAM,且該過(guò)程對(duì)用戶完全透明。

 


  地址寄存器HPIA有多種模式,可選是否自動(dòng)增加,即可以只寫(xiě)1次HPIA且設(shè)定HPIA自動(dòng)增加,此后便不用寫(xiě)地址即可實(shí)現(xiàn)連續(xù)數(shù)據(jù)的寫(xiě)入或讀出。在該引導(dǎo)過(guò)程中,HBIL引腳為低電平時(shí),表示HOST傳送的是第1字節(jié),而當(dāng)HBIL引腳為高電平時(shí),傳送的是第2字節(jié)。與其相配合的HPIC控制寄存器的BOB位為1時(shí),將傳送第1字節(jié)并將其放在RAM的低8位,第2字節(jié)放在高8位;當(dāng)BOB位為0時(shí)置放順序顛倒。
  下面是實(shí)現(xiàn)HOST(PC機(jī))控制HPI進(jìn)行自舉引導(dǎo)的程序,主要由以下3個(gè)函數(shù)完成:(1)write_port_a( )函數(shù)實(shí)現(xiàn)向地址寄存器HPIA寫(xiě)地址字。(2)write_port_d( )函數(shù)實(shí)現(xiàn)向DSP的RAM寫(xiě)數(shù)據(jù)字。(3)write_port_c( )函數(shù)實(shí)現(xiàn)向控制寄存器HPIC寫(xiě)控制字。其自舉引導(dǎo)程序如下:
  #define PORT_D 0x378  //PC數(shù)據(jù)口
  #define PORT_S 0x379  //PC狀態(tài)口(其中輸出STROBE,
              //BUSY和SLCTIN的數(shù)據(jù)反向)
  #define PORT_C 0x37a//PC控制口(其中BUSY反向)
  write_port_a(int write_data)//向HPI的HPIA寫(xiě)1個(gè)字
  {
    _outp(PORT_C,0x0009);//控制口hcnt1=0 hcnt0=1
                //hbil=0 hds1=0
    _outp(PORT_D,write_data);//輸出數(shù)據(jù)低8位
    _outp(PORT_C,0x000d);//控制口hcnt1=0 hcnt0=1
                //hbil=0 hds1=1
    _outp(PORT_C,0x0009);//控制口hcnt1=0 hcnt0=1
                //hbil=0 hds1=0
    read_data=_inp(PORT_S);
    while(1) { if((read_data&hrdy)<1) break;
         else read_data=_inp(PORT_S);}
    _outp(PORT_C,0x0008);//控制口hcnt1=0 hcnt0=1
                //hbil=1 hds1=0
    write_data=write_data>>8;
    _outp(PORT_D,write_data);//輸出數(shù)據(jù)的高8位
    _outp(PORT_C,0x000c);//控制口hcnt1=0 hcnt0=1
               //hbil=1 hds1=1
    _outp(PORT_C,0x0008);//控制口hcnt1=0 hcnt0=1
                //hbil=1 hds1=0
  }
    write_port_d(int write_data)//向HPI的HPID,即向RAM
                  //寫(xiě)1個(gè)字,地址非自動(dòng)增加
  {
       _outp(PORT_C,0x0003);//控制口hcnt1=1 hch0=0
                  //hbil=0 hds1=0
  ……

  }
  函數(shù)write_port_d( )類似于函數(shù)write_port_a( ),只需將操作HPIA的程序中的hcnt1/0改變,在寫(xiě)控制數(shù)據(jù)時(shí)所有數(shù)據(jù)值減6,即可省略部分程序。
  write_port_c(int write_data)//向HPI的HPIC寫(xiě)1個(gè)字,
                //要求該字中是2個(gè)完全相同的字節(jié)
  {
        _outp(PORT_C,0x000b);//控制口hcnt1=0 hcnt0=0
                //hbil=0 hds1=0
  ……
  函數(shù)write_port_c( )類似于函數(shù)write_port_a( ),只需將操作HPIA的程序中的hcnt1/0改變,在寫(xiě)控制數(shù)據(jù)時(shí)所有數(shù)據(jù)值加2,即可省略部分程序。
  利用上述3個(gè)函數(shù),PC機(jī)可以將1組每字16位的數(shù)據(jù)寫(xiě)到DSP的RAM里。但要注意先初始化控制寄存器HPIC,控制主機(jī)寫(xiě)進(jìn)去的每個(gè)字的2個(gè)字節(jié)如何組成RAM里的1個(gè)字,否則將會(huì)產(chǎn)生錯(cuò)誤。如把第1個(gè)字節(jié)放在低8位,第2個(gè)字節(jié)放在高8位,即BOB位為1??赏ㄟ^(guò)下面語(yǔ)句實(shí)現(xiàn):
  write_port_c(0x0101);
  該函數(shù)初始化控制寄存器HPIC,以使HPIC中的BOB位為1,XHPIA為0。
3  將完整的應(yīng)用程序全部寫(xiě)進(jìn)DSP
  將一個(gè)完整的應(yīng)用程序按每字16位寫(xiě)到RAM中后,要實(shí)現(xiàn)自舉引導(dǎo)還需改變0X7F的內(nèi)容,使其指向程序入口地址。寫(xiě)完后DSP將自動(dòng)轉(zhuǎn)向應(yīng)用程序并運(yùn)行。
  write_port_a(0x7f);
  write_port_d(0x3000);//假設(shè)0x3000為程序入口點(diǎn)
  下面討論如何將一個(gè)含多個(gè)段的可執(zhí)行COFF文件轉(zhuǎn)化為程序所需的格式[4]。例如將test.asm源程序鏈接并編譯生成test.out文件,而該程序有.text段和.data段。其方法:用hex500.exe轉(zhuǎn)換工具將test.out生成2個(gè)16位的HEX文件,分別對(duì)應(yīng)text段和data段。其命令文件如下:
  test.out//輸入文件
    -I//生成Intel格式
    -memwidth 16//存儲(chǔ)器數(shù)據(jù)寬度
    ROMS
    {
      PAGE 0:
      ROM1:origin=0x3000,length=0x2000,romwidth=16
         files={t1.dat}  //text段起始地址為0x3000
   PAGE 1:
  ROM2:origin=0x80,length=0x1f80,romwidth=16
    files={t2.dat}     //data段起始地址為0x80
  }
    SECTIONS       //如有多段就可增加多個(gè)ROM
    {
    .text:  paddr=0x3000
    .data:  paddr=0x80
    }
  再通過(guò)編程實(shí)現(xiàn)將t1.dat和t2.dat連續(xù)寫(xiě)入RAM,完成后再將0x7F的內(nèi)容寫(xiě)成0x3000就可以實(shí)現(xiàn)引導(dǎo)。
4  探討和總結(jié)
  以上討論的是增強(qiáng)型8bit HPI,HOST通過(guò)該HPI只能訪問(wèn)片內(nèi)RAM空間。如要訪問(wèn)所有存儲(chǔ)器空間,DSP必須再次引導(dǎo)。先執(zhí)行本身片內(nèi)ROM中的引導(dǎo)程序?qū)OST的二次引導(dǎo)程序代碼下載到片內(nèi)RAM,再通過(guò)執(zhí)行二次引導(dǎo)程序訪問(wèn)其他非片內(nèi)數(shù)據(jù)。HPI 自舉引導(dǎo)本身也是一種數(shù)據(jù)通信,在本方案中已詳細(xì)地討論了HPI的自舉引導(dǎo)。
  現(xiàn)實(shí)應(yīng)用中通常為多機(jī)系統(tǒng),由于DSP的控制能力不很強(qiáng),通常只是作為信號(hào)處理器,其信息及控制數(shù)據(jù)通常來(lái)自主機(jī)。而增強(qiáng)型HPI具有高速數(shù)據(jù)通信速率,且通信控制方式簡(jiǎn)單。故HPI是DSP與其他機(jī)器通信的一種良好途徑。
參考文獻(xiàn)
1 錢曉捷,陳濤.微型計(jì)算機(jī)原理及接口技術(shù).北京:機(jī)械工業(yè)出版社,1999
2 TMS320C54x DSP Reference Set,Volume 5:Enhanced Peripherals.Texas Instruments Incorporated(SPRU302) Copyright(C),2001
3 TMS320C54x Assembly Language Tools User′s Guide (SPRU102).TMS320VC5402 and TMS320UC5402 Bootloader.Texas Instruments Incorporated(SPRA618) Copyright(C),2001
4 劉益成.TMS320C54X DSP應(yīng)用程序設(shè)計(jì)與開(kāi)發(fā).北京:北京航空航天大學(xué)出版社,2002

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
最新亚洲一区| 性做久久久久久免费观看欧美| 亚洲精品视频一区| 在线高清一区| 在线成人亚洲| 雨宫琴音一区二区在线| 激情欧美丁香| 激情五月婷婷综合| 激情懂色av一区av二区av| 国产亚洲女人久久久久毛片| 国产日韩欧美黄色| 国产午夜精品理论片a级大结局| 国产精一区二区三区| 国产精一区二区三区| 国产欧美亚洲日本| 国产婷婷色一区二区三区| 国产精品一区亚洲| 国产亚洲成av人在线观看导航| 国产日本欧美一区二区三区| 国产色综合久久| 韩国久久久久| 亚洲国产精品福利| 亚洲九九精品| 亚洲一区二区在线观看视频| 午夜精品在线| 久久精品视频一| 亚洲精品你懂的| 亚洲一区二区在线| 欧美一区二区三区四区视频| 久久久久久久精| 老司机一区二区三区| 欧美国产日韩精品| 欧美视频免费在线观看| 国产精品香蕉在线观看| 韩国视频理论视频久久| 亚洲国产精品尤物yw在线观看| 亚洲精品九九| 亚洲欧美中文另类| 亚洲国产日韩欧美综合久久| 亚洲每日更新| 亚洲午夜在线| 亚洲欧美日韩综合一区| 亚洲国产一二三| 一二三区精品福利视频| 亚洲欧美色婷婷| 最新国产成人av网站网址麻豆| 日韩亚洲国产欧美| 午夜亚洲一区| 免费视频久久| 国产精品久久久久久久久久直播| 国产一区白浆| 亚洲精选一区| 久久爱www久久做| 一区二区电影免费观看| 久久av一区二区三区| 欧美激情精品久久久| 国产欧美一级| 99视频精品在线| 欧美在线观看一区二区三区| 亚洲裸体在线观看| 久久精品电影| 欧美日韩亚洲综合一区| 国产日韩欧美精品一区| 亚洲区一区二| 亚洲深夜福利在线| 亚洲人成网站999久久久综合| 亚洲一级高清| 免费在线观看一区二区| 国产精品一二| 日韩视频第一页| 久久国产精品网站| 亚洲在线播放电影| 免费不卡在线观看| 国产乱码精品一区二区三区忘忧草| 亚洲国产精品成人精品| 欧美一区二区三区视频在线| 一区二区三区欧美在线| 开心色5月久久精品| 国产精品乱子久久久久| 亚洲国产日韩在线一区模特| 亚洲综合精品四区| 野花国产精品入口| 免费美女久久99| 国产一区香蕉久久| 一区二区三区视频在线| 亚洲精品日韩精品| 久久亚洲精品伦理| 国产欧美日本一区二区三区| 99热这里只有成人精品国产| 亚洲精品国产精品国自产观看| 亚洲黄色在线看| 亚洲一区在线视频| 久久狠狠婷婷| 国产精品人成在线观看免费| 亚洲精品久久久久中文字幕欢迎你 | 亚洲国产日韩欧美在线动漫| 性色av一区二区三区在线观看| 亚洲私拍自拍| 欧美日韩国产不卡| 亚洲国产日韩欧美在线99 | 久久亚洲精品视频| 国产一区二区久久| 亚洲综合三区| 性xx色xx综合久久久xx| 欧美日韩中文在线观看| 亚洲欧洲另类| 亚洲精品中文字| 欧美成人有码| 亚洲二区视频| 亚洲区一区二| 欧美黑人国产人伦爽爽爽| 伊人久久久大香线蕉综合直播 | 久久国产精品亚洲va麻豆| 欧美亚洲三区| 国产精品视频一区二区三区| 中日韩高清电影网| 亚洲一区不卡| 国产精品成人一区| 亚洲网站视频| 亚洲欧美国产毛片在线| 国产精品国产一区二区| 亚洲永久免费观看| 欧美一区二区三区四区在线观看地址 | 亚洲激情午夜| 美女脱光内衣内裤视频久久网站| 国精品一区二区三区| 亚欧成人在线| 久久久91精品国产| 韩日欧美一区二区| 亚洲福利电影| 欧美aⅴ99久久黑人专区| 亚洲国产日韩综合一区| 一本色道久久综合亚洲精品不卡 | 一本色道久久综合亚洲二区三区| 欧美精品一区二区三区一线天视频| 亚洲国产日韩综合一区| 一本久道久久久| 国产精品久久久久高潮| 性18欧美另类| 久久亚洲国产精品日日av夜夜| 一色屋精品亚洲香蕉网站| 亚洲精品国产精品乱码不99按摩| 欧美激情第1页| 一区二区三区国产精品| 欧美中文字幕精品| 亚洲福利在线看| 在线亚洲+欧美+日本专区| 国产精品乱人伦一区二区| 欧美在线免费看| 欧美大片一区| 亚洲网站在线| 久久尤物电影视频在线观看| 91久久久在线| 亚洲欧美国产视频| 国内精品久久久久久影视8 | 久久综合狠狠综合久久综合88 | 一区二区精品在线| 欧美在线视频在线播放完整版免费观看 | 伊人久久婷婷| 亚洲一级片在线观看| 国产亚洲福利社区一区| 亚洲精品小视频在线观看| 欧美三区在线视频| 午夜视频在线观看一区二区| 美女成人午夜| 亚洲网站视频| 欧美超级免费视 在线| av72成人在线| 久久久91精品国产| 亚洲美女黄色片| 久久久久久9999| 亚洲美女精品久久| 久久精品一区二区国产| 亚洲精品国偷自产在线99热| 欧美一区二视频在线免费观看| 在线看无码的免费网站| 亚洲欧美日产图| 影音先锋亚洲精品| 亚洲一区精品视频| 亚洲电影免费在线| 欧美在线不卡| 日韩一级大片在线| 久久一二三区| 亚洲尤物在线视频观看| 欧美a级片网| 性色av一区二区三区| 欧美日韩另类国产亚洲欧美一级| 久久成人精品视频| 国产精品va在线| 99re6热在线精品视频播放速度| 亚洲精品欧洲| 久久精品国产亚洲a| 欧美日韩99| 久久国产视频网| 国产精品乱人伦一区二区| 99热精品在线| 在线成人免费视频| 久久精品30| 中文欧美日韩| 欧美日韩亚洲天堂|