quarta-feira, 6 de abril de 2011

O que é o JTAG?

Se você é dono de um XBox 360 e já procurou pela internet alguma coisa sobre a customização deste console, provavelmente você já deve ter ouvido falar do JTAG. Através desta porta, usuários têm conseguido alterar a Dashboard do XBox, deixando ela com uma cara totalmente nova (e conseguindo um banimento da Live também).
Mas o que é o JTAG? Por que nossos consoles possuem tal porta disponível? Vamos aqui discutir alguns detalhes técnicos desta tecnologia de testes.

Breve história

O JTAG nada mais é do que um conector para a realização de testes no projeto de eletrônica. No caso do XBox, o pessoal da Microsoft colocou aquele conector ali, para a realização de testes no console. Obviamente o JTAG também suporta a gravação de componentes eletrônicos, por isto podemos ler e atualizar a Dashboard do XBox.
O JTAG (Joint Test Action Group) foi um grupo formado no ano de 1985, para criar uma padronização de testes para placas manufaturadas. Naquela época, as placas multilayer estavam se popularizando, e algumas conexões entre dois CIs não poderiam ser testadas com pontas de prova comuns.
Levou-se 5 anos para conclusão da padronização. Foi em 1990 que o padrão foi lançado, e naquele mesmo ano surge o primeiro processador com JTAG, fabricado pela Intel: o 80486.
Hoje em dia a tecnologia está presente em vários circuitos integrados, como processadores, microcontroladores, DSPs.

Boundary scan

O boundary scan é o mecanismo através do qual o JTAG testa todas as conexões de uma placa. Em um circuito integrado, todos os pinos de entrada e saída são ligados internamente pelo Boundary Scan Chain. Ele nada mais é do que um registrador de deslocamento, que faz a leitura dos pinos e os "serializa". A figura abaixo mostra a ligação interna dos pinos:


O sinal do JTAG pode portanto ler e escrever nos pinos do CI. No caso da escrita, o sinal do CI é desconectado do pino, e o pino passa a receber o sinal que foi transmitido pelo JTAG.
Se os pinos estão conectados entre si, eu posso forçar um valor em determinado pino. Depois posso verificar se este valor está presente em outro CI, onde o sinal está conectado. Através deste mecanismo, pode-se testar toda uma placa sem precisarmos de pontas de prova. A figura abaixo por exemplo mostra o caso de uma conexão entre dois CIs onde temos um curto e um circuito aberto:


Na transmissão dos sinais acima, observamos que não temos o mesmo valor na saída. Por causa do pino 2 e 3 estarem em curto, quando um sinal nível 0 é enviado juntamente com um sinal nível 1, teremos na saída dois sinais nível 0. No caso de um circuito aberto, qualquer sinal lido vai ser 1.
Se todo este teste for feito com um software, a parte de testes se torna muito mais rápida. Quem teria a paciência de testar as conexões de cada pino existente em uma placa, como a placa mãe de um XBox 360? É fácil perceber portanto, por que o JTAG é tão usado, e por que de sua presença nos nossos consoles.

Descrição dos sinais

Aqui temos um esquema das ligações do JTAG:


Podemos identificar quatro sinais aqui:
  1. TMS (Test Mode Select): Este sinal controla o chaveamento da máquina de estados do JTAG.
  2. TCK(Test Clock): Clock de comunicação do JTAG. A comunicação é síncrona e seu clock pode variar de 10 a 100MHz.
  3. TDI (Test Data In): Entrada de dados. Aqui, um bit de dados é deslocado para a linha de comunicação do JTAG por pulso de clock. Seria portanto o pino de entrada de vários registradores de deslocamento ligados em cascata.
  4. TDO (Test Data Out): Saída de dados. Aqui, um bit de dados é deslocado por pulso de clock. Seria o último pino de vários registradores de deslocamento ligados em cascata.
Além destes pinos, pode-se ter ainda um TRST (Test Reset), que serviria para resetar o estado de todos os pinos. Mas este estado pode ser obtido também através dos pinos TMS e TCK, sendo portanto opcional.

Controlador TAP

O Controlador TAP é o módulo que realiza todos os testes. Ele pode ser um módulo interno ao chip, ou pode ser um CI separado. Através dos pinos TCK e TMS, ele poderá mudar seu estado para um dos dezesseis estados possíveis, entre eles o estado de reset. Ele possui também dois registradores, o instruction register (IR) e o data register (DR).

Concluindo

O JTAG é algo muito interessante para desenvolvedores de hardware. Há muitas referências para aqueles entusiastas da eletrônica que desejam se aprofundar mais nesta matéria. Por exemplo, o Boundary Scan tem uma linguagem específica, que é derivada do VHDL. Alguns sites tratam deste tema:

http://www.corelis.com/education/BSDL_Tutorial.htm
https://www.intellitech.com/bsdl/bsdl.asp
http://bsdl.info/index.htm

Temos ainda sites descrevendo mais a fundo o JTAG:
http://www.corelis.com/education/JTAG_Tutorial.htm
http://focus.ti.com/lit/an/ssya002c/ssya002c.pdf

Nenhum comentário:

Postar um comentário

Você também poderá gostar de