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