<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現在位置:范文先生網>理工論文>電子通信論文>利用ISA總線實現對DSP芯片VC5402的軟配置

      利用ISA總線實現對DSP芯片VC5402的軟配置

      時間:2023-02-21 00:18:08 電子通信論文 我要投稿
      • 相關推薦

      利用ISA總線實現對DSP芯片VC5402的軟配置

        摘要:以PC機作為主機,通過PC的ISA總線與DSP的HPI主機并口連接作為傳輸通道,實現對PC機ISA插卡上的DSP芯片TMS320VC5402進行實時在線程序裝載。
        
        關鍵詞:DSPHPI主機并口ISA總線軟配置
        
        一、引言
        
        目前,隨著微電子技術的飛速發展,在基于工業測控和數據采集領域的PC機板卡產品中,高速DSP芯片的使用已經是越來越普及。眾多廠家生產的DSP芯片中以美國TI公司(德州儀器)生產的DSP芯片的應用最為普遍。同傳統的諸如單片機的程序裝載過程相比,DSP廠家為芯片提供了更多、更靈活的程序裝載方法。電子工程師在設計DSP系統中究竟采用那種程序裝載方法,應視產品類型的不同而有所選擇。當前許多廠家所生產的DSP芯片中都集成了主機并行接口,利用主機并口可以完成主機和DSP之間的并行數據交換。例如TI公司的TMS320C54X系列的DSP芯片、AD公司ADSP21XX系列的DSP芯片等。而主機并口在完成主機與DSP進行數據交換的同時,還大都具有程序裝載的功能。在PC板卡類電子產品上使用DSP芯片時,實際上是一種主從模式的應用,即把PC機作為主機,DSP芯片作為從機。這時采用主機并口通過PC機的系統總線來完成程序的裝載就成了一種既經濟實用又靈活方便的方式。下面以TI公司的TMS320VC5402為例(以下簡稱為VC5402),本文介紹了如何由PC的ISA總線來完成DSP程序的HPI(主機并行接口)裝載,并給出了軟硬件開發的實例。
        
        二、硬件設計
        
        1.VC5402的HPI程序裝載過程
        
        VC5402內部具有4K×16位字的ROM,當系統上電復位后,如果VC5402的MP/MC引腳為低,那么VC5402的PC程序指針跳到地址為0XFF80的ROM處開始執行復位向量段的程序。該段程序是廠家在出廠時就固化好的一段程序,它首先執行跳轉指令,跳到地址為0XF800處開始執行,從0XF800開始的ROM的內容被稱為程序裝載器(Bootloader)。在那里DSP將要判斷用戶究竟采用了那種程序裝載方式,而判斷的依據是通過諸如中斷的有無、數據或I/O空間固定地址單元內特定的標志字的有無等廠家已經定義好的方式來識別的。值得注意的是,VC5402的HPI裝載方式與C54X系列的其它型號稍有不同。其不同有以下兩點:
        
        ⑴VC5402的HPI裝載過程是在復位過程(Reset)以后完成的,不是在復位過程中完成的。
        
        ⑵/INT2標志位不是判斷HPI裝載模式的唯一方法,VC5402內地址為0X007F的RAM單元的內容也是判斷HPI裝載模式的一種方法。
        
        PC機的ISA總線作為主機(以后稱為HOST)可以通過HPI口把VC5402的程序裝載到VC5402內部雙存取RAM中開始執行。
        
        圖1ISA總線與VC5402的HPI接口電路
        
        2.硬件實現
        
        實現ISA總線與VC5402的HPI硬件接口比較簡單,需要注意的一點就是VC5402與ISA總線需要電平轉換。由于ISA總線電平是5VTTL電平,而VC5402是3.3V電平,所以兩者不能直接接口。我們可以使用PHILIPS公司的74LVC245電平轉換芯片,這種芯片采用3.3V供電,能允許5V和3.3V兩種電平的輸入信號。輸出為3.3V電平,可以和3.3V器件直接接口。電路原理圖見圖一:
        
        由于需要PC對VC5402進行實時的程序裝載,那么VC5402的復位就不能用簡單的RC電路來完成,這里采用一片74HC74的D觸發器由PC控制完成VC5402的復位過程。圖中,我們把/HINT和/INT2連在一起,是因為VC5402在運行Bootloader時會自動在/HINT引腳輸出一個低電平,這樣會使VC5402在復位結束后馬上能識別到當前的裝載模式為HPI模式,而忽略對其它模式的循環搜索。電路設計時需要注意對VC5402的HPI相關控制引腳的接法。對于控制引腳,采用不同的HOST時,接法也會有所不同。這里需要了解一下HPI主機并口工作的時序,時序圖見圖二。圖中的/HCS信號是HPI使能輸入信號,當使用HPI時,/HCS信號必須接地。/HAS是HPI的地址鎖存輸入信號,這個信號在地址總線與數據總線分時復用的處理器(例如8031)作為HOST時作為地址鎖存信號來使用;對于ISA總線,其地址線和數據線是分開的,所以/HAS只要接3.3V即可。/HDS1和/HDS2是兩個數據鎖存信號,事實上使用其中的一個就可以了,而另一個則必須接3.3V。本例子中使用了/HDS1,而/HDS2接了3.3V。應該指出,當不使用/HAS信號時,/HDS1和/HDS2兩個輸入信號也具有地址鎖存作用,在它們的下降沿時刻,VC5402的HPI鎖存HCNTL0、HCNTL1、HBIL和HR/W四個控制輸入信號的值。通過這四個信號的值,VC5402可以確定當前是對那個寄存器進行操作、是讀操作還是寫操作、是對16位字長的高八位還是低八位進行傳輸,因此電路設計時必須確保在/HDS1或/HDS2下降沿時上述四個控制信號具有正確的邏輯電平,否則整個程序裝載過程將會失敗。
        
        圖2HPI操作時序圖
        
        由于VC5402內部是16位的數據總線,而其HPI主機并口卻是一個8位的數據總線,所以通過HPI與HOST進行一個16位字的數據交換需要分兩次來完成,HBIL信號來指出當前是第一個字節還是第二個字節。HR/W輸入信號來指出當前HOST的數據傳輸方向,由于這里只是對VC5402進行程序裝載,即HOST只對HPI進行寫操作,所以把HR/W接地。至于HCNTL0、HCNTL1兩個輸入控制信號的作用,這里不妨簡述如下:
        
        HOST通過HPI與VC5402進行數據交換時,實際上只是對VC5402的三個寄存器進行訪問,它們是HPI控制寄存器HPIC、HPI地址寄存器HPIA和HPI數據寄存器HPID。HOST對這三個寄存器的尋址,是通過輸入信號線HCNTL0和HCNTL1來完成的,具體過程如下表一。實際應用中通常是把HCNTL0、HCNTL1連同HBIL接到HOST的地址線上。
        
        表一HPI主機并口的地址分配
        
        HCNTL0HCNTL1功能描述00HOST讀寫HPI控制寄存器HPIC01HOST讀寫HPI控制寄存器HPID,同時HPIA具有自動加1的功能,這種方式可以數據交換的速度10HOST讀寫HPI地址寄存器HPIA11HOST讀寫HPI數據寄存器HPID,HPIA寄存器不受影響
        電路中用一片GAL16V8來完成PC的I/O地址譯碼。下面來對VC5402進行I/O資源分配。分配情況見表二。根據資源分配,對照圖一所示電原理圖,寫出GAL16V8的譯碼狀態方程:
        
        IO4=A9*/A8*/A7*/A6*A5*A4*/A3*/A2*/A1*/A0*AEN*/IOW;對VC5402復位譯碼
        
        /IO1=/IOW;送/HDS1進行數據鎖存
        
        /IO6=A9*/A8*/A7*/A6*A5*A4*A3*AEN;HPI地址選通
        
        為了防止74LVC245高阻輸出時的不穩定對/HDS1造成誤操作,使用10KΩ的電阻對/HDS1進行上拉是必要的。
        
        表二PC對VC5402的I/O資源分配
        
        I/O地址
        操作
        
        230H對VC5402進行復位,當寫00H時是執行復位,當寫入01H時是跳出復位狀態238H寫HPIC是第一個字節239H寫HPIC是第二個字節23CH寫HPIA是第一個字節23DH寫HPIA是第二個字節23EH寫HPID是第一個字節23FH寫HPID是第二個字節
        三、軟件設計
        
        1.軟件開發步驟
        
        基于ISA總線實現對VC5402的軟配置,軟件的關鍵在于HOST方軟件的編寫,至于VC5402的運行程序的編寫當然不在討論的范疇。HOST方軟件所要完成的任務就是把VC5402的運行程序按照編程者事先指定好的地址進行定位裝載然后運行。那么究竟應該把什么格式的文件裝載到VC5402的內部,又怎樣裝載呢?鑒于此,可以把HOST方軟件用下面四個步驟來概括:
        
        ⑴生成*.OUT形式的公用目標文件(COFF)。
        
        當在TI公司的C54X集成開發環境CCS5000下進行C54X系列的程序開發時,都會經過編譯,鏈接最后生成*.OUT文件。
        
        ⑵對*.OUT文件進行提取,從中篩選出對最后裝載有用的代碼和地址信息。
        
        第一步所產生的*.OUT文件由于是COFF格式的文件,也就是一種模塊化的經過Bootload后就可執行的文件,它的可重定位特性使得用戶可以對程序在允許的地址范圍內靈活地安排。正因為如此,*.OUT文件還不是一個完完全全的可執行代碼,它里面包含有一些關于程序中各個段的諸如起始地址、段的長度這樣的輔助信息,如果把這些信息連同程序代碼都裝入DSP內部,程序是不會被正常執行的。這時必須要對*.OUT進行輔助信息與可執行代碼的提取與分離。完成這個任務是靠專門的程序完成的,是TI公司提供的,程序的名稱是:Coff_both.exe。這個程序可以在TI的網站上免費下載,空間為120K。利用該程序對*.OUT文件進行操作最后生成第三步所需的*.OUT.C的文件。
        
        ⑶把經過提取的*.OUT.C文件按照文件提供的起始地址和程序代碼通過HPI裝載到VC5402內部。
        
        第二步生成的*.OUT.C文件明確地告訴了程序有幾個段,每個段的大小,段的起始地址以及每個段的16進制代碼。有了這個文件,就知道了該寫些什么內容到VC5402里去才能夠開始執行VC5402的程序了。接下來要做的就是通過編寫自己的應用程序把*.OUT.C文件中的16進制代碼通過HPI寫入VC5402內部。
        
        ⑷把程序執行的首地址寫入VC5402內部地址為0X007F的單元內部。
        
        在把所有的代碼都裝載完畢后,最后必須要在VC5402內部0X007F的RAM單元內寫入程序執行的首地址。當VC5402檢測到0X007F單元內的值為非0值時,就知道HPI裝載過程已經結束,并從0X007F單元指定的地址開始執行程序,至此整個裝載過程結束。
        
        2.軟件開發實例
        
        結合圖一的硬件電路,對照軟件開發的每一個步驟,我們給出了一個簡單的軟件開發的例子,意在使對此感興趣的讀者能夠通過此例,真正明白用HPI進行VC5402裝載的全過程。圖一中VC5402的XF輸出引腳接了一個發光二極管,VC5402程序的功能就是使該二極管不停的閃爍。下面按照上述的四步流程進行:
        
        ⑴編寫example.asm和example.cmd文件,用CCS5000集成開發軟件生成example.out文件。關于通過控制XF引腳來使發光二極管閃爍的VC5402程序的編寫,這里就不再贅述。
        
        ⑵把Coff_both.exe和example.out文件放在同一目錄下,在DOS命令提示符下鍵入:Coff_both-outexample.out。這時就會生成example.out.c格式的文件。該文件的形式見圖三。這個程序只有一段程序,即.text段,這段程序一共由41個字組成,該程序段需要裝載到開始地址為0X0080開始的內部RAM中去運行。而這41個字的16進制代碼則是最后真正被執行的VC5402的程序代碼。
        
        ⑶把example.out.c文件中的代碼由HPI寫到VC5402的內部RAM中。HOST主機軟件,需要用戶自己來編寫,可以采用VC或VB調用驅動程序來完成,也可以通過TURB0C2.0直接通過I/O操作來完成,甚至可用MASM的匯編語言來編寫,程序的主要任務就是讀取example.out.c文件和寫I/O端口。HOST主機軟件的流程圖見圖四。為了便于讀者編程驗證,我們用TURBOC2.0編寫了名為HOST_HPI.C的主機程序,讀者可以運行該程序來讀取example.out.c文件,把41字的代碼裝載入VC5402。使用方法如下:在DOS命令提示符下鍵入:HOST_HPI.exe后,屏幕將提示輸入example.out.c文件的路徑,例如:鍵入:C:\ti\myprojects\example.out.c后,HOST_HPI.exe將完成HOST裝載VC5402的任務,如果看到發光二級管不停的閃爍,表明VC5402已經開始正常運行程序了。至此,整個裝載過程完畢。
        
        3.HOST_HPI.C源程序
        
        /*HOST_HPI.C*/
        
        #include"stdio.h"
        
        #include"dos.h"
        
        #defineSIZE100
        
        main()
        
        {
        
        FILE*fp;
        
        UnsignedintDSP_RES,HPIC_H,HPIC_L;
        
        UnsignedintHPIA_H,HPIA_L,HPID_H,HPID_L;
        
        char*a,ch,filename;
        
        unsignedinti,j,length,addr,start[10],*data;
        
        printf("Pleaseinputthenamefile:\n");
        
        scanf("%s",filename);/*輸入程序文件名*/
        
        if((fp=fopen(filename,"r"))==NULL)/*打開程序文件*/
        
        {
        
        printf("cannotopenfile:\n");
        
        exit(0);
        
        }
        
        DSP_RES=0x240;/*設置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復位(DSP_RES寄存器置00H)*/
        
        delay(2000);/*延時以保證DSP準確的復位*/
        
        outportb(DSP_RES,0x01);/*DSP跳出復位(DSP_RES寄存器置01H)*/
        
        outportb(HPIC_H,0x00);/*DSP的HPIC寄存器置0000H*/
        
        outportb(HPIC_L,0x00);
        
        i=0;
        
        while(!feof(fp))/*判斷程序文件是否結束*/
        
        {
        
        fgets(a,SIZE,fp);
        
        fgets(a,SIZE,fp);
        
        fscanf(fp,"%s",a);
        
        fscanf(fp,"%s",a);
        
        fscanf(fp,"%x",&length);/*讀取數據的長度*/
        
        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裝入數據*/
        
        {
        
        /*給DSP的HPIA寄存器賦程序地址,先賦高位再賦低位*/
        
        outportb(HPIA_H,addr>>8);
        
        outportb(HPIA_L,addr&0x00ff);
        
        /*給DSP的HPID寄存器賦程序數據,先賦高位再賦低位*/
        
        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++;/*循環次數加1*/
        
        }
        
        fclose(fp);/*關閉程序文件*/
        
        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("WritedatatoDSPsuccess!\n");/*返回寫數據成功提示,程序結束*/
        
        }
        
        四、結論
        
        通過本文可以看出,通過PC對VC5402進行HPI的程序裝載屬于一種基于RAM的在線編程,相比于使用并行或串行EEPROM進行DSP程序裝載的方法,它不用對程序存儲器進行燒寫,屬于一種軟配置。在基于PC的插卡式測試設備開發過程中,這種方法避免了多次斷電、燒寫程序的不便,使設備具有了在線開發的特點。
        
        
        
        
        

      【利用ISA總線實現對DSP芯片VC5402的軟配置】相關文章:

      PCI總線和DSP芯片的圖像處理平臺的硬件設計08-06

      用CPLD實現單片機與ISA總線接口的并行通信08-06

      利用異步通信芯片16C552實現PC機與DSP的串行通訊08-06

      基于DSP與CPLD的I2C總線接口的設計與實現08-06

      利用Flash實現DSP對多個程序有選擇的加載08-06

      利用DSP實現IIR濾波器的精度擴展08-06

      CAN總線控制器與DSP的接口08-06

      PCI總線接口芯片9050及其應用08-06

      單片機與DSP結合的dsPIC芯片08-06

      主站蜘蛛池模板: 五月综合激情婷婷六月| 成人午夜视频在线| 欧美成人午夜在线观看视频| 国产精品国三级国产av| 国产精品一区在线免费看| 亚洲国产青草衣衣一二三区| 国产黄色带三级在线观看| 亚洲色成人网站www永久四虎| 日本一卡2卡3卡四卡精品网站| 国产免费无遮挡吸乳视频在线观看| 国产成人高清在线观看视频 | 92精品国产自产在线观看481页 | 天堂中文8资源在线8| 亚洲人妻精品中文字幕| 无码高潮爽到爆的喷水视频app| 亚洲国产精品视频一二区| 久久免费观看归女高潮特黄| 日韩精品福利一区二区三区| 精品国产一区二区三区大| 成人自拍短视频午夜福利| 在线观看人成视频免费| 强奷乱码中文字幕| 四虎库影成人在线播放| 成人午夜免费无码视频在线观看| 性夜夜春夜夜爽夜夜免费视频| 国产成人一区二区视频免费| 国内精品伊人久久久久影院对白| 亚洲精品色无码AV试看| 国产成人A在线视频免费| 国产成人高清精品亚洲| 国产对白老熟女正在播放| 国产一区二区在线有码| 亚洲国产午夜精品理论片妓女| 亚洲成人av免费一区| 国产成人啪精品午夜网站| 国产AV影片麻豆精品传媒| 无码精品人妻一区二区三区中| 2019亚洲午夜无码天堂| 97成人碰碰久久人人超级碰oo| 久久精品国产清自在天天线| 四虎在线中文字幕一区|