Este artigo é o segundo capítulo da dissertação sobre a interface PCI.
Imagem 1 - Slots PCI (na cor branco) e o chip Ponte Sul (SiS 964) numa placa-mãe Abit SG-80
No centro dos holofotes por anos a fio, o barramento ISA (Industry Standard Architecture) surgiu e recebeu várias novas revisões de projeto até ficar insustentável, gerando gargalo nos computadores. O VLB, outra conexão paralela, o substituiu, mas atingindo seus limites tempos depois. Para saber mais sobre o barramento VLB, CLIQUE AQUI!
Nisso, a Intel traz ao mercado aquele que talvez seja o barramento mais famoso: o PCI (Peripheral Component Interconnect - Interconexão de Componentes Periféricos). Lançado em 22 de junho de 1992, durante o desenvolvimento do Pentium 3, o barramento PCI foi o padrão definitivo para o mercado. Devido ao sucesso, em poucos anos outras empresas se uniram a Intel e criaram o PCI-SIG (PCI Special Interest Group ou Grupo de Interesse Especial PCI).
Na sequência, veio o padrão PCI-X (Peripheral Component Interconnect eXtended - Interconexão de Componentes Periféricos Estendida), que era uma versão do slot PCI com clocks mais altos e maior largura do barramento, não muito aplicada em PCs domésticos.
O barramento PCI foi considerado um padrão da indústria, pois todos os outros eram projetados para uma plataforma específica, e quando esta plataforma ficava obsoleta outro padrão tinha que ser criado. Isso pode ser visto no ISA, que teve de receber várias adaptações para continuar operacional a cada nova geração de computadores. O controlador PCI foi adicionado ao chip Ponte Sul da placa-mãe e mesmo após o lançamento de outro processador, com socket diferente, clocks mais altos e novas tecnologias, o fabricante alterava outros sistemas no chipset mas nada se alterava no circuito do controlador PCI. Mais uma coisa nos PCs que finalmente se tornava modular.
O slot PCI e PCI-X, quando foram lançados, acompanharam o desempenho do restante do hardware que era desenvolvido na época. Eles eram utilizados para vários fins (instalação de placas de áudio, rede, captura de vídeo, placas de vídeo, etc). Após alguns anos, quando os jogos de computador estavam começando a ficar mais bem trabalhados e populares e quando os processadores e memórias ganharam mais desempenho, este barramento se mostrou lento e pouco proveitoso, principalmente para a instalação de placas gráficas.
Mesmo assim, o PCI serviu de base para a PCI-SIG trazer ao mercado aquele que ficou exclusivo para placas de vídeo por uns bons anos: o AGP (Accelerated Graphics Port). Há um conteúdo exclusivo sobre ele aqui no blog: "Hardware: O Barramento AGP".
Por fim, o PCI-SIG trouxe ao mundo o PCI Express - completamente diferente do PCI - e utilizado até os dias atuais. Existem três grandes publicações sobre o PCIe aqui no blog:
Para acessar o Capítulo 1, CLIQUE AQUI!
Para acessar o Capítulo 2, CLIQUE AQUI!
Para acessar o Capítulo 3, CLIQUE AQUI!
Este texto é dedicado a dissertar sobre a pinagem dos conectores mais comuns que implementam o barramento PCI, bem como um resumo do funcionamento do controlador.
PCI e PCI-X
Abaixo, você vê a pinagem do slot PCI e PCI-X:
Tabela 1 - Pinagem dos Slot PCI e PCI-X
CURIOSIDADE: Os pinos B2, B4, A1, A3 e A4 são da interface de testes JTAG e sua implementação é opcional. O TDO (Saída dos dados de teste) é encadeado ao TDI (Entrada dos dados de teste) do slot seguinte. Placas-mãe sem suporte a JTAG devem conectar TDI a TDO para não quebrar a cadeia.
Agora, note a organização dos pinos do slot no lado "B" da PCB:
Imagem 2 - O pino marcado como "Pino 1" se refere ao pino "A1" do diagrama mostrado acima.
Agora, o slot PCI no lado "A" da PCB:
Imagem 3 - Slot PCI
Selecionei três esquemas elétricos de placa-mãe com o circuito do slot PCI e as saídas e entradas do controlador PCI no chipset Ponte Sul. As placas selecionadas são da marca Gigabyte. Observe a imagem abaixo:
Diagrama 1 - Esquema elétrico dos slots PCI da placa-mãe GBT GA-M55S S3 Rev.: 2.02
Na sequência, as saídas do controlador PCI de três modelos de chipset:
Diagrama 2 - Esquema elétrico da placa-mãe GBT GA-M59SLI S4 Rev.: 1.00 (Controlador PCI do chipset nVidia MCP55).
Diagrama 3 - Esquema elétrico da placa-mãe GBT GA-M55S S3 Rev.: 2.02 (Controlador PCI do chipset nVidia MCP55).
Diagrama 4 - Esquema elétrico da placa-mãe GBT GA-M55S S3 Rev.: 2.02 (Controlador PCI do chipset nVidia MCP61).
CURIOSIDADE: Perceba que junto do controlador PCI há o controlador LPC, responsável por fazer a comunicação da Ponte Sul com o Super I/O e em algumas placas-mãe se comunicar também com o chip de memória ROM Flash e placa TPM. Para saber mais sobre o Super I/O e suas interfaces, comece CLICANDO AQUI!
OBSERVAÇÃO: Todos os esquemas adicionados a este artigo são válidos para outros circuitos PCI de outras placas-mãe, pois como foi dito o barramento PCI é um padrão.
Com base na Imagem 7 (retorne ao Capítulo 1 sobre o barramento PCI) e na Tabela 1, perceba que a posição da chave muda para as placas PCI que operam com 3,3 Volts e para as placas que operam com 5 Volts. É mais comum de se encontrar as chamadas "placas universais", que encaixam em qualquer slot, independente da posição da chave. Já os slots PCI de 32 bits (os mais comuns) são geralmente encontrados na versão que suporta placas de 5 Volts, como é possível notar no Diagrama 1.
Mini PCI
Agora, vamos focar nas características de variações do slot PCI que não foram muito populares no mercado. Veja o diagrama do slot MiniPCI de 100 Pinos (tipo I e II):
Tabela 2 - Pinagem do slot MiniPCI de 100 pinos
Abaixo, o conector MiniPCI de 124 Pinos (tipo III):
Tabela 3 - Pinagem do slot MiniPCI de 124 pinos
Lembre-se da posição dos pinos:
Imagem 4 - Conector Mini PCI de 124 pinos
OBSERVAÇÃO: Note a existência pinos 8PMJ (8 Position Modular Jack) acompanhado de dois LEDs. Pois bem, placas de rede Ethernet no formato Mini PCI (tipo III) possuem tais linhas para ligação de uma tomada de rede na lateral do notebook.
OBSERVAÇÃO: Note que o Mini PCI possui funcionalidades relacionadas com linha telefônica. O tipo III, em especial, traz até as linhas "TIP" e "RING", utilizadas em linhas telefônicas antigas (conector RJ-11). Os termos "TIP" e "RING" se originaram nos primórdios da telefonia, quando as operadoras usavam plugues para conectar as chamadas dos clientes.
PCMCIA CardBus
Sua pinagem é exposta na tabela:
Tabela 4 - Note a grande semelhança com os outros slots...
DESCRIÇÃO DOS PINOS
Agora, a descrição dos pinos de todos os slots detalhados neste artigo.
OBSERVAÇÃO: O termo "Iniciador" se refere ao dispositivo PCI que quer transmitir dados. O termo "Alvo" se refere ao dispositivo que vai receber os dados, isto é, o receptor.
Alimentação Elétrica
→ -12 Volts / + 12 Volts: Alimentação elétrica com tensão negativa e positiva de 12 Volts;
→ + 5 Volts / 5V: Alimentação elétrica com tensão positiva de 5 Volts;
→ + 3,3 Volts / 3,3V / 3,3 VAUX: Alimentação elétrica com tensão positiva de 3,3 Volts;
→ + 5 Volts ou + 3,3 Volts: Alimentação elétrica com tensão selecionável de + 5 Volts ou +3,3 Volts;
→ GND / Polo negativo / TERRA: Linhas onde circulam corrente elétrica em direção ao polo positivo. Podem ser utilizadas como proteção contra interferência eletromagnética;
CURIOSIDADE: Em alguns diagramas o pino B49 do slot PCI / PCI-X pode ser referido como "M66EN". Ele é um polo negativo adicional em barramentos PCI de 5 Volts encontrados na maioria das placas-mãe de PC. Placas-filhas e placas-mãe que não suportam operação de 66 MHz também aterram este pino. Se todos os participantes suportarem operação de 66 MHz, um resistor pull-up na placa-mãe aumenta este sinal e a operação em maior frequência é habilitada. O pino ainda está conectado ao negativo por meio de capacitores de acoplamento em cada placa-filha para preservar sua função de blindagem contra ruídos;
CURIOSIDADE: Em alguns diagramas o pino B38 do slot PCI-X pode ser referido como "PCIXCAP". Ele é um polo negativo adicional em barramentos e placas PCI. Se todas as placas-filhas e a placa-mãe suportarem o protocolo PCI-X, um resistor pull-up na placa-mãe aumentará este sinal e a operação PCI-X será habilitada. O pino ainda está conectado ao negativo por meio de capacitores de acoplamento em cada placa-filha para preservar sua função de blindagem contra ruídos.
→ #PRSNT[1:2]: Estes dois sinais estão presentes nos slots PCI com a finalidade de indicar a tensão de operação da placa conectada no slot (5V ou 3,3V). Estes sinais estarão com resistores pull up. Caso nenhuma placa esteja conectada na placa-mãe, o sistema interpreta a não presença da mesma;
CURIOSIDADE: Pelo menos um dos #PRSNT deve ser aterrado pela placa. A combinação escolhida indica os requisitos totais de energia da placa (25 W, 15 W ou 7,5 W).
→ CD1# e CD2#: Exclusivo do PCMCIA CardBus. É necessário a detecção de um cartão inserido, obviamente. Estas duas linhas são conectados internamente ao GND no cartão. Quando um PC Card é inserido em um soquete, CD1 e CD2 são puxados para baixo;
→ VCC: Utilizado na nomenclatura dos pinos do PCMCIA CardBus para definir as linhas que podem alimentar o cartão com 5 ou 12 Volts, de acordo com a tensão de operação que será detectada pela placa-mãe;
→ VPP1 e VPP2: Exclusivo do PCMCIA CardBus. É uma entrada que oferece 3,3 Volts, 5 Volts, 12 Volts ou alta impedância (High-Z) ao cartão;
→ VS1# e VS2#: Exclusivo do PCMCIA CardBus. São linhas que, quando usadas em conjunto, determinam a tensão de operação do módulo inserido no conector PCMCIA;
CURIOSIDADE: VPP e VCC são fornecidos por um switch de força capaz de, após a detecção, fornecer a tensão requerida ao módulo. Um exemplo de chip capaz de fazer isto é o Texas Instruments TPS2211A. O diagrama de implementação pode ser visto abaixo:
Diagrama 4 - Controlador PCMCIA para 16 e 32 bits "PCI1510" com um switch de força "TPS2211A"
→ NC / Reservado / RESERVADO: Pinos não utilizados, não conectados;
→ BVD1 / STSCHG#: Exclusivo do PCMCIA PC Card (não aplicado ao CardBus);
→ BVD2 / SPKR#: Exclusivo do PCMCIA PC Card (não aplicado ao CardBus);
OBSERVAÇÃO: Para saber mais sobre o PC Card (que implementa um barramento ISA de 16 bits), CLIQUE AQUI!
Sinais Gerais
→ Clock / CLK: Sinal de sincronismo. PCI, MiniPCI, CompactPCI (33MHz), PCI-X e CompactPCI (66 MHz) e PCI-X (133 MHz). Este sinal sincroniza todas as transações na borda de subida do clock. O clock pode mudar em qualquer momento dependendo do dispositivo ou até parar se o dispositivo PCI não estiver sendo utilizado. É uma estratégia de economia de energia;
→ Reset / RST #: Força todos os sinais e registradores dos dispositivos no barramento a irem a seus estados iniciais;
→ CLKRUN #: Aplicado para solicitar um aumento na frequência de CLK e pelo controlador para indicar que a frequência CLK será diminuída, fazendo parte do sistema de gerenciamento de energia (diminuir consumo quando ocioso).
Linhas de Arbitragem
→ Requisição / REQ #: Requisição de uso do barramento PCI. Por esta linha é afirmado a solicitação de acesso ao barramento PCI como um iniciador.
→ Reconhecimento de uso / GNT#: Concessão de uso do barramento feita pela placa-mãe. O GNT é acionado pelo árbitro do barramento para conceder acesso ao meio a um controlador escravo após a conclusão de uma transação de dados.
OBSERVAÇÃO: Cada slot tem sua própria saída REQ# e entrada GNT# do árbitro (mestre de barramento) da placa-mãe.
Sinais de Erro de Paridade
→ Erro do sistema / SERR #: Erro de Sistema - Sinal de saída em coletor aberto. Sinal usado para acusar erro de paridade dos sinais AD[X] e C/BE[X]# na fase de endereço, ou na fase de dados de uma transação especial ou em qualquer transação de sistema. Se existir um erro o mesmo é acionado dois clock após o AD[X] e C/BE[X]# válidos;
→ Erro de paridade / PERR #: Erro no cálculo de paridade, sinal especial de três estados. O dispositivo ou o controlador PCI, ao receber este sinal, deve reenviar os dados com o cálculo de paridade refeito. Sinal usado para acusar erro de paridade nos sinais AD[X] e C/BE[X]# nas fases de dados, com exceção da transação especial. Este sinal funciona como entrada e saída em dispositivo que está transmitindo e somente de saída num dispositivo PCI que receberá a informação. Quando existir algum erro de paridade na fase de dados, o mesmo sinalizará com dois pulsos elétricos após a fase completa de dados.
Sinais de Interrupções
→ Interrupção A / Interrupção B / Interrupção C / Interrupção D: Interrupções do sistema. Sinais de saídas em coletor aberto – Os dispositivos acionam estas linhas quando os mesmos requerem atenção dos drivers via iniciador. Estes sinais não são sincronizados com o clock do barramento. Quando os mesmos são acionados, eles permanecem até que os drivers atendam aos pedidos de interrupções. O Mini PCI possui apenas a interrupção A e B. O PCMCIA CardBus possui apenas uma linha "INT#".
Eles são conectados a todos os slots em ordens diferentes. (Por exemplo, INTA# em um slot é INTB# no próximo e INTC# no seguinte.).
Sinais de Controle de Transferência de Dados
→ Frame de dados / QUADRO, ARMAÇÃO #: Sinaliza o envio de um quadro de dados válidos para um dispositivo PCI pelas linhas AD[X]. Na ativação deste sinal o iniciador indica o inicio de uma transação e permanece acionado na medida que o mesmo requer mais transferências de dados. A sua desativação ocorrerá quando o iniciador estiver pronto a realizar a última fase de dados ou quando a transação for finalizada por algum motivo. É análogo a uma linha "STROBE";
→ Pare / RARE # / Stop #: Ao acionar este sinal o alvo solicita o término precoce da transação;
→ Seleção de dispositivo / DEVSEL #: Ao acionar este sinal, o dispositivo informa o alvo da transação. Após 4 clocks, se nenhum alvo responder, a transação será abortada pelo iniciador;
→ Inicialização do dispositivo selecionado / IDSEL #: Sinal de entrada. Pela ativação desse sinal, o iniciador solicita uma transação de escrita ou leitura sobre os registradores de configuração do dispositivo. Cada slot possui sua própria linha IDSEL, geralmente conectada a uma linha AD(X) específica;
→ Alvo pronto / Receptor pronto / TRDY: Significa "Target Ready". Receptor de dados pronto – Sinal especial de três estados. O alvo aciona este sinal indicando que está pronto para fase de dados, ou seja, na transação de escrita o alvo está pronto para ler os dados do transmissor e para transação de leitura o dados estão prontos no barramento para o iniciador;
→ Iniciador pronto / IRDY: Sinal de entrada. O iniciador aciona este sinal indicando que está pronto para fase de dados, isto é, na transação de escrita o barramento contém dados válidos para o alvo e para transação de leitura o iniciador está pronto para ler os dados do alvo. Este sinal trabalha em conjunto com o sinal #TRDY, e quando um dos dois estiverem desativados, indicará que existe um estado de espera na transação, e quando ambos forem ativados juntos, indicará que a fase atual foi completa e houve transferência de dados entre iniciador e alvo.
→ Snoop: Nas linhas A40 e A41 de um slot PCI (Tabela 3) há duas estranhas linhas: “Snoop feito” e “Snoop Backoff”, respectivamente. A palavra “Snoop” em tradução literal significa “bisbilhotar” e era uma função utilizada por “placas de função fixa”, principalmente as velhas placas de captura de TV, decodificadores MPEG e outras placas-filha que funcionavam exclusivamente com gráficos e que não contemplavam uma paleta de cores RGB, sendo necessário “espiar” a placa de vídeo para conseguir imita-la.
Para que tal sistema fosse habilitado, placas-mãe antigas possuíam uma função no Setup do BIOS conhecida como “PCI/VGA Palette Snoop”. Os pinos A40 e A41 do slot PCI servem justamente para o trafego de comandos do “modo Snoop”. Quando esse recurso está ativado, a placa gráfica não responderá às gravações do framebuffer, encaminhando-as através de barramento de dados para a placa de exibição de função fixa, que irá então “bisbilhotar” as informações da paleta e gerar as cores apropriadas.
Quando este recurso estiver desabilitado, a placa gráfica exibirá todas as gravações de framebuffer. É recomendável a desativação de tal função se nenhuma placa de exibição de função fixa for utilizada, caso contrário, as cores exibidas podem não ser precisas e o monitor ficará em branco quando cessar o uso da placa sem paleta de cores.
Atualmente, este recurso não é mais necessário e os BIOS nem trazem mais tal opção de configuração. De qualquer forma, foi algo muito pouco utilizado e as linhas A40 e A41 são conectadas no barramento SMBus, o mesmo que se comunica com a EEPROM do(s) módulo(s) de RAM instalado(s) e com a placa de vídeo, por exemplo.
CURIOSIDADE: Para saber mais sobre o funcionamento e o amplo uso do barramento SMBus, CLIQUE AQUI!
Linhas de Dados e Endereços
→ Endereço / Dados (X) ou AD[X]: Linhas para transferência de endereço e dados. São 32 linhas para os slots PCI e MiniPCI e 64 para os slots PCI-X e CompactPCI;
→ Paridade / PAR: Sinais de paridade. Método para evitar erros nas transmissões de dados. Carrega o valor do cálculo de paridade dos sinais AD[X] e C/BE[X]#. Este é transmitido no sentido da transação. No cálculo não se leva em consideração o tipo de transação, nem quais bytes válidos em AD[31:0] por C/BE[X]#, ou seja, todos entram no cálculo em quaisquer circunstâncias. O sinal PAR é válido nos seguintes casos: 1 clock após a fase de endereço, 1 clock após a ativação do sinal #IRDY na transação de escrita (durante a fase de dados), 1 clock após a ativação do sinal #TRDY na transação de leitura (durante a fase de dados). E permanece válido por 1 clock após da fase completa;
→ Comando/Byte Ativado (X) ou C/BE[X]#: Linhas de transferências de comandos relacionados à leituras e escritas de I/O e memória pelas linhas AD[X], além de, outros comandos de controle. Na sequência, você confere a tabela de códigos que podem ser enviados pelas linhas "C/BE[X]#":
Tabela 5 - Comandos
Agora, a explicação de cada comando:
----> Interromper reconhecimento (0000): O Controlador de Interrupção reconhece e reage automaticamente ao comando "INTA #" (interrupção de reconhecimento). Na fase de dados, ele transfere o vetor de interrupção para as linhas do AD[X];
----> Ciclo especial (0001): São 4 códigos enviados pelas linhas AD[X] quando o 'Ciclo especial' é enviado pelas linhas "C/BEx". Veja-os abaixo:
Tabela 6 - Códigos
----> I / O Leitura (0010) e I / O Escrita (0011): Operação de leitura ou gravação do dispositivo de Entrada / Saída. As linhas AD[X] contêm um endereço de bytes (sendo que "AD [0]" e "AD [1]" devem ser decodificados). As portas 'PCI I / O' podem ter 8 ou 16 bits, mas o barramento PCI permite 32 bits de espaço de endereço. O espaço de configuração PCI também pode ser acessado pelas portas de I / O 0x0CF8 (Address) e 0x0CFC (Data). A porta de endereço deve ser acessada primeiro;
OBSERVAÇÃO: Em máquinas compatíveis com IBM, a CPU Intel é limitada a 16 bits de espaço de I / O, e, em alguns casos, é ainda mais limitada por placas ISA que também podem ser instaladas na máquina (muitas placas ISA decodificam apenas os 10 bits inferiores de espaço de endereço, desta forma, observar todo o espaço de I / O de 16 bits). Esse limite pressupõe que a máquina suporta slots ISA ou eISA além dos slots PCI.
----> Leitura de memória (0110) e Escrita de memória (0111): Significa uma leitura ou gravação no espaço de memória do sistema. Neste caso, as linhas "AD [0]" e "AD [1]" não precisam ser decodificados. Todas as linhas AD[X] contêm um endereço de palavra dupla. As linhas de ativação de bytes (C/BEx) indicam quais bytes são válidos;
----> Leitura de Configuração (1010) e Escrita de Configuração (1011): Estes códigos são para leitura ou escrita no espaço de configuração do dispositivo PCI, que tem 256 bytes de comprimento. É acessado em unidades de palavra dupla.
->> "AD [0]" e "AD [1]" contêm o valor 0;
->> "AD [2]" ao "AD [7]" contêm o endereço de palavra dupla;
->> "AD [8]" ao "AD [10]" são usados para selecionar a unidade endereçada a unidade de falha;
As demais linhas "AD [X]"não são usadas.
Veja a seguinte imagem, com parte do sistema de configuração:
Imagem 5
----> Leitura de Memória Múltipla (1100): Esta é uma extensão do ciclo de barramento de leitura de memória. Ele é usado para ler grandes blocos de memória sem armazenamento em cache, o que é excelente para longos acessos de memória sequencial;
----> Ciclo de Endereços Duplos (1101): Dois ciclos de endereço são necessários quando um endereço de 64 bits é usado, mas existe apenas um endereço físico de 32 bits. A parte menos significativa do endereço é colocada primeiro nas linhas AD, seguidas pelos 32 bits mais significativos. O segundo ciclo de endereço também contém o comando para o tipo de transferência (I / O, Read / Write, etc).
OBS.: O barramento PCI suporta um espaço de endereço de I / O de 64 bits, embora isso não esteja disponível em muitos PCs baseados em Intel devido a limitações da CPU;
----> Linha de leitura de memória (1110): Este ciclo é usado para ler mais de dois blocos de dados de 32 bits, normalmente até o final de uma linha de cache. É mais eficiente que as rajadas de leitura de memória normal para uma longa série de acessos de memória sequencial;
----> Gravação de Memória e Invalidação (1111): Isso indica que um mínimo de uma linha de cache deve ser transferido. Isso permite que a memória principal seja atualizada, economizando um ciclo de write-back do cache.
OBSERVAÇÃO: O restante dos pinos não explicados dos slots MiniPCI são para aplicações específicas de áudio com codecs AC'97, além de outros fins que fogem do escopo deste artigo.
CURIOSIDADE: Para saber mais detalhes sobre a interface AC'97, CLIQUE AQUI!
PRINCIPAIS LINHAS E DIAGRAMA DE TIMINGs
Abaixo, o diagrama com as principais linhas do barramento PCI:
Diagrama 5
O barramento AGP utiliza todos estes sinais obrigatórios, além de algumas linhas extras para funcionar.
CLIQUE AQUI e conheça também a evolução do barramento PCI: O AGP. É notável que o barramento AGP é muito semelhante.
Veja o gráfico de timing simulando uma transferência de dados no barramento PCI (também válido para o barramento AGP):
Gráfico 1 - Timings
Quando se incluem 'Wait States' (Estados de Espera) na transmissão de dados, eles são inseridos nas linhas "IRDY" e "TRDY". Os 'Wait States' tem o objetivo de, digamos, atrasar a transferência dos dados durante um determinado período de tempo para não sobrecarregar o sistema em alguns momentos.
Veja um diagrama de transmissão de dados utilizando 'Wait States':
Gráfico 2 - Timings
Como você pode ver nos dois diagramas acima, há uma representação simbólica de apenas uma linha "C/BE[X]" com 1 bit do comando, sendo que no barramento PCI de 32 bits há 4 linhas "C/BE[X]" para transferir os 4 bits do comando.
CURIOSIDADE: A placa-mãe PC Chips A31G foi projetada com um "armengue" no barramento PCI para suportar também um slot AGP. A ideia não foi muito boa, apesar dos dois barramentos serem muito parecidos. Você pode conferir detalhes CLICANDO AQUI!
Diagrama 6 - O controladro PCI
Na figura 1 você vê o diagrama de blocos do controlador PCI e na figura 2, os sinais PCI com tabela de descrição de pinos juntamente com a direção que os dados vão em cada linha (a letra "Z" significa que a linha possui alta impedância). Abaixo você vê a descrição dos circuitos internos do controlador PCI:
→ Address Decode: Este bloco recebe os dados de controle de transações do barramento PCI e decodifica esses dados para determinar se a transação foi direcionada ao este dispositivo PCI ou não. Este bloco instrui a máquina do Estado Escravo a aceitar ou ignorar as transações de dados conforme elas são apresentadas no barramento PCI;
→ Slave State Machine: Este bloco gera e monitora todos os sinais PCI necessários para aceitar transações no barramento PCI. Todas as funções de gerenciamento de protocolos PCI escravos são divididas entre o decodificador de endereço e os blocos de Slave State Machine;
→ Slave Back End Interface: Este bloco aceita transações da Slave State Machine e transmite essas transações para o domínio do outro circuito. Este bloco executa a dissociação assíncrona entre o domínio do PCI e o domínio de outro circuito que se comunica pelo barramento PCI como um escravo. Também implementa o controle de tradução de endereços, registra e executa a tradução de endereços para transações escravas;
→ Master Back End Interface: Este bloco aceita transações do barramento PCI a partir da interface de back-end e passa essas transações para o Master State Machine. Este bloco também executa a dissociação assíncrona entre o domínio do outro circuito e o domínio do circuito PCI para transações principais. Este bloco implementa os registros de controle de tradução de endereço mestre e também executa a tradução de endereços para transações principais;
→ Master State Machine: Este bloco gera e monitora todos os sinais PCI necessários para iniciar transações no barramento. A maioria das funções de gerenciamento de protocolos mestre PCI são implementadas neste bloco. Este bloco responde às solicitações de transferência que são apresentadas a partir da interface Master Back End Interface;
→ Output Mux.: Este circuito multiplexa o endereço Mestre, os dados de gravação Mestre, os dados de leitura da configuração do escravo (que receberá os dados) que a memória escrava lê nos pinos AD em momentos específicos. Este bloco é controlado por vários dos outros blocos no controlador PCI;
→ Configuration Registers: Este bloco implementa os registros de configuração do barramento PCI necessários e alguns dos registros do Back-end Interface Master e Slave. Esses registros controlam os modos e opções (a configuração geral do barramento) PCI e fornecem informações vitais para o host PCI (dispositivo conectado ao barramento);
→ Error Handler: Este bloco monitora as condições de erro que podem ocorrer no barramento PCI, isto é, erros de paridade e erros do sistema;
→ Back End Registers Interface: Este bloco implementa a função de ponte assíncrona que permite que o circuito conectado ao controlador PCI acesse os registros de configuração de PCI, os registros de tradução de endereço Mestre e Escravo e outros controles e registros do controlador PCI. Este bloco também implementa alguns registradores de controle / status PCI que residem no domínio do circuito conectado ao Back-end Interface (circuito conectado ao controlador PCI).
OBSERVAÇÃO: Texto traduzido de uma documentação técnica da Texas Instruments sobre o barramento PCI. O PDF pode ser acessado aqui:
Uma explicação simples para resumir todos estes tópicos: O Master Back-end Interface pega os dados vindos do circuito conectado e manda eles para o receptor juntamente com o endereço dele e informações do emissor através do Output Multiplexer.
Para receber dados, o Address Decode verifica se o endereço dos dados corresponde ao que lhe foi dado e se sim, ele repassa a informação para o Slave Back-end Interface que transfere-os para o circuito conectado. As configurações de registro e interface de registro de back-end servem para manter as configurações do barramento PCI e comunica-las ao circuito conectado.
Master State Machine e Slave State Machine cuidam de endereços do barramento e comandos para gravação e leitura na memória principal (memória RAM) através do circuito Bus Mastering Engine.
A CURIOSIDADE GRITA!
A grande maioria dos chips que encontramos em nosso dia-a-dia, circuitos que acompanham as televisões, celulares, etc., são todos feitos pra uma aplicação específica (ASIC), isto é, com as suas funcionalidades todas definidas no ato de fabricação. Em 1985, através da Xilinx Inc. surgiu uma categoria nova de hardware reconfigurável conhecida como FPGA, o qual têm as suas funcionalidades definidas exclusivamente pelos projetistas de hardware e não pelos fabricantes de ciruitos integrados. Posteriormente, uma variação surgiu, conhecida como CPLD. Entenderemos melhor na sequência do texto.
Pois bem, recentemente me deparei com um Roteador corporativo da DrayTech, modelo Vigor 2920Vn, um equipamento de banda larga com firewall para conexão com xDSL/cabo/VDSL2/Ethernet FTTx. Enfim, se trata de um equipamento um tanto defasado, porém, que possui um hardware peculiar...
Imagem 6 - Perceba a placa MiniPCI com três cabos para as antenas
Na sua placa-mãe, avistei um CPLD Xilinx XC9572XL fazendo a interface entre o chip principal e um barramento PCI. Neste barramento, com espaço para dois slots MiniPCI de 124 pinos, havia apenas um soldado na PCB e nele instalado uma placa Wi-Fi com controlador RaLink RT2860T e três antenas.
Imagem 7 - Os contatos para um segundo slot MiniPCI com o FPGA ao seu lado
O interessante é usar um chip CPLD para tal aplicação. O datasheet do Xilinx XC9572XL pode ser acessado aqui:
A sigla CPLD significa "Complex Programmable Logic Device" (algo como "Dispositivo Lógico de Programação Complexa"). A diferença para os FPGAs está nos custos de aplicação e capacidades, tornando-os adequados para tipos de aplicações muito diferentes. Os FPGAs oferecem maior densidade lógica, mais flexibilidade, recursos avançados e desempenho superior. Os CPLDs trocam capacidade por uma arquitetura mais simples, menor espaço ocupado e menor custo.
De qualquer maneira, tanto um Field Programmable Gate Array (em português "Arranjo de Porta Programável em Campo"), quanto um CPLD são circuitos integrados criados para serem configurados por um projetista durante o design do circuito (de onde advém o "programável em campo" da sigla FPGA). Isso significa que este CPLD Xilinx foi programado para operar como uma interface PCI de 32 bits, simulando em seu interior todo o esquema mostrado no Diagrama 6.
Este foi o segundo capítulo do artigo sobre antigas tecnologias que fizeram sucesso e duraram anos no mercado. A bola da vez é o PCI Express, que já está na versão 6.0 e a 7.0 com previsão pra ser lançada em 2025. De qualquer forma sempre é bom estudar o princípio para entender o meio e o final!
Ficou com dúvidas? Achou que faltou algo? Mande suas palavras para hardwarecentrallr@gmail.com. Gostou do artigo? curta, compartilhe e comente!
CRÉDITOS e FONTES
Texto, imagens, tabelas e diagramas: Leonardo Ritter
Fontes: Banco de esquemas elétricos do HC; Clube do Hardware; InfoWester; Hardware.com; Texas Instruments; Universidade Ferderal de Santa Catarina; Engenharia reversa praticada pelo autor do artigo; Wikipedia (somente artigos com fontes verificadas!)
Última atualização: 18 de Fevereiro de 2024.
Comentarios