实现MAXQ2000微控制器的JTAG加载主机

模拟技术 时间:2012-03-19来源:网络
移出时,状态机保持在Shift-IR或者Shift-DR状态。在最后一个比特周期,TMS必须被驱动为高电平,这样,随着最后一位的输入和输出,TAP控制器将进入Exit1-DR或者Exit1-IR状态。

作为一个例子,在表4中,JTAG主机将数值100b (系统编程模式)移入到IR寄存器中。IR寄存器开始设置旁路值011b;TAP控制器最初为Run-Test-Idle状态。如下面的图4所示,比特以最低有效位在前、最高有效位在后移入(移出)TAP控制器。因此,在第一个移位周期,新数值的第0位被移入,旧数值的第0位被移出。

表4. 指令寄存器移位实例
TCKTMSTDITDOTAP StateShift RegisterInstruction Register
bit 2bit 1bit 0bit 2bit 1bit 0
01xxRun-Test-Idlexxx011
11xxSelect-DR-Scanxxx011
01xxSelect-DR-Scanxxx011
11xxSelect-IR-Scanxxx011
00xxSelect-IR-Scanxxx011
10xxCapture-IR001011
00xxCapture-IR001011
10xxShift-IR001011
000xShift-IR001011
100xShift-IR001011
0001Shift-IR000011
1001Shift-IR000011
0110Shift-IR000011
1110Exit1-IR000011
01x0Exit1-IR100011
11x0Update-IR100100
00xxUpdate-IR100100
10xxRun-Test-Idlexxx100

下面是执行这一操作的例程shiftIR3。

;==============================================================================;=;=  shiftIR3;=     clock0, clock1, shift;=;=  Shifts a 3-bit value into the IR register.;=;=  Inputs   : A[0] - Low three bits contain value to shift into IR;=  Outputs  : None;=  Destroys : AP, APC, A[0], PSW, LC[0];=shiftIR3:move    APC, #80h         ; Acc => A[0], turn off auto inc/deccall    clock1            ; (Select DR Scan)call    clock1            ; (Select IR Scan)call    clock0            ; (Capture IR - loads 001b to shift register)call    clock0            ; (Shift IR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxx210   c = srrc                       ; sxxxxx21   c = 0call    shift             ; Shift in IR bit 0rrc                       ; ssxxxxx2   c = 1call    shift             ; Shift in IR bit 1rrc                       ; sssxxxxx   c = 2move    TMS, #1           ; Drive TMS high for last bitcall    shift             ; Shift in IR bit 2 (Exit1 IR)call    clock1            ; (Update IR)call    clock0            ; (Run Test Idle)ret

写入TAP数据寄存器

数值移入或者移出TAP控制器DR的操作与装入/卸载IR的方式相似。通常,只有当IR被设置为两个数值之一时才能进行这一操作:100b (使TAP控制器进入系统编程模式)或者010b (使TAP控制器进入调试模式)。

激活系统编程模式后,装入和卸载DR寄存器的操作如下。 激活系统编程模式后,装入和卸载DR寄存器的操作如下。
;==============================================================================;=;=  shiftDR3;=;=  Shifts a 3-bit value into the DR register.  This operation should only be;=  performed when IR =100b (System Programming Mode).;=;=  Inputs   : A[0] - Low 3 bits contain value to shift into SPB (PSS1:PSS0:SPE);=  Outputs  : None;=  Destroys : AP, APC, A[0], PSW, LC[0]shiftDR3:move    APC, #80h         ; Acc => A[0], turn off auto inc/deccall    clock1            ; (Select DR Scan)call    clock0            ; (Capture DR)call    clock0            ; (Shift DR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxx210   c = srrc                       ; sxxxxx21   c = 0call    shift             ; Shift in DR bit 0rrc                       ; ssxxxxx2   c = 1call    shift             ; Shift in DR bit 1rrc                       ; sssxxxxx   c = 2move    TMS, #1           ; Drive TMS high for last bitcall    shift             ; Shift in DR bit 2 (Exit1 DR)call    clock1            ; (Update DR)call    clock0            ; (Run Test Idle)ret;==============================================================================;=;=  shiftDR;=     clock0, clock1, shift;=;=  Shifts a 10-bit value into and out of the DR register.  This operation ;=  should only be performed when IR = 010b (Debug/Loader Mode).;=;=  Inputs   : A[0]  - Byte value (input) to shift into DR;=  Outputs  : A[0]  - Byte value (output) shifted out of DR;=             A[1]  - Low two bits are status bits 1:0 shifted out of DR;=             A[15] - Byte value shifted in, cached for use by shiftDR_next;=  Destroys : AP, APC, PSW, LC[0]shiftDR:move    APC, #80h         ; Acc => A[0], turn off auto inc/decmove    A[15], A[0]       ; Cache input byte value for use by shiftDR_nextsla2                      ; Add two empty bits (for status)call    clock1            ; (Select DR Scan)call    clock0            ; (Capture DR)call    clock0            ; (Shift DR)move    TMS, #0           ; Drive TMS low                            move    C, TDO            ; xxxxxxxx76543210   c = s		
1 2 3 4 5 6 7

关键词: MAXQ2000 微控制器 JTAG

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版