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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > Trimedia DSP芯片JTAG接口的仿真器設(shè)計

          Trimedia DSP芯片JTAG接口的仿真器設(shè)計

          作者: 時間:2004-12-06 來源:網(wǎng)絡(luò) 收藏
          摘要:提出 硬件的硬件電路組成和軟件;介紹的標準、工作原理及在中的實現(xiàn)。

          關(guān)鍵詞: EPP模式的并行口 硬件

          集成電路是Philips公司新近推出的針對多媒體應用的一種高性能。它能夠進行高質(zhì)量的視頻和音頻處理,可以通過在線調(diào)試工具――來開發(fā)Trimedia DSP的各種資源和調(diào)試各種應用程序。為了能夠滿足研發(fā)、生產(chǎn)上對系統(tǒng)編程及工程上對現(xiàn)場調(diào)試的需要,開發(fā)了使用方便、成本低的。

          1 仿真器硬件電路組成

          圖1為系統(tǒng)的組成框圖。整個仿真器的功能可以由1片可編程邏輯器件來完成。圖1中有兩個接口:一個與Trimedia DSP的JTAG接口相連,另一個連接到計算機的并行接口。

          之所以采用計算機的增強型并行接口,是因為現(xiàn)在一般的計算機都有如下幾種端口:串行接口、并行接口、USB接口。串行接口速度不高,無法滿足JTAG仿真器快速下載的要求;普通的并行接口,數(shù)據(jù)傳輸速率限制在50~150kbps,也無法滿足JTAG仿真器快速下載的要求;USB接口是種快速的計算機接口,最高速率可以達到12Mbps,但由于該接口速度是在數(shù)據(jù)以塊方式傳輸時實現(xiàn)的,無法滿足快速讀寫轉(zhuǎn)換的要求,所以,也無法達到我們要求的數(shù)據(jù)傳輸速率。而且一般的PC上都安裝了具有EPP和ECP功能的I/O控制器,在EPP模式下,可以只用1個IN或OUT指令來向I/O控制器傳輸1個字節(jié)的數(shù)據(jù),然后I/O控制器將會處理握手信號并產(chǎn)生選通信號。顯然,在這種機器上的數(shù)據(jù)傳輸速度受到指令執(zhí)行速率的限制。通常在同時代的機器上很容易獲得1~1.75Mbps的數(shù)據(jù)傳輸速率??梢?,增強型并行接口能夠滿足我們的需求,而且用EPP模式的并行接口進行開發(fā)的難度較小。

          圖1 系統(tǒng)的組成框圖

          圖2為仿真器硬件線路圖。

          TCK:測試時鐘,為TAP的控制器和寄存器提供測試參考時鐘,在TCK的同步作用下通過TDI和TDO引腳串行移入或同數(shù)據(jù)及指令。

          TMS:模式輸入信號,在TCK的上升沿時刻TMS的狀態(tài)決定了TAP控制器即將進入的工作狀態(tài)。

          TDI:指令和數(shù)據(jù)寄存器的串行輸入端,TAP的控制器的當前狀態(tài)以及保存在指令寄存器的具體指令,決定了對于一個特定的操作由TDI裝入哪個寄存器。在TCK的上升沿時刻,TDI引腳的數(shù)據(jù)被采樣,結(jié)果送到JTAG寄存器中。

          TDO:和TDI具有相同操作模式,只是在TCK的下降沿處改變狀態(tài)。

          TAP:測試訪問端口。

          從圖2中知道,仿真器的主要是可編程邏輯器件CPLD的,它將8位并行數(shù)據(jù)和串行數(shù)據(jù)進行相互轉(zhuǎn)換。也就是說,在JTAG端CPLD將產(chǎn)生TDI和TDO串行發(fā)送和接收時序,實現(xiàn)仿真器和Trimedia DSPJTAG控制器的相互通信。在編程中可設(shè)置發(fā)送(TDI)和接收(TDO)的8位數(shù)據(jù)寄存器,接收TMS的8位數(shù)據(jù)寄存器,4位(十六進制)計數(shù)器。發(fā)送和接收數(shù)據(jù)都以字節(jié)方式進行,不足8位數(shù)據(jù)的用0補齊。

          data_reg和addr_reg分別表示發(fā)送的8位數(shù)據(jù)和指令寄存器,data_flag表示數(shù)據(jù)是否發(fā)送或接收完畢,data_tms_counter為串行發(fā)送數(shù)據(jù)時的計數(shù)器,oscnm為外接的TCK時鐘。NDatastb、nWrite、nAddrstb、nReset為EPP模式的并行接口控制信號,data為并行口的D0~D7數(shù)據(jù)總線,tmsjtag、tdijtag為連接到TAP控制器的TMS、TDI引腳線。

          下面為數(shù)據(jù)和指令寫入相應的寄存器的VHDL例程:

          data_instruction_write:process(nDatastb,nWrite)

          Begin

          if(nDatastb'event and nDatastb='1')then

          if(nWrite='1')then

          data_reg=data;

          else

          data_reg=data_reg;

          end if;

          end if;

          End process;

          tms_write:process(nAddrstb,nWrite)

          Begin

          if(nAddrstb'event and nAddrstb='1')then

          if(nWrite='1')then

          addr_reg=data;

          else

          addr_reg=addr_reg;

          end if;

          end if;

          End process;

          下面為發(fā)送數(shù)據(jù)的VHDL例程:(由于接收例程類似發(fā)送例程,故省略。)

          tms_tdi_write:process(data_flag,oscnm_true)

          Begin

          if(oscnm_true'event and oscnm_true='1')then

          if(nreset='1')then

          tmsjtag=';

          end if;

          if(data_flag='1')then

          if(data_tms_counter="0001")then

          tmsjtag=addr_reg(0);

          tdijtagdata_reg(0);

          elsif(data_tms_counter="0010")then

          tmsjtag=addr_reg(1);

          tdijtag=data_reg(1);

          elsif(data_tms_counter="0011")then

          tmsjtag=addr_reg(2);

          tdijtag=data_reg(2);

          elsif(data_tms_counter="0100")then

          tmsjtag=addr_reg(3);

          tdijtag=data_reg(3);

          elsif(data_tms_counter="0101")then

          tmsjtag=addr_reg(4);

          tdijtag=data_reg(4);

          elsif(data_tms_counter="0110")then

          tmsjtag=addr_reg(5);

          tdijtag=data_reg(5);

          elsif(data_tms_counter="0111")then

          tmsjtag=addr_reg(6);

          tdijtag=data_reg(6);

          elsif(data_tms_counter="1000")then

          tmsjtag=addr_reg(7);

          tdijtag=data_reg(7);

          end if;

          end if;

          end if;

          End process;

          圖3 仿真器的DLL

          2 EPP接口控制軟件

          仿真器在Windows98操作系統(tǒng)中的DLL(動態(tài)連接庫)如圖3所示。圖3中TriMedia Turbo JTAG仿真板和Corelis ISA 100f JTAG仿真板是第三方廠商提供的仿真板,而Other JTAG Board就是要自行設(shè)計的仿真板。選擇何種仿真板,用戶在使用調(diào)試軟件時,可自行選擇。自行開發(fā)的仿真板需要有相應的動態(tài)鏈接庫和驅(qū)動程序,它們需要命名如下:newjtagboard.dll和newjtagboard.vxd。在Windows98操作系統(tǒng)下,由于可以直接使用EPP端口操縱,所以在Windows98操作系統(tǒng)下不需要相應的低層驅(qū)動――newjtagboard.vxd文件。在newjtagboard.dll中至少包含以下4個函數(shù):

          void tmJtagReset(long pindx/*Processor index*/) ;對DSP芯片進行復位

          void tmJtagInitBoard(long pindx,unsigned short base) ;對DSP芯片的TAP控制器進行初始化

          void tmJtagScanInstructionRegister(long pindx,unsigned long bus_no,unsigned char *out_buf,unsigned long length,unsigned void tmJtagScanDataRegister(long pindx,unsigned long bus_no,unsigned char *out_buf,unsigned long length,unsigned char *in_buf) ;傳送給數(shù)據(jù)寄存器DR數(shù)據(jù)的函數(shù)

          采用EPP端口的0x37BH和0x37CH地址,分別產(chǎn)生互鎖的地址讀或?qū)懼芷诤突ユi的數(shù)據(jù)讀或?qū)懼芷?。DLL通過EPP模式端口查詢nwait信號,以確定nWrite信號,進行發(fā)送或接收并行8位數(shù)據(jù)。用nDatastb引腳鎖定data數(shù)據(jù)(數(shù)據(jù)寄存器DR內(nèi)數(shù)據(jù))和Instruction指令(指令寄存器IR內(nèi)數(shù)據(jù)),用nAddrstb引腳鎖定TMS數(shù)據(jù),以實現(xiàn)數(shù)據(jù)寄存器DR和指令寄存器IR的切換。Data數(shù)據(jù)放在32位的數(shù)據(jù)寄存器DR中,Instruction指令放在5位指令寄存器IR中。芯片提供的JTAG指令包括:

          RESET(10000)對設(shè)備進行復位;

          SEL_DATA_IN(10001)選擇數(shù)據(jù)輸入寄存器;

          SEL_DATA_OUT(10010)選擇數(shù)據(jù)輸出寄存器;

          SEL_IFULL_IN(10011)選擇輸入數(shù)據(jù)滿的標志寄存器;

          SEL_IFULL_OUT(10100)選擇輸出數(shù)據(jù)滿的標志寄存器;

          SEL_JTAG_CTRL(10101)選擇控制寄存器;

          MACRO(11110)硬件測試模式的選擇。

          括號中的內(nèi)容是指令的操作碼,它們通過TDI引腳串行地移入指令寄存器IR。DLL被上層應用程序調(diào)用,進行Data數(shù)據(jù)和Instruction指令的傳送;同時,DLL會發(fā)送相應的TMS數(shù)據(jù)。

          結(jié)語

          Trimedia DSP芯片的廣泛應用,開發(fā)出了使用方便、成本低的仿真器,對于減少產(chǎn)品的研發(fā)和生產(chǎn)周期,保證產(chǎn)品的順利上市是非常有利的。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();