專利名稱::一種jtag端口控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及集成電路測試
技術(shù)領(lǐng)域:
,特別是JTAG(JointTestActionGroup)端口控制器領(lǐng)域。
背景技術(shù):
:20世紀(jì)80年代以來,隨著計算機嵌入式系統(tǒng)的廣泛應(yīng)用,微控制器(MCU,microcontrollerunit/單片機)得到飛速的發(fā)展。早期的單片機是按照嵌入式應(yīng)用技術(shù)要求設(shè)計的計算機的單芯片化集成電路器件,也就是電子計算機的全部特性器件都集成到一片芯片上,故被形象的稱為單片機。隨著單片機應(yīng)用范圍的不斷加大,對于其仿真調(diào)試功能的要求也逐漸提高。目前幾乎所有的高速嵌入式處理器都用JTAG仿真調(diào)試模塊。它是對IEEE1149.1協(xié)議進行了擴展,將原本用于測試的JTAG接口擴展成一個調(diào)試接口。JTAG是標(biāo)準(zhǔn)的國際協(xié)議(參閱IEEEstandard1149.1)。JTAG調(diào)試訪問端口配置有以下5個管腳TCK,TMS,TDI,TDO和TRST。TCK(TestClock)為調(diào)試時鐘端口,為JTAG控制器提供時鐘。TMS(TestModeSelect)為模式選擇端口,可控制JTAG控制器的狀態(tài)變化。TDI(TestDataInput)為串行調(diào)試輸入數(shù)據(jù)端口,可通過該端口在TCK的上升沿移位輸入TAP(TestAccessPort,調(diào)試訪問端口)指令和數(shù)據(jù)。TDO(TestDataInput)為串行調(diào)試輸出數(shù)據(jù)端口,可通過該端口在TCK的下降沿輸出調(diào)試數(shù)據(jù)。TRST(TestReset)為復(fù)位端口,復(fù)位JTAG仿真調(diào)試模塊。圖1是通用的JTAG仿真調(diào)試系統(tǒng),JTAG仿真調(diào)試模塊與外部控制電路通過JTAG端口進行通信,JTAG仿真調(diào)試模塊將從JTAG端口得到的調(diào)試信息送到微控制器并進行調(diào)試。JTAG仿真調(diào)試模塊一般包括JTAG端口控制器(用于與JTAG端口通信,并與微控制器進行寄存器讀寫信息的傳送,這里提及的寄存器是指CPU調(diào)試狀態(tài)寄存器,調(diào)試時通常要求將微控制器的CPU調(diào)試狀態(tài)寄存器的狀態(tài)信息反饋給用戶且能通過JTAG端口寫CPU調(diào)試狀態(tài)寄存器,所以需要通過JTAG端口對CPU調(diào)試狀態(tài)寄存器進行讀寫操作)和調(diào)試控制模塊(與微控制器進行調(diào)試信息的傳送)。目前的JTAG端口控制器通常將串行的TDI數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),再將并行數(shù)據(jù)寫到JTAG相關(guān)的寄存器(如跟蹤計數(shù)器,JTAG狀態(tài)寄存器,CPU調(diào)試狀態(tài)寄存器等,其中CPU調(diào)試狀態(tài)寄存器存在于微控制器內(nèi),其他寄存器都存在于JTAG端口控制器內(nèi))中。在寫某個寄存器時,并不能觀測到此寄存器的新值和舊值的區(qū)別。而調(diào)試環(huán)境通常要求將寄存器的改變信息反饋給用戶,讓用戶實時觀測到寄存器值的改變,有哪些改變。若想知道寄存器值的改變情況,通常的做法是先將寄存器的值讀出來,再與即將要寫進去的值進行比較,從而獲得寄存器值的改變信息。因為必須進行一次讀寄存器的操作,所以比較浪費時間。
發(fā)明內(nèi)容本發(fā)明目的是提供一種JTAG端口控制器,該控制器在進行寫操作的同時,就能實時地觀測到調(diào)試過程中信息的變化。為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案是一種JTAG端口控制器,—種JTAG端口控制器,至少包括測試訪問端口、指令寄存器、指令解碼模塊、第一數(shù)據(jù)寄存器、端口寄存器,還包括狀態(tài)機控制模塊、第一選通器、信號組合模塊、信號分離模塊、第二選通器,其中,所述狀態(tài)機控制模塊,用于控制所述JTAG端口控制器所處的工作狀態(tài);所述第一選通器,根據(jù)所述指令寄存器的控制位信息,接受來自所述測試訪問端口中數(shù)據(jù)輸入端口的串行數(shù)據(jù)信息并依次從其輸出端口輸出單比特信息;或,接受來自所述信號分離模塊一個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器中第O位信息并從其輸出端口輸出該第0位信息;所述信號組合模塊,將所述信號分離模塊一個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器中第1位至最高位信息與所述第一選通器輸出的單比特信息組合成并行數(shù)據(jù)信息,其中,單比特信息位于該并行數(shù)據(jù)信息的最高位;所述第一數(shù)據(jù)寄存器為上升沿觸發(fā)的寄存器,在時鐘的上升沿將并行數(shù)據(jù)信息輸出至該寄存器的輸出端;所述信號分離模塊,接受來自所述第一數(shù)據(jù)寄存器輸出的并行數(shù)據(jù)信息,并將該并行數(shù)據(jù)信息的第0位信息與其它位信息分離;所述端口寄存器為下降沿觸發(fā)的寄存器,接收來自所述信號分離模塊的第O位信息并在時鐘的下降沿將該第0位信息輸出至該寄存器的輸出端。所述第二選通器,根據(jù)所述指令寄存器的控制位信息,控制將何種并行數(shù)據(jù)送到所述第一數(shù)據(jù)寄存器的輸入端,當(dāng)該第二選通器一個輸入端有效時,將所述信號組合模塊輸出端口輸出的并行數(shù)據(jù)信息選送到所述第一數(shù)據(jù)寄存器的輸入端;當(dāng)該第二選通器另一個輸入端有效時,將保持所述第一數(shù)據(jù)寄存器的輸出端數(shù)據(jù)不變。上述技術(shù)方案中的有關(guān)內(nèi)容解釋如下1、上述方案中,還包括第三選通器和第二數(shù)據(jù)寄存器,該第三選通器位于所述數(shù)據(jù)寄存器與端口寄存器之間,用于選擇第一數(shù)據(jù)寄存器和第二數(shù)據(jù)寄存器第0位信息的輸出。2、上述方案中,所述測試訪問端口還包括模式選擇端口、時鐘端口、數(shù)據(jù)輸出端口和復(fù)位端口。由于上述技術(shù)方案運用,本發(fā)明與現(xiàn)有技術(shù)相比具有下列優(yōu)點和效果1、本發(fā)明JTAG端口控制器在進行寫數(shù)據(jù)操作同時,就能實時地觀測到調(diào)試過程中信息的變化,從而有利于開發(fā)人員及時發(fā)現(xiàn)問題和問題的查找。2、本發(fā)明相對現(xiàn)有技術(shù),不需要通過增加一次讀操作才能觀測到調(diào)試過程中的變化信息,節(jié)省了硬件資源并提高了效率。3、本發(fā)明能提供前后數(shù)據(jù)實時對比并將結(jié)果反饋給用戶。4、本發(fā)明JTAG端口控制器的電路實現(xiàn)方式簡單,并不需要增加很多的電路邏輯,性價比高。附圖1為JTAG仿真調(diào)試系統(tǒng)示意4附圖2為JTAG端口控制器的狀態(tài);附圖3為指令解碼模塊示意圖;附圖4為本發(fā)明JTAG端口控制器的原理圖;附圖5為本發(fā)明通過數(shù)據(jù)輸入和輸出端口的數(shù)據(jù)比較信息;附圖6為本發(fā)明數(shù)據(jù)寄存器的移位操作示意圖。以上附圖中1、指令寄存器;2、指令解碼模塊;3、第一數(shù)據(jù)寄存器;4、端口寄存器;5、狀態(tài)機控制模塊;6、第一選通器;7、信號組合模塊;8、信號分離模塊;9、第二選通器;10、第三選通器;11、第二數(shù)據(jù)寄存器。具體實施例方式下面結(jié)合附圖及實施例對本發(fā)明作進一步描述實施例一種JTAG端口控制器—種JTAG端口控制器,至少包括測試訪問端口、指令寄存器1、指令解碼模塊2、第一數(shù)據(jù)寄存器3、端口寄存器4,還包括狀態(tài)機控制模塊5、第一選通器6、信號組合模塊7、信號分離模塊8、第二選通器9、第三選通器10、第二數(shù)據(jù)寄存器ll,其中,所述狀態(tài)機控制模塊5,用于控制所述JTAG端口控制器所處的狀態(tài);所述第一選通器6,根據(jù)所述指令寄存器1的控制位信息,接受來自所述測試訪問端口中數(shù)據(jù)輸入端口TDI的串行數(shù)據(jù)信息并依次從其輸出端口輸出單比特信息;或,接受來自所述信號分離模塊8—個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器3中第0位信息并從其輸出端口輸出該第0位信息;所述信號組合模塊7,將所述信號分離模塊8—個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器3中第l位至最高位信息與所述第一選通器6輸出的單比特信息組合成并行數(shù)據(jù)信息,其中,單比特信息位于該并行數(shù)據(jù)信息的最高位;所述第一數(shù)據(jù)寄存器3為上升沿觸發(fā)的寄存器,在時鐘的上升沿將并行數(shù)據(jù)信息輸出至該寄存器的輸出端;所述信號分離模塊8,接受來自所述第一數(shù)據(jù)寄存器3輸出的并行數(shù)據(jù)信息,并將該并行數(shù)據(jù)信息的第0位信息與其它位信息分離;所述端口寄存器4為下降沿觸發(fā)的寄存器,接收來自所述信號分離模塊8的第0位信息并在時鐘的下降沿將該第0位信息輸出至該寄存器的輸出端。所述第二選通器9,根據(jù)所述指令寄存器1的控制位信息,控制將何種并行數(shù)據(jù)送到所述第一數(shù)據(jù)寄存器3的輸入端,當(dāng)該第二選通器9一個輸入端有效時,將所述信號組合模塊7輸出端口輸出的并行數(shù)據(jù)信息選送到所述第一數(shù)據(jù)寄存器3的輸入端;當(dāng)該第二選通器9另一個輸入端有效時,將保持所述第一數(shù)據(jù)寄存器3的輸出端數(shù)據(jù)不變。所述第三選通器10和第二數(shù)據(jù)寄存器ll,該第三選通器10位于所述數(shù)據(jù)寄存器3、11與端口寄存器4之間,用于選擇第一數(shù)據(jù)寄存器3和第二數(shù)據(jù)寄存器11第0位信息的輸出。所述測試訪問端口還包括模式選擇端口TMS、時鐘端口TCK、數(shù)據(jù)輸出端口TDO和復(fù)位端口TRST。本實施例上述內(nèi)容具體解釋如下。5JTAG端口控制器將從數(shù)據(jù)輸入端口TDI輸入的串行數(shù)據(jù)信息依次輸入到相關(guān)的寄存器中,同時將JTAG相關(guān)寄存器的值轉(zhuǎn)為串行數(shù)據(jù)信息并送到端口寄存器4的輸出端TD0上。由模式選擇端口TMS和復(fù)位端口TRST決定JTAG端口控制器的狀態(tài),并由JTAG端口控制器的狀態(tài)和其它信息決定將從數(shù)據(jù)輸入端口TDI輸入的串行數(shù)據(jù)信息存入不同的寄存器,或從不同的寄存器中讀出數(shù)據(jù)信息。JTAG相關(guān)寄存器包括指令寄存器1(IR)、數(shù)據(jù)寄存器(DR)。指令寄存器1(IR)是一個包含在JTAG端口控制器內(nèi)的8位寄存器,數(shù)據(jù)寄存器(DR)是指多個寄存器的集合,包括第一數(shù)據(jù)寄存器3,第二數(shù)據(jù)寄存器11,CPU調(diào)試狀態(tài)寄存器等,數(shù)據(jù)寄存器(DR)都是由指令寄存器1(IR)控制如何進行讀寫操作的。在某個時刻只能操作其中一個數(shù)據(jù)寄存器(DR),至于要操作哪個數(shù)據(jù)寄存器(DR),則由指令寄存器1(IR)中的RS4RSO位決定。附圖2是JTAG端口控制器的狀態(tài)圖。根據(jù)模式選擇端口TMS和復(fù)位端口TRST的不同輸入信息決定JTAG端口控制器進入不同的狀態(tài)。當(dāng)復(fù)位端口TRST的復(fù)位信號有效即被拉高時,無論模式選擇端口TMS為何值,JTAG端口控制器都會立即進入到Test-Logic-Reset狀態(tài),且一直停留在Test-Logic-Reset狀態(tài)直到復(fù)位端口(TRST)的復(fù)位信號無效即被拉低。當(dāng)復(fù)位信號TRST無效且模式選擇端口TMS為l,則停留在Test-Logic-Reset狀態(tài)直到模式選擇端口TMS為0。當(dāng)復(fù)位信號TRST無效且模式選擇端口TMS為0,則在TCK上升沿后離開Test-Logic-Reset狀態(tài)而進入到Run-Test/Idle狀態(tài)。另夕卜,當(dāng)在Select-IR-Scan狀態(tài)且TMS為1時,在TCK上升沿后JTAG端口控制器也會進入至ljTest—Logic—Reset狀態(tài)。除了Test—Logic—Reset狀態(tài)禾口Run—Test/Idle狀態(tài),其f也狀態(tài)的進入都只與TMS和當(dāng)前狀態(tài)有關(guān),與TRST無關(guān)。比如當(dāng)JTAG端口控制器處于Run-Test/Idle狀態(tài)且TMS輸入為0時,JTAG端口控制器會一直停留在此狀態(tài);如果TMS為1,則在TCK上升沿后進入Select-DR-Scan狀態(tài)。通常,我們在系統(tǒng)上電時,會讓復(fù)位信號TRST有效,讓JTAG端口控制器進入到Test-Logic-Reset狀態(tài),然后讓復(fù)位信號TRST無效且讓模式選擇信號TMS為0,在TCK上升沿后進入到R皿-Test/Idle狀態(tài),繼續(xù)讓模式選擇信號TMS保持為0從而停留在Run-Test/Idle狀態(tài)。當(dāng)用戶需要寫指令寄存器(IR)或數(shù)據(jù)寄存器(DR)時,會控制模式選擇信號TMS取不同的值從而進入不同的狀態(tài),從而完成相關(guān)操作。比如要寫指令寄存器1(IR),JTAG端口控制器會從Run-Test/Idle狀態(tài)開始,經(jīng)歷Select-DR-Scan,Select-IR-Scan,C即ture-IR,Shift-IR,Exitl-IR,Update-IR狀態(tài),最后再回到Run-Test/Idle狀態(tài),直到有新的操作。要寫數(shù)據(jù)寄存器(DR),JTAG端口控制器也是從R皿-Test/Idle狀態(tài)開始,經(jīng)歷Select-DR-Scan,Capture-DR,Shift-DR,Exitl-DR,Update-DR狀態(tài),最后同樣回到Run-Test/Idle狀態(tài),直到有新的操作。具體的操作請見后面用戶寫不同數(shù)據(jù)寄存器(DR)時的三個步驟。當(dāng)用戶要寫不同的數(shù)據(jù)寄存器(DR)時,需要如下三個步驟步驟一首先要寫指令寄存器1(IR)。通過模式選擇端口TMS輸入相應(yīng)的值讓JTAG端口控制器進入到需要的狀態(tài),在Shift-IR狀態(tài)時會將的串行輸入值依次存入指令寄存器l(IR)中,經(jīng)過8個TCK時鐘周期后,指令寄存器1(IR)的8個位都被更新為需要的值,最后JTAG端口控制器又回到Run-Test/Idle狀態(tài),直到有新的操作才會離開Run-Test/Idle狀態(tài)而進入Select-DR-Scan狀態(tài)。指令寄存器1(IR)每一位的說明,如下76543210<table>tableseeoriginaldocumentpage7</column></row><table>(1)R/Wbit1:讀選中的數(shù)據(jù)寄存器(DR)0:寫選中的數(shù)據(jù)寄存器(DR)(2)RS4RSObits5,bOOOOO5,b00010:保留5'b00011:選中16位tracecounterOTC(追蹤計數(shù)器,即第一數(shù)據(jù)寄存器3)5'b00100:選中32位memorybreakpointAcounterMBCA(存儲器斷點A計數(shù)器)5'b00101:選中32位memorybreakpointBcounterMBCB(存儲器斷點B計數(shù)器)5'b00110:選中16位programcounterfirstinfirstoutbufferPCFIFO(禾呈序計數(shù)器先進先出緩沖器)5'b00111:選中32位memorybreakpointAbaseaddressregisterBABA(存儲器斷點A基地址寄存器)5'b01000:選中32位memorybreakpointBbaseaddressregisterBABB(存儲器斷點B基地址寄存器)5'b01001:選中32位memorybreakpointAmaskaddressregisterBAMA(存儲器斷點A屏蔽地址寄存器)5'b01010:選中32位memorybreakpointBmaskaddressregisterBAMB(存儲器斷點B屏蔽地址寄存器)5,b01011:選中128位CPUstatusregisterCPUSCR(CPU調(diào)試狀態(tài)寄存器,保存微控制器的一些狀態(tài)信息,如是否在調(diào)試模式,程序計數(shù)器的值等)5'b01100:不選中任何寄存器5'b01101:選中32位位JTAGcontrolregisterOCR(JTAG控制寄存器)5'b01110:選中32位JTAGstatusregisterOSR(JTAG狀態(tài)寄存器,即第二數(shù)據(jù)寄存器ll)5,b011115,blllll:保留步驟二指令寄存器1(IR)的寫操作完成后,它的RS4RSO位和JTAG端口控制器中的Shift-DR狀態(tài)信號被送到指令寄存器1(IR)的指令解碼模塊2中進行解碼,決定選中哪個數(shù)據(jù)寄存器(DR)進行操作,相應(yīng)的選擇信號會被拉高。圖3是指令寄存器1的指令解碼模塊2,它根據(jù)JTAG端口控制器的Shift_DR狀態(tài)信號和IR寄存器的RS4RSO位解碼得出不同數(shù)據(jù)寄存器(DR)的選擇信號,如Sel_otC,sel—osr信號等。要選中某個數(shù)據(jù)寄存器(DR),JTAG端口控制器必須處于Shift-DR狀態(tài),表明此時可以將TDI串行數(shù)據(jù)依次存入被選中的數(shù)據(jù)寄存器(DR)中。比如RS4RS0位為5'b00011,且JTAG端口控制器處于Shift-DR狀態(tài)時,則信號sel_otC被拉高,表明第一數(shù)據(jù)寄存器3即0TC寄存器被選中了。如RS4RSO位為5'b01110,且JTAG端口控制器處于Shift-DR狀態(tài)時,則信號sel_0Sr被拉高,表明第二數(shù)據(jù)寄存器11即OSR寄存器被選中了。步驟三最后再寫被選中的數(shù)據(jù)寄存器(DR)。要通過TMS輸入相應(yīng)的值讓JTAG端口控制器進入到需要的狀態(tài),通常在JTAG端口不進行任何操作的時候,JTAG端口控制器會停留在Run-Test/Idle狀態(tài),所以需要經(jīng)過的狀態(tài)依次為Select-DR-Scan,C即ture-DR,Shift-DR,Exitl-DR,Update-DR,Run-Test/Idle,其中Shift-DR狀態(tài)停留的TCK時鐘周期由被選中的數(shù)據(jù)寄存器(DR)的位數(shù)決定,比如第一數(shù)據(jù)寄存器3即OTC寄存器是16位的寄存器,當(dāng)選中第一數(shù)據(jù)寄存器3即OTC寄存器時,Shift-DR狀態(tài)會停留16個TCK時鐘周期;又比如第二數(shù)據(jù)寄存器ll即0SR寄存器是32位的寄存器,當(dāng)選中第二數(shù)據(jù)寄存器11即OSR寄存器時,Shift-DR狀態(tài)會停留32個TCK時鐘周期。R皿-Test/Idle狀態(tài)會一直停留直到有新的操作,其他狀態(tài)只停留一個TCK時鐘周期,在Shift-DR狀態(tài)時會將TDI的串行輸入值依次存入被選中的數(shù)據(jù)寄存器(DR)中,經(jīng)過N個TCK時鐘周期后,數(shù)據(jù)寄存器(DR)的N位都被更新為需要的值,N表示被選中的數(shù)據(jù)寄存器(DR)的位數(shù),當(dāng)選中第一數(shù)據(jù)寄存器3即OTC寄存器時,則N為16,當(dāng)選中第二數(shù)據(jù)寄存器11即OSR寄存器時,N為32,最后JTAG端口控制器又回到Run-Test/Idle狀態(tài),直到有新的操作才會離開Run-Test/Idle狀態(tài)而進入Select-DR-Scan狀態(tài)。經(jīng)過這三個步驟,就完成了對某個數(shù)據(jù)寄存器(DR)的寫操作。下面結(jié)合電路圖和波形圖對如何完成數(shù)據(jù)寄存器(DR)的寫操作以及通過寫操作來實時觀測數(shù)據(jù)寄存器(DR)的變化做進一步說明。圖4是JTAG端口控制器的實現(xiàn)裝置,它包括指令寄存器1(IR),狀態(tài)機控制模塊5,指令解碼模塊2,數(shù)據(jù)寄存器讀寫模塊。指令寄存器1(IR)是一個包含在JTAG端口控制器內(nèi)的8位寄存器,用于控制數(shù)據(jù)寄存器(DR)的讀寫操作。狀態(tài)機控制模塊5用于控制JTAG端口控制器進入何種狀態(tài),具體描述見前面對圖2的說明。指令解碼模塊2的描述見前面圖3的說明。數(shù)據(jù)寄存器讀寫模塊用于控制除CPU調(diào)試狀態(tài)寄存器(CPUSCR)以外的所有數(shù)據(jù)寄存器(DR)的讀寫操作,接收輸入的串行數(shù)據(jù)信息,輸出串行輸出數(shù)據(jù)信息。下面先以第一數(shù)據(jù)寄存器3即OTC寄存器為例做具體說明。步驟一當(dāng)指令寄存器1中的R/W位為0,即寫操作時,數(shù)據(jù)輸出端口(TDO)被第一選通器6送到j(luò)_otc_si信號上。如果R/W位為1即讀操作,第一數(shù)據(jù)寄存器3即OTC寄存器的第0位q_otc被第一選通器6送到j(luò)_otc_si信號上。步驟二1位信號j_otc_si和15位信號q_otc[15:1]經(jīng)信號組合模塊7組合成一個新的16位信號{j—otc—si,q_otc[15:l]}。步驟三當(dāng)指令解碼模塊2的輸出信號Sel_otC被拉高,即OTC寄存器被選中時,新的組合信號{j_otC_Si,q_0tc[15:l]}被第二選通器9送到信號cLotc[15:0]上。步驟四信號cLotc[15:0]在TCK上升沿時被保存到第一數(shù)據(jù)寄存器3即OTC寄存器中。此時,TDI(寫OTC寄存器)或(Lotc[O]即OTC寄存器的第0位的舊值(讀OTC寄存器)被保存到0TC寄存器的第15位,而0TC寄存器的第1位的舊值被移到第0位。經(jīng)過16個TCK時鐘周期后,如果是寫OTC寄存器操作,OTC寄存器的16位值全部更新為測試訪問端口中數(shù)據(jù)輸入端口TDI的串行數(shù)據(jù)信息;如果是讀OTC寄存器操作,OTC寄存器的168位值全部更新為OTC寄存器的16位舊值,換句話說,經(jīng)過16個TCK時鐘周期后,OTC寄存器保持不變。此操作表明OTC寄存器被選中且是寫操作時,串行數(shù)據(jù)信息TDI被依次存入0TC寄存器的16位數(shù)據(jù)中(從最低位q—otc到最高位q_otc[15]),即串行數(shù)據(jù)信息TDI第一個值最終被存入q_otc,第二個值最終被存入q_otc[1],第十六個值最終被存入q_otc[15]。步驟五信號q_Otc[15:0](即OTC寄存器輸出信號)是由信號q_otc(信號q_otc[15:0]的第O位)和信號(Lotc[15:1](信號(Lotc[15:0]的第15位到第1位)構(gòu)成。當(dāng)信號sel_otC被拉高時,信號q_otc通過第三選通器10被送到端口寄存器4的輸入端的信號d_tdo。信號d_tdo在TCK的下降沿被保存到端口寄存器4即TDO寄存器中。經(jīng)過16個TCK時鐘周期后,第一數(shù)據(jù)寄存器3即OTC寄存器的16位值全部從端口寄存器4輸出端輸出。此操作表明OTC寄存器被選中時(此時在Shift-DR狀態(tài)),OTC寄存器的16位值依次被送到端口寄存器4輸出端端口(從最低位q—otc到最高位q—otc[15]),即q_otc被送到輸出端TDO的的第1個數(shù)據(jù),q_otc[l]被送到輸出端TDO的第2個數(shù)據(jù),q_otc[15]被送到輸出端口TDO的第16個數(shù)據(jù)。綜上所述,如果是寫OTC寄存器,我們可以得知第一個TDI的值是OTC寄存器的第0位的新值;第一個TDO的值是OTC寄存器的第0位的舊值。此時我們在TCK的上升沿比較TDI和TDO,如果它們不相同則表明OTC寄存器的第0位會被改變,如果相同則表明OTC寄存器的第0位不會改變。同理我們可以得知OTC寄存器的其他位是否會有改變。接著我們用圖5的波形圖來進一步說明。此波形圖的前提是指令寄存器1被寫成8'b00000011,即R/W位為0,RS4RSO位為5'bOOOll,表明寫OTC寄存器操作。信號q_otc是OTC寄存器輸出信號cLotc[15:0]的第0位(事件1)。當(dāng)JTAG端口控制器由C即ture-DR狀態(tài)變?yōu)镾hift-DR狀態(tài)時,信號Sel_otC被拉高(事件2),表明選中OTC寄存器可以進行移位操作了。當(dāng)信號sel_otC被拉高時,q_otc通過第三選通器10被送到d_tdo(事件3),即事件3由事件1和事件2共同決定。在TCK下降沿(事件4)將d_tdo(事件3)的值存入TDO寄存器中(事件5),即事件5由事件4和事件3共同決定。綜上可知,寄存器OTC的第0位舊值在TCK下降沿后被送到了TDO端口上。因為R/W為O,所以TDI的值通過第一選通器6被送到信號j_otc_si(事件6)。信號q_otc[15:1]是OTC寄存器輸出信號q_otc[15:0]的高15位(q—otc[15]q_otc[1])(事件7)。當(dāng)信號Sel_otC被拉高后(事件2),新的組合信號{j_otC_si,q_otc[15:l]}通過第二選通器9被送到d_otc[15:0](事件8),即事件8由事件2,事件6和事件7—起決定。在TCK上升沿(事件9)將cLotc[15:0](事件8)的值存入OTC寄存器(Lotc[15:0]中(事件a)。綜上可知,第一數(shù)據(jù)寄存器3即OTC寄存器的值由OOOF變成了0007,是因為第一個TDI的值被送到了OTC寄存器的第15位(經(jīng)過16個TCK時鐘后,該數(shù)據(jù)信息會被移位到OTC寄存器的第0位),OTC寄存器的第0位被移出到TDO端口上。我們在TCK的上升沿(事件9)比較TDI和TDO,可以發(fā)現(xiàn)OTC寄存器的第0位由原來的1(被送到端口寄存器4輸出端即TDO端口上,即事件5)變成了0(第一個TDI的值為0,被送到了寄存器OTC的第15位,當(dāng)寫OTC操作完成后會被送到OTC的第0位)。同理,我們通過事件b能發(fā)現(xiàn)OTC的第0位到第3位均由1變成了0,通過事件c能發(fā)現(xiàn)OTC的第4位到第11位沒有改變,通過事件d能發(fā)現(xiàn)OTC的第12位到第15位均由O變成了1。當(dāng)JTAG端口控制器狀態(tài)由Shift-DR狀態(tài)變成Exitl-DR狀態(tài)時,信號Sel_otC被拉低(事件e),表明OTC寄存器不能進行移位操作了,OTC寄存器的值會保持FOOO不變(即信號Sel_otC為低時,將保持OTC寄存器的輸出端數(shù)據(jù)不變;),直到下一次移位操作。sel_0tc:OTC寄存器的選擇信號。sel_otC為高表示選中了OTC寄存器進行移位操作。Sel_otC為低表示沒選中OTC寄存器。j_otc_si:第一選通器6的輸出。q—otc[15:1]:寄存器OTC的第15位到第1位。d_otc[15:0]:寄存器OTC的輸入。q_otc[15:0]:寄存器OTC的輸出。q_otc:寄存器OTC的第0位。d_tdo:寄存器TDO即端口寄存器4的輸入,第二選通器9的輸出。TDO:JTAG的串行輸出數(shù)據(jù)。TDI:JTAG的串行輸入數(shù)據(jù)。圖6是OTC寄存器在Shift-DR狀態(tài)期間的移位操作,對應(yīng)于圖5中OTC寄存器由OOOF變?yōu)镕OOO的過程。只列了時鐘周期為0,1,2,14,15,16時的情況。經(jīng)過16個TCK時鐘周期后(從時鐘周期0到時鐘周期15),OTC寄存器的值由OOOF變?yōu)镕OOO。到時鐘周期16時,OTC寄存器的第15位為時鐘周期15時的TDI值,OTC寄存器的第14位為時鐘周期14時的TDI值,OTC寄存器的第13位為時鐘周期13時的數(shù)據(jù)輸入端口TDI的值,依此類推。上述實施例只為說明本發(fā)明的技術(shù)構(gòu)思及特點,其目的在于讓熟悉此項技術(shù)的人士能夠了解本發(fā)明的內(nèi)容并據(jù)以實施,并不能以此限制本發(fā)明的保護范圍。凡根據(jù)本發(fā)明精神實質(zhì)所作的等效變化或修飾,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求一種JTAG端口控制器,至少包括測試訪問端口、指令寄存器(1)、指令解碼模塊(2)、第一數(shù)據(jù)寄存器(3)、端口寄存器(4),其特征在于還包括狀態(tài)機控制模塊(5)、第一選通器(6)、信號組合模塊(7)、信號分離模塊(8)、第二選通器(9),其中,所述狀態(tài)機控制模塊(5),用于控制所述JTAG端口控制器所處的工作狀態(tài);所述第一選通器(6),根據(jù)所述指令寄存器(1)的控制位信息,接受來自所述測試訪問端口中數(shù)據(jù)輸入端口(TDI)的串行數(shù)據(jù)信息并從其輸出端口輸出單比特信息;或,接受來自所述信號分離模塊(8)一個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器(3)中第0位信息并從其輸出端口輸出該第0位信息;所述信號組合模塊(7),將所述信號分離模塊(8)一個輸出端口輸出的位于所述第一數(shù)據(jù)寄存器(3)中第1位至最高位信息與所述第一選通器(6)輸出的單比特信息組合成并行數(shù)據(jù)信息,其中,單比特信息位于該并行數(shù)據(jù)信息的最高位;所述第一數(shù)據(jù)寄存器(3)為上升沿觸發(fā)的寄存器,在時鐘的上升沿將并行數(shù)據(jù)信息輸出至該寄存器的輸出端;所述信號分離模塊(8),接受來自所述第一數(shù)據(jù)寄存器(3)輸出的并行數(shù)據(jù)信息,并將該并行數(shù)據(jù)信息的第0位信息與其它位信息分離;所述端口寄存器(4)為下降沿觸發(fā)的寄存器,接收來自所述信號分離模塊(8)的第0位信息并在時鐘的下降沿將該第0位信息輸出至該寄存器的輸出端。所述第二選通器(9),根據(jù)所述指令寄存器(1)的控制位信息,控制將何種并行數(shù)據(jù)送到所述第一數(shù)據(jù)寄存器(3)的輸入端,當(dāng)該第二選通器(9)一個輸入端有效時,將所述信號組合模塊(7)輸出端口輸出的并行數(shù)據(jù)信息選送到所述第一數(shù)據(jù)寄存器(3)的輸入端;當(dāng)該第二選通器(9)另一個輸入端有效時,將保持所述第一數(shù)據(jù)寄存器(3)的輸出端數(shù)據(jù)不變。2.根據(jù)權(quán)利要求1或2所述的JTAG端口控制器,其特征在于還包括第三選通器(10)和第二數(shù)據(jù)寄存器(ll),該第三選通器(10)位于所述數(shù)據(jù)寄存器(3、11)與端口寄存器(4)之間,用于選擇第一數(shù)據(jù)寄存器(3)和第二數(shù)據(jù)寄存器(11)第0位信息的輸出。3.根據(jù)權(quán)利要求l所述的,其特征在于所述測試訪問端口還包括模式選擇端口(TMS)、時鐘端口(TCK)、數(shù)據(jù)輸出端口(TD0)和復(fù)位端口(TRST)。全文摘要一種JTAG端口控制器,至少包括指令寄存器、指令解碼模塊、第一數(shù)據(jù)寄存器、端口寄存器、狀態(tài)機控制模塊、第一選通器、第二選通器、信號組合模塊和信號分離模塊,其中,第一選通器接受來自所述測試訪問端口中數(shù)據(jù)輸入端口的串行數(shù)據(jù)信息并依次從其一個輸出端口輸出單比特信息;信號組合模塊將第一數(shù)據(jù)寄存器的第1位至最高位信息與單比特信息組合成并行數(shù)據(jù)信息;所述第一數(shù)據(jù)寄存器為上升沿觸發(fā)的寄存器;所述信號分離模塊,將第一數(shù)據(jù)寄存器輸出的并行數(shù)據(jù)信息的第0位信息與其它位信息分離;所述端口寄存器為下降沿觸發(fā)的寄存器。本發(fā)明具有在進行寫操作的同時,就能實時地觀測到調(diào)試過程中信息的變化的優(yōu)點。文檔編號G01R31/28GK101782626SQ20101012652公開日2010年7月21日申請日期2010年3月11日優(yōu)先權(quán)日2010年3月11日發(fā)明者于麥口,肖佐楠,蔣小梅,鄭茳申請人:蘇州國芯科技有限公司