close

到這個標題不知有多少人會有興趣?!


這是上回版主說要找個機會跟各位介紹的JTAG內容。


其實,我要講的是有關於 JTAG 的簡單介紹的,但他的應用對我來說:


大概還是不脫 USB 介面的應用。這是很久以前有人找版主做的東西....


別人也是說:能不能做一條關於 USB 轉 JTAG 的轉接線?


所以版主才去研究這個東西的....不過因為年代久遠(其實是,近三年前的事了!)


若有錯誤之處也敬請原諒也敬請不吝賜教!


------
    首先我們先看一下JTAG 原本的含意: JTAG (Joint Test Access Group) !


一定大家都摸不著他的定義。雖然您可能常常聽人家說,自己也經常用,卻不甚了解他的含意。


其實這個規格最原始的用意是拿來作為PCB 版偵錯檢查用的,


所以他有一個基本原理,也是大家所熟悉的Boundary Scan Control....


一般PCB 完成後會做一些飛針測試,以確認PCB 版有沒有Open/Short 現象。


但這種方式也只不過簡單的測試。但對於一些電路版的基本動作是無法進一步得知的。


所以,就有這一種算是PCB 版基本功能檢測方法.....


如果,您本身有做過一些電子產品的夾測試治具的話,就應該不陌生了。


他就是利用一些基本的邏輯方法來測試一些 I/O 的基本動作,以確認PCB功能是OK的!


---- 簡單的說明就是說:哪些電子回路,我在Input 端灌一系列邏輯信號,


我們就可以在Output端量到一些正確信號,若不對,代表這個PCB版的內部回路有問題。


所以,這種Bounadry Scan 是需要原始設計者提供一些 測試波形(有人稱為 Test Vector,


或是 Test Patterns)用以測試的!


 (註:如果您是IC設計業的菜鳥的話,一開始的蹲馬步,就是要幫一些學長跑一些模擬,


而這些模擬環境,就是寫一些Test Patterns...然後做苦工的看結果。


至於還夠不夠格寫一些封測廠要用的檢測程式,那就看您學長對您的「厚愛」了。)


-----  這些都是 1985 年以前的事!


那之後的事呢?!....哈~哈~  因為慢慢的一塊傳統電路版也會縮到一棵IC而已。


所以,這個觀念就被延伸到IC內部的測試了。也就是我們目前所熟悉的JTAG的風貌...


-------


 


      其實,一棵IC內要有JTAG 功能的話,也是需要浪費一些邏輯電路空間的,


但這些因應IC出廠檢測用的邏輯回路,對於提高IC量產良率是有幫助的。  是值得的!


也慢慢的這種檢測方式也可以拿來做其他額外功能的:也就是我們現在所常見到的:


燒錄器功能啊﹑或是ICE (In-Circuit Emulation) 模擬功能啊等等...


我為何要講這個東西,就是因為現在的MCU 都已經有提供一些線上模擬功能,


讓一般使用者不用在額外使用模擬器或燒錄器,大大的提高終端客戶的使用意願。


-----
    至於JTAG 的基本動作我就稍微簡述如下:(有興趣可以去找一下 JTAG 的規格書


不過,等您K完後,您也可能不知道一些所以然....因為這個規格原本就是給PCB 版檢測用的)


版主就簡單的列出一兩張圖,再加以說明,我想大家就比較容易清楚一點了。


下圖就是一張TAP 狀態圖 (Test Access Port State diagram) ,而這張圖就是所有 JTAG 的精髓了。


         JTAG 一般有幾隻腳呢?就是 TDI(Input),TDO (output), TCK(Clock) 及所謂的 TMS (Mode Select)。


至於要不要TRst (reset )就沒有硬性規定了。


其實,嚴格講:以控制的時序信號來說:JTAG 是有點像  SPI 介面。差別就是在那一根 TMS。


而這個TMS 就是拿來控制上述的那個TAP 狀態圖了....



 



 


我簡單的說明一下那個狀態圖的原理:一般我們IC上電後,會進入一個所謂 Reset 狀態。


就是圖上的那個Test-Logic-Reset !....


然後,若當 TMS 下一個狀態時(就是再送一個TCK 搭配一個 TMS值),為高(1)的值的話。


他只不過回到 Reset 狀態,--- 就是沒有改變。


但若為低(0)的值的話,他就會進入所謂的 Run-Test-Idle 狀態了....依此類推。


另外兩大類的狀態為:Select-DR-Scan 及Select-IR-Scan !


Select-DR-Scan 就是要讀(寫)所謂的Data Register!


Select-IR-Scan 就是拿來下一些Command 用的。


-------


   不知大家有沒有發現這一張 TAP 狀態圖有一個很好玩的地方?


就是不管您目前處於哪一個狀態,您只要下九個TMS為高(1)的值的話。


您一定可以回到所謂的 Test-Logic-Reset 了--- 這是一個寫程式的重要觀念喔


----


    好了,JTAG 的基本原理講完了,啊?!這麼簡單?!


對啊....越複雜的話,那麼IC內部的邏輯回路就會跟著複雜,賣IC的怎麼賺錢啊?!


接下來大家都可以寫一些應用程式了,


所謂Boundary Scan 就是要利用上述的那個觀念,把一些IC內部的資料給「擠」出來


如果大家有寫過Microchip 的SPI介面的話,應該知道我在說什麼?!


因為在IC設計中,有些IC在RESET之後,有一些Registers 是有一些預設值的,


我們就可以利用這個Boundary Scan 方法把他「擠」出來....


但是很不幸的是:雖然JTAG的原理大家用的是一樣的,但每一家公司的IC的基本指令


或是所謂Registers 也不一定完全相同,這還是得拿到原廠技術資料的。


否則,還是一樣:沒輒的!譬如:我們以有名FPGA大廠的Altera 的FPGA為例:



他每一個JTAG Instruction 也會有他自己的 Instruction Code....


以最簡單的IDCODE 來說:這是要「擠」出您目標IC的基本識別碼的!


相信他每一顆不同型號的IC會「幾」出不同的識別碼吧!


那您說:我怎麼可以做一條USB 轉JTAG 的標準線啊?!.....


因為每一家IC 及每一族係IC可能都有不同的JTAG Instruction 呢。


但我們肯定的是:他們既然號稱JTAG 我想他的基本架構就是應該如此。


如此說來,您應該會進一步的提會到版主一直強調的USB 韌體更新的重要性吧。


因為您每每都要跟著新的JTAG Instruction 來調整您USB 韌體吧。


.....


    關於USB 與 JTAG 的基本觀念就暫時先介紹到此。下回有機會再以實例跟各位說明。



    如果,您有這方面的問題或想法的話,也歡迎隨時與版主聯絡。


謝謝各位。


 



 


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 賈老師的真老公 的頭像
    賈老師的真老公

    ChamberPlus System Level Studio

    賈老師的真老公 發表在 痞客邦 留言(4) 人氣()