Peripheral Component Interconnect
Peripheral Component Interconnect (PCI)[3] é um barramento de computador local para conectar dispositivos de hardware em um computador e faz parte do padrão PCI Local Bus. O barramento PCI suporta as funções encontradas em um barramento de processador, mas em um formato padronizado que é independente de qualquer barramento nativo do processador. Os dispositivos conectados ao barramento PCI parecem a um barramento mestre estar conectados diretamente ao seu próprio barramento e recebem endereços no espaço de endereço do processador.[4] É um barramento paralelo, síncrono a um único clock de barramento. Os dispositivos conectados podem assumir a forma de um circuito integrado instalado na placa-mãe (chamado de dispositivo planar na especificação PCI) ou uma placa de expansão que se encaixa em um slot. O PCI Local Bus foi implementado pela primeira vez em compatíveis com IBM PC, onde substituiu a combinação de vários slots lentos Industry Standard Architecture (ISA) e um slot rápido VESA Local Bus (VLB) como a configuração do barramento. Posteriormente, foi adotado para outros tipos de computadores. As placas PCI típicas usadas em PCs incluem: placas de rede, placas de som, modems, portas extras como Universal Serial Bus (USB) ou serial, placas sintonizadoras de TV e adaptadores host de unidade de disco rígido. As placas de vídeo PCI substituíram as placas ISA e VLB até que as crescentes necessidades de largura de banda superaram as capacidades do PCI. A interface preferida para placas de vídeo tornou-se então a Accelerated Graphics Port (AGP), um superconjunto do PCI, antes de dar lugar ao PCI Express.[5] A primeira versão do PCI encontrada em computadores de mesa de varejo era um barramento de 32 bits usando um clock de barramento de 33 MHz e sinalização de 5 V, embora o padrão PCI 1.0 também fornecesse uma variante de 64 bits.[necessário esclarecer] Eles têm um entalhe de localização na placa. A versão 2.0 do padrão PCI introduziu slots de 3,3 V, fisicamente diferenciados por um conector físico invertido para evitar a inserção acidental de placas de 5 V. As placas universais, que podem operar em qualquer voltagem, têm dois entalhes. A versão 2.1 do padrão PCI introduziu a operação opcional de 66 MHz. Uma variante orientada a servidor do PCI, PCI Extended (PCI-X) operava em frequências de até 133 MHz para PCI-X 1.0 e até 533 MHz para PCI-X 2.0. Um conector interno para placas de laptop, chamado Mini PCI, foi introduzido na versão 2.2 da especificação PCI. O barramento PCI também foi adotado para um padrão de conector de laptop externo - o CardBus.[6] A primeira especificação PCI foi desenvolvida pela Intel, mas o desenvolvimento subsequente do padrão tornou-se responsabilidade do PCI Special Interest Group (PCI-SIG).[7] PCI e PCI-X às vezes são chamados de PCI Paralelo ou PCI Convencional[8] para distingui-los tecnologicamente de seu sucessor mais recente, PCI Express, que adotou uma arquitetura serial baseada em pistas.[9][10] O apogeu do PCI no mercado de computadores desktop foi aproximadamente de 1995 a 2005.[9] PCI e PCI-X se tornaram obsoletos para a maioria dos propósitos e desapareceram amplamente de muitas outras placas-mãe modernas desde 2013; no entanto, eles ainda são comuns em alguns desktops modernos a partir de 2020 para fins de compatibilidade com versões anteriores e o custo relativamente baixo de produção. Outra aplicação moderna comum do PCI paralelo é em PCs industriais, onde muitas placas de expansão especializadas, usadas aqui, nunca fizeram a transição para PCI Express, assim como com algumas placas ISA. Muitos tipos de dispositivos anteriormente disponíveis em placas de expansão PCI agora são comumente integrados em placas-mãe ou disponíveis em versões USB e PCI Express. HistóriaO trabalho no PCI começou no Intel Architecture Labs (IAL, também Architecture Development Lab) por volta de 1990. Uma equipe composta principalmente por engenheiros do IAL definiu a arquitetura e desenvolveu um chipset e uma plataforma de prova de conceito (Saturn) em parceria com equipes nos sistemas de PC de mesa da empresa e nas principais organizações de produtos lógicos. O PCI foi imediatamente colocado em uso em servidores, substituindo a Micro Channel architecture (MCA) e a Extended Industry Standard Architecture (EISA) como o barramento de expansão de servidor de escolha. Em PCs convencionais, o PCI foi mais lento para substituir o VLB e não ganhou penetração significativa no mercado até o final de 1994 em PCs Pentium de segunda geração. Em 1996, o VLB estava quase extinto e os fabricantes adotaram o PCI até mesmo para computadores Intel 80486 (486).[11] O EISA continuou a ser usado junto com o PCI até 2000. A Apple Computer adotou o PCI para computadores Power Macintosh profissionais (substituindo o NuBus) em meados de 1995 e a linha de produtos Performa para o consumidor (substituindo o LC Processor Direct Slot (PDS)) em meados de 1996. Fora do mercado de servidores, a versão de 64 bits do PCI simples permaneceu rara na prática,[12] embora tenha sido usada, por exemplo, por todos os computadores Power Macintosh G3 e G4 (pós-iMac).[13] Revisões posteriores do PCI adicionaram novos recursos e melhorias de desempenho, incluindo um padrão de 66 MHz 3,3 V e 133 MHz PCI-X, e a adaptação da sinalização PCI para outros fatores de forma. Tanto o PCI-X 1.0b quanto o PCI-X 2.0 são compatíveis com versões anteriores de alguns padrões PCI. Essas revisões foram usadas em hardware de servidor, mas o hardware de PC do consumidor permaneceu quase todo de 32 bits, 33 MHz e 5 volts. O PCI-SIG introduziu o PCI Express serial em c. 2004. Desde então, os fabricantes de placas-mãe incluíram progressivamente menos slots PCI em favor do novo padrão. Muitas placas-mãe novas não fornecem slots PCI, até o final de 2013.[carece de fontes]
Configuração automáticaPCI fornece memória separada e espaços de endereço de porta de I/O mapeados em memória para a família de processadores x86, 64 e 32 bits, respectivamente. Endereços nesses espaços de endereço são atribuídos por software. Um terceiro espaço de endereço, chamado PCI Configuration Space, que usa um esquema de endereçamento fixo, permite que o software determine a quantidade de memória e espaço de endereço de I/O necessários para cada dispositivo. Cada dispositivo pode solicitar até seis áreas de espaço de memória ou espaço de porta de entrada/saída (I/O) por meio de seus registradores de espaço de configuração. Em um sistema típico, o firmware (ou sistema operacional) consulta todos os barramentos PCI no momento da inicialização (por meio do PCI Configuration Space) para descobrir quais dispositivos estão presentes e quais recursos do sistema (espaço de memória, espaço de I/O, linhas de interrupção, etc.) cada um precisa. Ele então aloca os recursos e informa a cada dispositivo qual é sua alocação. O espaço de configuração PCI também contém uma pequena quantidade de informações sobre o tipo de dispositivo, o que ajuda o sistema operacional a escolher drivers de dispositivo para ele ou, pelo menos, a dialogar com o usuário sobre a configuração do sistema. Os dispositivos podem ter uma memória somente leitura (ROM) on-board contendo código executável para processadores x86 ou PA-RISC, um driver Open Firmware ou uma Option ROM. Eles são normalmente necessários para dispositivos usados durante a inicialização do sistema, antes que os drivers de dispositivo sejam carregados pelo sistema operacional. Além disso, há PCI Latency Timers que são um mecanismo para dispositivos PCI Bus-Mastering compartilharem o barramento PCI de forma justa. "Justo" neste caso significa que os dispositivos não usarão uma porção tão grande da largura de banda do barramento PCI disponível que outros dispositivos não consigam fazer o trabalho necessário. Observe que isso não se aplica ao PCI Express.
InterrupçõesOs dispositivos precisam seguir um protocolo para que as linhas de solicitação de interrupção (IRQ) possam ser compartilhadas. O barramento PCI inclui quatro linhas de interrupção, INTA# a INTD#, todas disponíveis para cada dispositivo. Até oito dispositivos PCI compartilham a mesma linha de IRQ (LNKA a LNKH) em sistemas x86 habilitados para APIC. As linhas de interrupção não são conectadas em paralelo, assim como as outras linhas de barramento PCI. As posições das linhas de interrupção giram entre os slots, então o que parece para um dispositivo como a linha INTA# é INTB# para o próximo e INTC# para o seguinte. Dispositivos de função única geralmente usam seu INTA# para sinalização de interrupção, então a carga do dispositivo é distribuída de forma bastante uniforme entre as quatro linhas de interrupção disponíveis. Isso alivia um problema comum com o compartilhamento de interrupções. O mapeamento de linhas de interrupção PCI em linhas de interrupção do sistema, por meio da ponte de host PCI, depende da implementação. O firmware específico da plataforma ou o código do sistema operacional devem saber disso e definir o campo "linha de interrupção" no espaço de configuração de cada dispositivo, indicando a qual IRQ ele está conectado. As linhas de interrupção PCI são acionadas por nível. Isso foi escolhido em vez do acionamento por borda para obter uma vantagem ao atender uma linha de interrupção compartilhada e para robustez: interrupções acionadas por borda são fáceis de perder. Revisões posteriores da especificação PCI adicionam suporte para interrupções sinalizadas por mensagem. Neste sistema, um dispositivo sinaliza sua necessidade de serviço realizando uma gravação de memória, em vez de afirmar uma linha dedicada. Isso alivia o problema de escassez de linhas de interrupção. Mesmo se os vetores de interrupção ainda forem compartilhados, ele não sofre os problemas de compartilhamento de interrupções acionadas por nível. Ele também resolve o problema de roteamento, porque a gravação de memória não é modificada de forma imprevisível entre o dispositivo e o host. Finalmente, como a sinalização de mensagem é in-band, ele resolve alguns problemas de sincronização que podem ocorrer com gravações postadas e linhas de interrupção fora de banda. O PCI Express não tem linhas de interrupção física. Ele usa interrupções sinalizadas por mensagem exclusivamente. Especificações de hardware convencionaisEssas especificações representam a versão mais comum de PCI usada em PCs normais:
A especificação PCI também fornece opções para sinalização de 3,3 V, largura de barramento de 64 bits e clock de 66 MHz, mas elas não são comumente encontradas fora do suporte PCI-X em placas-mãe de servidor. O árbitro de barramento PCI realiza arbitragem de barramento entre vários mestres no barramento PCI. Qualquer número de mestres de barramento pode residir no barramento PCI, bem como solicitações para o barramento. Um par de sinais de solicitação e concessão é dedicado a cada mestre de barramento. Voltagem e codificação da placaPlacas PCI típicas têm um ou dois entalhes de chave, dependendo da voltagem de sinalização. Placas que requerem 3,3 volts têm um entalhe a 56,21 mm da placa traseira da placa; aquelas que requerem 5 volts têm um entalhe a 104,41 mm da placa traseira. Isso permite que as placas sejam encaixadas somente em slots com uma voltagem que elas suportam. "Placas universais" que aceitam qualquer voltagem têm ambos os entalhes de chave. Pinagem do conectorO conector PCI é definido como tendo 62 contatos em cada lado do conector de borda, mas dois ou quatro deles são substituídos por entalhes de chave, então uma placa tem 60 ou 58 contatos em cada lado. O lado A se refere ao 'lado da solda' e o lado B se refere ao 'lado do componente': se a placa for segurada com o conector apontando para baixo, uma vista do lado A terá a placa traseira à direita, enquanto uma vista do lado B terá a placa traseira à esquerda. A pinagem dos lados B e A são os seguintes, olhando para baixo no conector da placa-mãe (os pinos A1 e B1 são os mais próximos da placa traseira).[15][17][18]
O PCI de 64 bits estende isso com 32 contatos adicionais em cada lado, que fornecem AD[63:32], C/BE[7:4]#, o sinal de paridade PAR64 e vários pinos de alimentação e aterramento.
A maioria das linhas são conectadas a cada slot em paralelo. As exceções são:
Notas:
Mistura de placas PCI de 32 e 64 bits em slots de larguras diferentesA maioria das placas PCI de 32 bits funcionará corretamente em slots PCI-X de 64 bits, mas a taxa de clock do barramento será limitada à frequência de clock da placa mais lenta, uma limitação inerente da topologia de barramento compartilhado do PCI. Por exemplo, quando um periférico PCI 2.3 de 66 MHz é instalado em um barramento PCI-X com capacidade de 133 MHz, todo o backplane do barramento será limitado a 66 MHz. Para contornar essa limitação, muitas placas-mãe têm dois ou mais barramentos PCI/PCI-X, com um barramento destinado ao uso com periféricos PCI-X de alta velocidade e o outro barramento destinado a periféricos de uso geral. Muitas placas PCI-X de 64 bits são projetadas para funcionar no modo de 32 bits se inseridas em conectores mais curtos de 32 bits, com alguma perda de desempenho.[21][22] Um exemplo disso é a placa de interface SCSI Adaptec 29160 de 64 bits.[23] No entanto, algumas placas PCI-X de 64 bits não funcionam em slots PCI padrão de 32 bits.[24] Instalar uma placa PCI-X de 64 bits em um slot de 32 bits deixará a porção de 64 bits do conector de borda da placa desconectada e pendurada. Isso requer que não haja componentes da placa-mãe posicionados de modo a obstruir mecanicamente a porção pendurada do conector de borda da placa. Dimensões físicasAlturas dos suportes PCI: Comprimentos da placa PCI (suporte padrão e 3,3 V): [27]
Comprimentos da placa PCI (suporte de baixo perfil e 3,3 V):[28]
Mini PCIO Mini PCI foi adicionado à versão 2.2 do PCI para uso em laptops e alguns roteadores;[carece de fontes] ele usa um barramento de 32 bits, 33 MHz com conexões energizadas (apenas 3,3 V; 5 V é limitado a 100 mA) e suporte para masterização de barramento e DMA. O tamanho padrão para placas Mini PCI é aproximadamente um quarto de suas contrapartes de tamanho normal. Não há acesso à placa de fora do gabinete, ao contrário das placas PCI de desktop com suportes carregando conectores. Isso limita os tipos de funções que uma placa Mini PCI pode executar. Muitos dispositivos Mini PCI foram desenvolvidos, como Wi-Fi, Fast Ethernet, Bluetooth, modems (frequentemente Winmodems), placas de som, aceleradores criptográficos, SCSI, IDE – ATA, controladores SATA e placas de combinação. As placas Mini PCI podem ser usadas com hardware equipado com PCI regular, usando conversores Mini PCI para PCI. O Mini PCI foi substituído pelo muito mais estreito PCI Express Mini Card. Detalhes técnicos do Mini PCIAs placas Mini PCI têm um consumo máximo de energia de 2 W, o que limita a funcionalidade que pode ser implementada neste fator de forma. Elas também são necessárias para suportar o sinal CLKRUN# PCI usado para iniciar e parar o clock PCI para fins de gerenciamento de energia. Existem três fatores de forma de placa: placas Tipo I, Tipo II e Tipo III. O conector de placa usado para cada tipo inclui: Tipo I e II usam um conector de empilhamento de 100 pinos, enquanto o Tipo III usa um conector de borda de 124 pinos, ou seja, o conector para Tipos I e II difere daquele para Tipo III, onde o conector está na borda de uma placa, como com um SO-DIMM. Os 24 pinos adicionais fornecem os sinais extras necessários para rotear I/O de volta através do conector do sistema (áudio, AC-Link, LAN, interface de linha telefônica). As placas Tipo II têm conectores montados RJ11 e RJ45. Esses placas devem estar localizados na borda do computador ou estação de acoplamento para que as portas RJ11 e RJ45 possam ser montadas para acesso externo.
Mini PCI é diferente de Micro PCI de 144 pinos.[29] Transações de barramento PCIO tráfego de barramento PCI consiste em uma série de transações de barramento PCI. Cada transação consiste em uma fase de endereço seguida por uma ou mais fases de dados. A direção das fases de dados pode ser do iniciador para o destino (transação de gravação) ou vice-versa (transação de leitura), mas todas as fases de dados devem estar na mesma direção. Qualquer uma das partes pode pausar ou interromper as fases de dados a qualquer momento. (Um exemplo comum é um dispositivo PCI de baixo desempenho que não suporta transações de burst e sempre interrompe uma transação após a primeira fase de dados.) Qualquer dispositivo PCI pode iniciar uma transação. Primeiro, ele deve solicitar permissão de um árbitro de barramento PCI na placa-mãe. O árbitro concede permissão a um dos dispositivos solicitantes. O iniciador inicia a fase de endereço transmitindo um endereço de 32 bits mais um código de comando de 4 bits e, em seguida, aguarda a resposta de um alvo. Todos os outros dispositivos examinam esse endereço e um deles responde alguns ciclos depois. O endereçamento de 64 bits é feito usando uma fase de endereço de dois estágios. O iniciador transmite os 32 bits de endereço baixos, acompanhados por um código de comando especial "dual address cycle". Dispositivos que não suportam endereçamento de 64 bits podem simplesmente não responder a esse código de comando. No próximo ciclo, o iniciador transmite os 32 bits de endereço altos, mais o código de comando real. A transação opera de forma idêntica a partir desse ponto. Para garantir a compatibilidade com dispositivos PCI de 32 bits, é proibido usar um ciclo de endereço duplo se não for necessário, ou seja, se os bits de endereço de ordem alta forem todos zero. Enquanto o barramento PCI transfere 32 bits por fase de dados, o iniciador transmite 4 sinais de habilitação de byte baixo ativo indicando quais bytes de 8 bits devem ser considerados significativos. Em particular, uma gravação deve afetar apenas os bytes habilitados no dispositivo PCI de destino. Eles são de pouca importância para leituras de memória, mas leituras de I/O podem ter efeitos colaterais. O padrão PCI permite explicitamente uma fase de dados sem bytes habilitados, que deve se comportar como um no-op. Espaços de endereço PCIO PCI tem três espaços de endereço: memória, endereço de I/O e configuração. Os endereços de memória têm 32 bits (opcionalmente 64 bits) de tamanho, suportam cache e podem ser transações em burst. Endereços de I/O são para compatibilidade com o espaço de endereço de porta de I/O da arquitetura Intel x86. Embora a especificação de barramento PCI permita transações de burst em qualquer espaço de endereço, a maioria dos dispositivos só oferece suporte para endereços de memória e não para I/O. Finalmente, o espaço de configuração PCI fornece acesso a 256 bytes de registradores de configuração especial por dispositivo PCI. Cada slot PCI obtém seu próprio intervalo de endereço de espaço de configuração. Os registradores são usados para configurar a memória dos dispositivos e intervalos de endereço de I/O aos quais eles devem responder dos iniciadores de transação. Quando um computador é ligado pela primeira vez, todos os dispositivos PCI respondem apenas aos seus acessos de espaço de configuração. O BIOS do computador verifica os dispositivos e atribui intervalos de endereço de Memória e I/O a eles. Se um endereço não for reivindicado por nenhum dispositivo, a fase de endereço do iniciador da transação expirará, fazendo com que o iniciador aborte a operação. No caso de leituras, é costume fornecer todos os uns para o valor de dados lidos (0xFFFFFFFF) neste caso. Portanto, os dispositivos PCI geralmente tentam evitar usar o valor todos os uns em registros de status importantes, para que tal erro possa ser facilmente detectado pelo software. Códigos de comando PCIHá 16 códigos de comando de 4 bits possíveis, e 12 deles são atribuídos. Com exceção do ciclo de endereço duplo exclusivo, o bit menos significativo do código de comando indica se as fases de dados a seguir são uma leitura (dados enviados do alvo para o iniciador) ou uma gravação (dados enviados de um iniciador para o alvo). Os alvos PCI devem examinar o código de comando, bem como o endereço, e não responder às fases de endereço que especificam um código de comando não suportado. Os comandos que se referem às linhas de cache dependem da configuração correta do registro de tamanho da linha de cache do espaço de configuração PCI; eles não podem ser usados até que isso seja feito.
Latência do barramento PCILogo após a promulgação da especificação PCI, foi descoberto que transações longas por alguns dispositivos, devido a confirmações lentas, rajadas longas de dados ou alguma combinação, poderiam causar estouro ou sub-explosão de buffer em outros dispositivos. Recomendações sobre o tempo de fases individuais na Revisão 2.0 foram tornadas obrigatórias na revisão 2.1:[31]:3
Além disso, a partir da revisão 2.1, todos os iniciadores capazes de estourar mais de duas fases de dados devem implementar um timer de latência programável. O timer começa a contar ciclos de clock quando uma transação começa (o iniciador afirma FRAME#). Se o timer tiver expirado e o árbitro tiver removido GNT#, então o iniciador deve encerrar a transação na próxima oportunidade legal. Esta é geralmente a próxima fase de dados, mas as transações Memory Write e Invalidate devem continuar até o fim da linha de cache. Transações atrasadasDispositivos incapazes de atender a essas restrições de tempo devem usar uma combinação de gravações postadas (para gravações de memória) e transações atrasadas (para outras gravações e todas as leituras). Em uma transação atrasada, o alvo registra a transação (incluindo os dados de gravação) internamente e aborta (afirma STOP# em vez de TRDY#) a primeira fase de dados. O iniciador deve tentar novamente exatamente a mesma transação mais tarde. Nesse ínterim, o alvo executa a transação internamente e aguarda a transação tentada novamente. Quando a transação tentada novamente é vista, o resultado armazenado em buffer é entregue. Um dispositivo pode ser alvo de outras transações enquanto conclui uma transação atrasada; ele deve lembrar o tipo de transação, endereço, seleção de bytes e (se for uma gravação) valor de dados, e concluir apenas a transação correta. Se o alvo tiver um limite no número de transações atrasadas que ele pode registrar internamente (alvos simples podem impor um limite de 1), ele forçará essas transações a tentar novamente sem registrá-las. Elas serão tratadas quando a transação atrasada atual for concluída. Se dois iniciadores tentarem a mesma transação, uma transação atrasada iniciada por um pode ter seu resultado entregue ao outro; isso é inofensivo. Um alvo abandona uma transação atrasada quando uma nova tentativa obtém sucesso em entregar o resultado armazenado em buffer, o barramento é reiniciado ou quando 2 15 =32768 ciclos de clock (aproximadamente 1 ms) decorrem sem que uma nova tentativa seja vista. O último nunca deve acontecer em operação normal, mas previne um deadlock de todo o barramento se um iniciador for reiniciado ou apresentar mau funcionamento. Pontes de barramento PCIO padrão PCI permite que múltiplos barramentos PCI independentes sejam conectados por pontes de barramento que encaminharão operações de um barramento para outro quando necessário. Embora o PCI tenda a não usar muitas pontes de barramento, os sistemas PCI Express usam muitas pontes PCI para PCI, geralmente chamadas de PCI Express Root Port; cada slot PCI Express parece ser um barramento separado, conectado por uma ponte aos outros. A ponte host PCI (geralmente northbridge em plataformas x86) interconecta entre CPU, memória principal e barramento PCI.[32] Escritos postadosGeralmente, quando uma ponte de barramento vê uma transação em um barramento que deve ser encaminhada para o outro, a transação original deve esperar até que a transação encaminhada seja concluída antes que um resultado esteja pronto. Uma exceção notável ocorre no caso de gravações de memória. Aqui, a ponte pode registrar os dados de gravação internamente (se houver espaço) e sinalizar a conclusão da gravação antes que a gravação encaminhada seja concluída. Ou, na verdade, antes que ela tenha começado. Essas gravações "enviadas, mas ainda não recebidas" são chamadas de "gravações postadas", por analogia com uma mensagem de correio postal. Embora ofereçam grande oportunidade para ganhos de desempenho, as regras que regem o que é permitido são um tanto intrincadas.[33] Combinando, fundindo e colapsandoO padrão PCI permite que pontes de barramento convertam múltiplas transações de barramento em uma transação maior sob certas situações. Isso pode melhorar a eficiência do barramento PCI. CombinandoTransações de gravação para endereços consecutivos podem ser combinadas em uma gravação em rajada mais longa, desde que a ordem dos acessos na rajada seja a mesma que a ordem das gravações originais. É permitido inserir fases de dados extras com todas as habilitações de bytes desligadas se as gravações forem quase consecutivas. MesclandoVárias gravações em porções disjuntas da mesma palavra podem ser mescladas em uma única gravação com habilitações de vários bytes afirmadas. Nesse caso, as gravações que foram apresentadas à ponte de barramento em uma ordem específica são mescladas para que ocorram ao mesmo tempo quando encaminhadas. ColapsoVárias gravações no mesmo byte ou bytes não podem ser combinadas, por exemplo, executando apenas a segunda gravação e pulando a primeira gravação que foi sobrescrita. Isso ocorre porque a especificação PCI permite que as gravações tenham efeitos colaterais. Ferramentas de desenvolvimentoAo desenvolver e/ou solucionar problemas do barramento PCI, o exame de sinais de hardware pode ser muito importante. Analisadores lógicos e analisadores de barramento são ferramentas que coletam, analisam e decodificam sinais para que os usuários visualizem de maneiras úteis. Ver também
Referências
Leitura adicional
Ligações externas
|