《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于PC主機的DSP自舉引導和通信設計
一種基于PC主機的DSP自舉引導和通信設計
徐勛光
摘要: 結合主機并行接口(HPI)的設計經驗,詳細討論了DSP和主機(HOST)通過Enhanced 8bit HPI自舉引導的通信方案。
關鍵詞: DSP 接口 自舉引導
Abstract:
Key words :

  摘  要: 結合主機并行接口(HPI)的設計經驗,詳細討論了DSP和主機(HOST)通過Enhanced 8bit HPI自舉引導的通信方案。
  關鍵詞: 主機并行接口  個人計算機  自舉引導

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

 

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

 


  地址寄存器HPIA有多種模式,可選是否自動增加,即可以只寫1次HPIA且設定HPIA自動增加,此后便不用寫地址即可實現連續數據的寫入或讀出。在該引導過程中,HBIL引腳為低電平時,表示HOST傳送的是第1字節,而當HBIL引腳為高電平時,傳送的是第2字節。與其相配合的HPIC控制寄存器的BOB位為1時,將傳送第1字節并將其放在RAM的低8位,第2字節放在高8位;當BOB位為0時置放順序顛倒。
  下面是實現HOST(PC機)控制HPI進行自舉引導的程序,主要由以下3個函數完成:(1)write_port_a( )函數實現向地址寄存器HPIA寫地址字。(2)write_port_d( )函數實現向DSP的RAM寫數據字。(3)write_port_c( )函數實現向控制寄存器HPIC寫控制字。其自舉引導程序如下:
  #define PORT_D 0x378  //PC數據口
  #define PORT_S 0x379  //PC狀態口(其中輸出STROBE,
              //BUSY和SLCTIN的數據反向)
  #define PORT_C 0x37a//PC控制口(其中BUSY反向)
  write_port_a(int write_data)//向HPI的HPIA寫1個字
  {
    _outp(PORT_C,0x0009);//控制口hcnt1=0 hcnt0=1
                //hbil=0 hds1=0
    _outp(PORT_D,write_data);//輸出數據低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);//輸出數據的高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
                  //寫1個字,地址非自動增加
  {
       _outp(PORT_C,0x0003);//控制口hcnt1=1 hch0=0
                  //hbil=0 hds1=0
  ……

  }
  函數write_port_d( )類似于函數write_port_a( ),只需將操作HPIA的程序中的hcnt1/0改變,在寫控制數據時所有數據值減6,即可省略部分程序。
  write_port_c(int write_data)//向HPI的HPIC寫1個字,
                //要求該字中是2個完全相同的字節
  {
        _outp(PORT_C,0x000b);//控制口hcnt1=0 hcnt0=0
                //hbil=0 hds1=0
  ……
  函數write_port_c( )類似于函數write_port_a( ),只需將操作HPIA的程序中的hcnt1/0改變,在寫控制數據時所有數據值加2,即可省略部分程序。
  利用上述3個函數,PC機可以將1組每字16位的數據寫到DSP的RAM里。但要注意先初始化控制寄存器HPIC,控制主機寫進去的每個字的2個字節如何組成RAM里的1個字,否則將會產生錯誤。如把第1個字節放在低8位,第2個字節放在高8位,即BOB位為1。可通過下面語句實現:
  write_port_c(0x0101);
  該函數初始化控制寄存器HPIC,以使HPIC中的BOB位為1,XHPIA為0。
3  將完整的應用程序全部寫進DSP
  將一個完整的應用程序按每字16位寫到RAM中后,要實現自舉引導還需改變0X7F的內容,使其指向程序入口地址。寫完后DSP將自動轉向應用程序并運行。
  write_port_a(0x7f);
  write_port_d(0x3000);//假設0x3000為程序入口點
  下面討論如何將一個含多個段的可執行COFF文件轉化為程序所需的格式[4]。例如將test.asm源程序鏈接并編譯生成test.out文件,而該程序有.text段和.data段。其方法:用hex500.exe轉換工具將test.out生成2個16位的HEX文件,分別對應text段和data段。其命令文件如下:
  test.out//輸入文件
    -I//生成Intel格式
    -memwidth 16//存儲器數據寬度
    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       //如有多段就可增加多個ROM
    {
    .text:  paddr=0x3000
    .data:  paddr=0x80
    }
  再通過編程實現將t1.dat和t2.dat連續寫入RAM,完成后再將0x7F的內容寫成0x3000就可以實現引導。
4  探討和總結
  以上討論的是增強型8bit HPI,HOST通過該HPI只能訪問片內RAM空間。如要訪問所有存儲器空間,DSP必須再次引導。先執行本身片內ROM中的引導程序將HOST的二次引導程序代碼下載到片內RAM,再通過執行二次引導程序訪問其他非片內數據。HPI 自舉引導本身也是一種數據通信,在本方案中已詳細地討論了HPI的自舉引導。
  現實應用中通常為多機系統,由于DSP的控制能力不很強,通常只是作為信號處理器,其信息及控制數據通常來自主機。而增強型HPI具有高速數據通信速率,且通信控制方式簡單。故HPI是DSP與其他機器通信的一種良好途徑。
參考文獻
1 錢曉捷,陳濤.微型計算機原理及接口技術.北京:機械工業出版社,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應用程序設計與開發.北京:北京航空航天大學出版社,2002

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区视频| 久久国产精品电影| 国产日韩精品一区二区三区| 欧美成人午夜视频| 久久国产欧美| 午夜精品在线看| 日韩视频不卡中文| 亚洲成人自拍视频| 亚洲欧美日韩成人| 一本色道久久综合精品竹菊| 精品成人在线观看| 国产欧美一区二区精品性色| 欧美日韩中文字幕在线| 欧美va日韩va| 久久综合伊人77777蜜臀| 亚洲一区二区日本| 欧美制服丝袜| 亚洲主播在线观看| 一区二区三区视频免费在线观看| 亚洲经典自拍| 亚洲国产一区二区三区a毛片| 国内精品久久久久久久影视蜜臀| 国产精品国产三级国产aⅴ入口| 欧美另类视频在线| 欧美第一黄网免费网站| 美日韩精品免费| 久久综合九色99| 久久视频一区二区| 久久爱www久久做| 欧美一级片一区| 午夜精品美女自拍福到在线| 亚洲欧美精品suv| 亚洲午夜性刺激影院| 一本色道久久综合精品竹菊| av成人免费观看| 一区二区三区成人精品| 99亚洲视频| 一区二区三区四区五区在线 | 亚洲大片精品永久免费| 欧美亚洲综合另类| 西西人体一区二区| 亚洲欧美影院| 午夜精品一区二区三区在线视| 亚洲一区www| 欧美一区二区视频免费观看| 欧美一级日韩一级| 久久精品免费| 亚洲狼人综合| 亚洲香蕉视频| 午夜精品视频在线| 久久不射网站| 久久综合九色| 欧美激情女人20p| 欧美视频一区二区三区在线观看| 国产精品videossex久久发布| 国产精品igao视频网网址不卡日韩 | 免费亚洲电影在线观看| 欧美黑人在线播放| 欧美剧在线免费观看网站| 欧美日韩美女在线观看| 国产精品videosex极品| 国产欧美韩日| 怡红院av一区二区三区| 亚洲精品国产拍免费91在线| 亚洲最快最全在线视频| 亚洲小说区图片区| 久久精品国产久精国产一老狼 | 欧美亚洲一区二区三区| 久久er99精品| 亚洲美女av在线播放| 亚洲欧美韩国| 久久性色av| 欧美日韩黄色大片| 国产日产欧美a一级在线| 国产一区二区三区在线免费观看| 亚洲成人在线| 亚洲深夜福利视频| 欧美在线视频全部完| 亚洲精品日韩综合观看成人91| 一区二区三区四区五区在线| 久久国产一区| 欧美风情在线| 国产精品亚洲第一区在线暖暖韩国| 国精品一区二区| av72成人在线| 久久精品国产999大香线蕉| aa日韩免费精品视频一| 西瓜成人精品人成网站| 麻豆免费精品视频| 国产精品日韩精品欧美在线| 在线欧美三区| 亚洲午夜未删减在线观看| 亚洲高清免费| 午夜精品久久久久久久久| 欧美成人免费在线视频| 国产精品免费观看在线| 一区二区三区在线高清| 一区二区三区精品视频在线观看| 久久国产婷婷国产香蕉| 亚洲免费视频观看| 欧美岛国激情| 国产主播一区二区| 夜夜嗨一区二区| 日韩一级在线观看| 久久久久久久综合日本| 国产美女在线精品免费观看| 亚洲精品一区二区三区99| 亚洲日本激情| 久久精品国产一区二区三区| 欧美日韩视频在线| 18成人免费观看视频| 亚洲欧美中日韩| 亚洲午夜在线观看| 欧美精品aa| 精东粉嫩av免费一区二区三区| 亚洲综合视频网| 亚洲视频图片小说| 欧美电影免费观看高清完整版| 国产婷婷色综合av蜜臀av | 亚洲第一页在线| 久久av一区二区三区| 性感少妇一区| 亚洲人成网站在线观看播放| 欧美精品一区二区三区蜜桃| 国产欧美日韩一级| 中日韩在线视频| 一区二区电影免费观看| 欧美成人四级电影| 国产一区二区三区四区老人| 亚洲综合视频1区| 亚洲欧美一区二区三区极速播放 | 欧美一区二区成人6969| 欧美午夜久久久| 亚洲精选成人| 日韩午夜高潮| 欧美国产亚洲视频| 日韩视频在线观看国产| 99精品国产99久久久久久福利| 免费一级欧美在线大片| 国产一区久久| 欧美一区二区三区四区高清| 欧美一级大片在线观看| 国产精品色午夜在线观看| 亚洲一区二区在线播放| 午夜精品在线视频| 国产精品爽爽ⅴa在线观看| 亚洲素人在线| 性欧美长视频| 国产美女高潮久久白浆| 午夜精品偷拍| 久久精品视频免费| 狠狠入ady亚洲精品| 欧美与欧洲交xxxx免费观看| 久久精品夜夜夜夜久久| 国产亚洲激情| 久久精彩免费视频| 久久综合久久久久88| 精品成人久久| 亚洲精品视频在线| 欧美久久久久久久久久| 亚洲电影av在线| 日韩西西人体444www| 欧美精品三级在线观看| 国产精品久久看| 亚洲欧美日韩人成在线播放| 欧美一区二区三区四区在线 | 国产精品中文字幕在线观看| 欧美激情久久久久| 午夜精品在线看| 国产精品日韩欧美一区二区| 亚洲欧美色一区| 久久手机精品视频| 亚洲国产精品综合| 亚洲午夜伦理| 国产亚洲欧美日韩美女| 亚洲国产精品va在线看黑人| 欧美成人免费全部| 日韩视频不卡中文| 香蕉av777xxx色综合一区| 国户精品久久久久久久久久久不卡| 久久精品国产亚洲5555| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品午夜| 欧美一区二区三区在线看 | 亚洲高清在线观看| 一本久道久久久| 国产伦精品一区二区三区免费| 久久精品一区四区| 欧美日本久久| 香蕉成人久久| 欧美大尺度在线| 在线一区二区日韩| 久久久久久久性| 亚洲精品中文字幕有码专区| 欧美一区二区三区播放老司机| 一区在线播放| 亚洲欧美日韩在线观看a三区 | 夜夜夜久久久| 久久久久国产精品一区| 亚洲六月丁香色婷婷综合久久|