<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PC/104總線與HPI口通信的解決方案

          PC/104總線與HPI口通信的解決方案

          作者: 時間:2016-12-21 來源:網(wǎng)絡 收藏

          TMS320VC5402(以下簡稱C5402)是德州儀器公司(TI)推出的性價比極高的定點數(shù)字信號處理器(DSP)。采用改進的Harvard處理結構和指令流水線操作,計算處理速度很高(100MIPS),指令周期可達10ns;片內(nèi)提供16K字的RAM,用作程序和數(shù)據(jù)存儲,其最大可擴展尋址空間為1M字;主機接口(HPI)是具有強大功能的智能外設,提供了DSP和外部處理器的通信接口。

          掌握HPI的原理和使用方法,可以使硬件的設計更加簡單靈活。DSP在通過HPI口和主機通信的過程中完全沒有軟件和硬件開銷,由DSP自身的硬件協(xié)調(diào)沖突,不會打斷DSP正常程序的運行。在HPI通信方式下,DSP的片內(nèi)存儲器對外界完全透明,由主機訪問HPI的地址和數(shù)據(jù)寄存器便可完成對DSP片內(nèi)存儲器的讀/寫。 本文立足于實驗經(jīng)驗,以TMS320VC5402與PC/104總線為例,介紹基于HPI口的硬件接口及軟件實現(xiàn)。

          1.gif

          1 TMS320VC5402 HPI口簡介 主機接口HPI(Host Port Interface)是TMS320C5000系列定點芯片內(nèi)部具有的一種接口部件,主要用于DSP與其它總線或CPU進行連接。TI的C54xx系列都提供了8位或16位的增強型HPI接口,在此以C5402增強型8位HPI接口為例進行詳細介紹。 C5402的HPI口由一個8位數(shù)據(jù)總線和用于設備和控制接口的控制信號線組成,HPI接口通過HPI控制寄存器HPIC、地址寄存器HPIA、數(shù)據(jù)寄存器HPID和HPI內(nèi)存塊,實現(xiàn)與主機之間的通信。其主要特點在于接口所需外圍硬件很少,很容易與各種主機相連,且僅需要很少甚至不需要外加接口邏輯。引腳功能如表1所示。 表1 HPI引腳的名稱及功能 HPI引腳接至主機引腳狀 態(tài)信號功能 HD0HD7 數(shù)據(jù)總線 I/O/Z HPI雙向并行三態(tài)數(shù)據(jù)總線。當不傳送數(shù)據(jù)(/HSC或/HDSx=1)或EMU1//OFF=0(切斷所有輸出)時,HD7(MSB)~HD0(LSB)均處于高阻態(tài)。 /HAS 地址鎖存使能(ALE)或地址選通輸入信號引腳,不用則接高電平 I 地址選通輸入信號。如果主機的地址和數(shù)據(jù)是一條多路總線,則/HAS連到主機的ALE引腳;如果主機的地址和數(shù)據(jù)是分開的,就將/HAS接高電平。 /HCS 地址或控制線 I 片選信號。作為HPI的使能輸入,主機在對HPI訪問時信號/HCS要保持低電平。 HBIL 地址或控制線 I 字節(jié)輸入識別信號。HBIL為低時讀/寫第一個字節(jié),為高時讀/寫第二個字節(jié)。HBIL和HPI控制寄存器(HPIC)中的BOB位配合使用。 HCNTL0/1 地址或控制線 I 主機控制信號。選擇主機所訪問的是哪個寄存器:地址寄存器HPIA、數(shù)據(jù)寄存器HPID、控制寄存器HPIC。 /HDS1/2 讀/寫、數(shù)據(jù)選通輸入信號引腳 I 數(shù)據(jù)選通輸入。在主機訪問期間控制HPI數(shù)據(jù)的傳輸。 /HINT 主機中斷輸入 O/Z 主機中斷輸入。由控制寄存器HPIC中的HINT位控制。當C54x復位時為高電平,EMU1//OFF低電平時為高阻態(tài)。 HRDY 異步準備好信號引腳 O/Z HPI接口準備好信號輸出。HRDY為高說明HPI準備好數(shù)據(jù)傳送(主機可進行數(shù)據(jù)傳輸),為低表示HPI接口忙(主機不可傳輸數(shù)據(jù)),正在進行上次傳輸?shù)膬?nèi)部操作。 HR//W 讀寫選通信號引腳或地址線 I 讀/寫選通信號輸入端。在主機訪問期間控制數(shù)據(jù)的傳輸方向。高電平表示主機讀HPI,低電平表示寫HPI。 HPIENA VDD I HPI模塊選擇輸入。信號必須和VDD聯(lián)系起來,保證選擇HPI。如果輸入為開或接地,HPI模塊將不會被選擇。 HPI是8位的數(shù)據(jù)總線接口,由于C5402是16位的,所以與主機通信的數(shù)據(jù)都是由兩個連續(xù)的字節(jié)組成,并且由HBIL引腳指示正在傳輸?shù)氖堑谝粋€還是第二個字節(jié)。主機使用HCNTL0/1指定所訪問的是HPI控制寄存器HPIC或HPI數(shù)據(jù)寄存器HPID或HPI地址寄存器HPIA,也可以用地址自動增加的方式訪問數(shù)據(jù)寄存器HPID,具體方式如表2所示。 表2 HCNTL0/1功能選擇 HNTL0 HCNTL1 說 明 0 0 主機可以讀寫HPI的控制寄存器HPIC。 0 1 主機可以讀寫HPI的數(shù)據(jù)寄存器HPID。每次讀后HPIA加1,每次寫前HPIA加1。 1 0 主機可以讀寫HPI的地址寄存器HPIA。 1 1 主機可以讀寫HPI的數(shù)據(jù)寄存器HPID。對HPI口的操作,HPIA不受影響。 2 系統(tǒng)的硬件設計方案 整個硬件系統(tǒng)由DSP、EPM7128S、TPS73HD301、SST39VF400A等組成。DSP的主要任務是將經(jīng)放大和解調(diào)后的無線電修正通道視頻信號接收下來,現(xiàn)通過譯碼等處理后送給主探機。其原理如圖1所示。 C5402采用低電壓工作,其內(nèi)核電壓為1.8V、I/O管腳電壓為3.3V,而PC/104總線工作于5V電壓。為了使電路能穩(wěn)定正常的工作,C5402的數(shù)據(jù)總線接有一個SN74LVC245A。它是TI公司生產(chǎn)的3.3V和5V電壓平相轉(zhuǎn)換的雙向緩沖器,可以雙電源供電,一邊工作在 3.3V,一邊工作在5V,轉(zhuǎn)換的方向由兩個DIR管腳控制。它串在數(shù)據(jù)總線上,既可以為DSP提供驅(qū)動5V數(shù)字電路的能力,也可以為DSP提供5V信號讀入的保護。這樣,就不再需要為多個不同外設而考慮總線驅(qū)動不夠的問題。DSP主機接口和PC/104的連接如圖2所示。 主機和DSP可獨立地對HPI接口操作,主機和DSP的握手可通過中斷方式完成。另外,主機還可以通過HPI接口裝載DSP應用程序,接收DSP運行結果或診斷DSP運行狀態(tài),為DSP芯片的接口開發(fā)提供一種極為方便的途徑。HPI-8為8位并行口,提供C54x與外部主機的接口,C54x可通過片內(nèi) RAM與主機設備交換數(shù)據(jù)。主機與HPI-8的通信是通過專用的地址寄存器和數(shù)據(jù)寄存器完成的,C54x不能直接讀/寫,HPI控制寄存器允許主機和 C54x進行讀/寫,包括配置通信協(xié)議和控制通信(握手)的比特。 EPM7128S用來提供整個系統(tǒng)需要的組合邏輯。它屬于MAX7000系列,是Altera公司的基于第二代MAX結構的CPLD。它提供多達5000 個可用門和在系統(tǒng)編程,其引腳到引腳延時快達6ns??梢匀菁{各種各樣的獨立的組合邏輯和時序邏輯。EPM7128S有兩個工作電壓核電壓為5V,I/O 工作電壓可設為5V或3.3V。設為3.3V時,其輸入為5V,而輸出為3.3V TTL電平(所有的驅(qū)動器均能配置在3.3V和5V,允許用于混合電壓系統(tǒng)中)。EPM7128S的優(yōu)點是基于E2PROM原理,可以通過JTAG口進行在線編程,設計得可將設計內(nèi)容從PC機上通過下載電纜和JTAG口對EPM7128S進行任意次修改。在這里使用EPM7128S是為電路提供組合邏輯以映射空間。它有多達100個I/O引腳可供編程使用,可以接入PS、IS等管腳,方便系統(tǒng)擴展存儲空間和外設。



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();