• Drano Rauteon

Hardware - PCI Express (PARTE 1)

Atualizado: Ago 1


Slot PCIe Express x16 (na cor laranja) e slot PCIe x1 (na cor branca)

Imagem 1


Este artigo é dedicado ao slot PCI Express, desenvolvido pela PCI-SIG no início deste século.

A pós muitos outros padrões de barramentos lentos e que ficaram defasados em pouco tempo, como o ISA (Industry Standard Architecture ou Arquitetura Padrão da Indústria) , EISA (Extended Industry Standard Architecture ou Arquitetura Padrão da Indústria Estendida), entre outros, finalmente a Intel lança o barramento PCI (Peripheral Component Interconnect ou Interconexão de Componentes Periféricos).

Logo depois várias outras fabricantes se uniram e formaram o grupo que é conhecido atualmente como PCI-SIG (PCI Special Interest Group, que significa Grupo de Interesse Especial PCI) para o desenvolvimento e aperfeiçoamento dos padrões de barramento. Com essa união, logo depois já foi criado 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.

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) mas, após alguns anos, quando os jogos de computador estavam começando a ficar mais bem trabalhados e populares, quando começaram a surgir interfaces de rede Ethernet de 1 Gbps e quando as outras peças evoluíram e ganharam mais desempenho, este barramento se mostrou lento e pouco proveitoso para instalação de "circuitos extras", e nesse período que foi lançado o padrão AGP (Accelerated Graphics Port - Porta Gráfica Acelerada), com clocks mais altos e slot completamente diferente do PCI e PCI-X.

Para saber mais sobre o barramento AGP, clique aqui! Para saber mais sobre o barramento PCI e PCI-X, clique aqui!

Com o tempo, o slot AGP se tornou ultrapassado também, então a PCI-SIG criou o famoso padrão PCI Express, chamado também de PCIe. A principal diferença entre o slot PCIe e os outros slots mencionados aqui é que, como foi explicado no artigo sobre pares diferenciais de dados, o slot PCIe não é um barramento, e sim uma conexão ponto-a-ponto feita para ligar apenas 2 dispositivos de forma serial, abandonando as várias trilhas paralelas que podiam interligar mais de 2 dispositivos.

Simbolo do padrão PCI Express

Imagem 2


O slot PCI Express é utilizado principalmente para conectar as famosas placas de vídeo off-board na placa-mãe do computador. Atualmente está sendo criado SSDs com interface PCIe x4 ou x8, placas de áudio, de rede (Ethernet ou Wi-fi), entre outros, que também aproveitam muito bem esta interface de comunicação.

Se você quer saber ainda mais, acesse este link e veja mais sobre a interface SATA Express, que é uma adaptação do PCI Express original!

O padrão PCIe trouxe o conceito de "lanes". Se você gosta de hardware, provavelmente já ouviu ou vai ouvir este termo um dia. Um lane é uma dupla de pares diferenciais, onde uma envia informações (TX) e a outra dupla recebe (RX). Ao juntar 16 lanes, por exemplo, temos o slot PCI Express x16, que dá um total de 64 trilhas dedicadas pra transmissão de dados.

Uma placa que possua slot PCI Express x1, significa que este possui apenas 1 lane (4 trilhas). O mesmo acontece com o slot PCIe x2, x4, x8, e x32. Pode ser utilizado o termo "bit", já que cada par diferencial pode receber ou enviar 1 pulso elétrico e seu sinal invertido por cada lane, portanto se você ouvir que o slot PCI Express x16 transmite 16 bits, está correto.

Além destas versões, existe uma mais incomum, lançada por volta de 2007, utilizada normalmente em notebooks para conectar placas Wi-Fi, 3G, LTE e outros componentes. Esta versão é chamada de Express Mini (ou MiniPCI Express). Veja a imagem de um dispositivo Express Mini abaixo:

Módulo LTE miniPCIe da marca Huawei

Imagem 3


Este slot foi desenvolvido para cumprir o papel do slot Mini PCI, que estava desatualizado na época. O slot Express Mini possui apenas 1 lane, portanto ele é considerado x1. Veja abaixo a comparação entre uma placa compatível com Mini PCI e uma Express Mini:

Imagem 4

CURIOSIDADE: Atualmente, com a mineração de criptomoedas, se tornou comum ligar placas de vídeo com interface PCIe x16 em slots PCIe x1. Para deixar as várias placas de vídeo alimentadas e bem fixadas, se utiliza uma extensão com cabo USB e placas adaptadoras. Isso se chama "PCIe over USB" e pode ser visto em detalhes CLICANDO AQUI (PDF).

As empresas da aliança PCI-SIG sempre estão revisando o projeto e estudando melhorias. Abaixo você vê a tabela com as versões e revisões do slot PCI Express já lançadas no mercado:

Tabela de versões, revisões e taxas de transferência.

Tabela 1


A cada pulso de clock é transmitido 1 dado (1 bit). No caso do slot PCIe x1 1.0, há apenas 1 lane transmitindo a 2,5 GHz (2,5 bilhões de pulsos por segundo), o que dá uma taxa de transferência teórica de 250 Mega Bytes por segundo (MB/s).

Para saber mais sobre clock, clique aqui!

Devido ao sistema de codificação dos dados, a taxa de transferência é diferente do normal. Você verá mais abaixo os sistemas de codificação de dados do PCIe. Para a revisão 1.0 e 2.0 era utilizada a codificação 8B/10B, onde cada conjunto de 8 bits é transformado em um pacote de 10 bits. Esses 2 bits extras não significam nada, são apenas utilizados para codificação, ocupando 20% da taxa de transferência.

Numa conexão PCIe x1 1.0 por exemplo, em vez de ser 312,5 MB/s de taxa de transferência, como é perdido 20% com os dados da codificação, ele é padronizado com 250MB/s. Já a revisão 3.0 e 4.0 utilizam a codificação 128B/130B e por este motivo foi possível dobrar a taxa de transferência de dados sem dobrar a frequência(GHz).

Para calcular a taxa de transferência de dados, e se você não entende muito bem sobre bits, Bytes e clock, leia os artigos sobre estes assuntos para saber mais. Eles já estão disponíveis no site e para acessa-los, clique aqui!

Os slots Express Mini utilizam as mesmas revisões do PCI Express comum. O padrão Express Mini prevê que a conexão PCI Express possa ser substituída pela interface USB em alguns dispositivos, facilitando assim o projeto do circuito. Mais abaixo você verá a pinagem do conector Express Mini e entenderá melhor onde entra a interface USB.


CURIOSIDADE: As dimensões das miniplacas PCI Express são 30 mm x 50,95 mm (largura x comprimento) para uma miniplaca completa. Há um conector de borda de52 pinos, consistindo em duas fileiras escalonadas em um passo de 0,8 mm. Cada linha tem oito contatos, uma lacuna equivalente a quatro contatos e, em seguida, mais 18 contatos. As placas têm espessura de 1,0 mm, excluindo os componentes. Um "Half Mini Card" (às vezes abreviado como HMC) também é especificado, tendo aproximadamente metade do comprimento físico, isto é, 26,8 mm.


CURIOSIDADE: A primeira placa de vídeo a utilizar o PCIe 3.0 foi a AMD Radeon HD 7970, lançada em janeiro de 2012.

PCI Express

Veja agora o vídeo abaixo com o diagrama e imagens do slot PCI Express, com toda a sua pinagem:

Vídeo disponível no canal Hardware Central no You Tube


Como você pode ver, do pino A1/B1 ao A11/B11 é especialmente para a alimentação elétrica e controle da placa conectada. Por padrão, o slot PCIe pode oferecer 75 Watts para a placa de expansão. A partir da divisória, todos os outros pinos são os pares de transmissão e recebimento de dados, linhas de identificação da placa conectada, linhas de sinal de sincronismo, linhas negativas e alguns pinos que não são conectados. O padrão PCIe x2 foi destacado no vídeo, mas ele é muito pouco utilizado. Perceba que para o slot x1, há um identificador (pino B17), para o PCIe x4 há outro identificador (B31) e assim por diante.


COMPATIBILIDADE

É importante ressaltar que, se você conectar uma placa PCIe x1 por exemplo, num slot x4, x8 ou x16, ela vai funcionar normalmente. Ao contrário também pode funcionar: por exemplo, se você conectar uma placa PCIe x16 num slot x4, esta placa irá funcionar normalmente, mas limitada pela taxa de transferência de dados do slot PCIe x4. Placas maiores que o slot podem funcionar em placas-mãe que possuem slots vazados, como pode-se ver abaixo:

Imagem 5


As placas e slots são totalmente compatíveis entre as revisões: uma placa-mãe com slot PCIe 1.0 ou 2.0 vai funcionar com uma placa expansível PCIe 3.0, só que esta conexão será limitada pela taxa de transferência das versões anteriores. Resumindo: você pode conectar qualquer placa PCIe, independente da revisão em qualquer placa-mãe que tenha slot PCIe de qualquer revisão, o único detalhe é a limitação da taxa de transferência. A versão 3.0 já inclui o sistema de codificação 128B/130B (padrão da versão) e também o 8B/10B das versões anteriores.

Para finalizar este assunto de compatibilidade, veja abaixo a tabela com os tamanhos (em milímetros) e a quantidade de pinos dos slots PCI Express x1 ao x16:

Tabela 2

PCIe NA PRÁTICA

Abaixo, separei um esquema elétrico de slot PCIe para entender melhor o que está escrito nesse texto e no vídeo linkado. O diagrama é da fabricante Gigabyte.

Esquema elétrico da GBT GA-M55S Rev.: 2.02

Esquema elétrico da GBT GA-M55S Rev.: 2.02

Agora, separei dois esquemas elétricos das saídas e entradas do controlador PCI Express no chipset da placa-mãe. Os diagramas escolhidos também são da fabricante Gigabyte. Observe:

Esquema elétrico da GBT GA-M59SLI Rev.: 1.01

Esquema elétrico da GBT GA-M59SLI Rev.: 1.01 (Controlador PCIe do chipset nVidia MCP55)

Esquema elétrico da GBT GA-M61PM Rev.: 1.00

Esquema elétrico da GBT GA-M61PM Rev.: 1.00 (Controlador PCIe do chipset nVidia MCP61)

Para que se entenda melhor, como foi dito, 1 lane possui dois pares de trilhas: um para enviar e outro para receber informações, portanto eles são chamados de TX (Transceiver) e RX (Receiver). Lembrando que há também o sinal diferencial (pares diferenciais ou pares de cancelamento), portanto temos as linhas denominadas TX "P" e TX "N", RX "P" e RX "N": o P significa que pela trilha passa uma tensão positiva e o "N" significa que pela trilha passa uma tensão negativa. Essas são características do padrão de sinalização LVDS, que você pode conhecer melhor CLICANDO AQUI!


OS PORÉNS DO CROSSFIRE E DO SLI

Há placas mãe que possuem, por exemplo, 2 slots PCIe do tamanho x16, mas se duas placas de vídeo forem conectadas, eles vão funcionar em modo x8. Você deve observar isso ao comprar uma placa com vários slots PCIe x16, pois as vezes, a placa-mãe possui suporte à tecnologia nVidia SLI ou AMD CrossFire, mas não há tantos lanes disponíveis no chipset, fazendo com que a fabricante distribua os disponíveis em dois ou mais slot's x16. Nestas placas pode haver chips chaveadores que ao ser detectado duas placas de vídeo, automaticamente distribuem 8 lanes para cada uma. Veja abaixo a imagem de duas placas com os CI's chaveadores:

CI's Chaveadores

Imagem 6


Na imagem acima, uma DFI LANPARTY e uma Asus A8N-SLI Premium com CIs chaveadores.

Selecionei um diagrama com os chips chaveadores para que se entenda melhor. 8 lanes foram ligados diretamente nos primeiro slot x16 e os outros 8 lanes são ligados aos CIs chaveadores. São necessários dois CIs para cada lane, pois como foi dito, em um lane há um par de trilhas para enviar (TX) e outro para receber (RX) dados.

Diagrama elétrico do circuito de CI's chaveadores


Existem técnicas mais baratas para distribuir os lanes entre os slots PCIe. Pode se utilizar conjuntos de jumpers entre os slots, ou o famoso cartão SLI Selector (que já é algo do passado) ou um cartão terminador (utilizado principalmente em placas-mãe com suporte ao CrossFire). Atualmente é comum apenas a ultilização dos CIs chaveadores.

Para ver mais sobre os jumpers, o Cartão Terminador, o SLI Selector e os CIs chaveadores, CLIQUE AQUI!

Mas qual o motivo das fabricantes não colocarem slots do tamanho x16 com conexão x16? Como foi dito acima, cada lane possui 4 trilhas, ou seja, um slot x16 possui 64 trilhas, e isso requer muito espaço na placa. 2 slots x16 requerem 128 trilhas.

Os controladores PCIe também não estão preparados. O chipset nVidia 650i SLI, por exemplo, suporta no máximo 18 lanes, sendo que 16 deles devem ser direcionados à um slot PCIe x16 ou dois slots PCIe x16 com conexão x8. Esse é o motivo pelo qual as fabricantes colocam slots PCIe com tamanho x16, mas que trabalham no modo x8.

Atualmente, CPUs como as da linha Intel Core i, tem em média 40 lanes, tornando possível a colocação de dois slots x16 com conexão x16. O chipset AMD 990FX, para CPUs da série FX, também suporta dois slots x16 com conexão x16, só que as placas que utilizam este chipset ou as placas que utilizam todos os lanes dos processadores mais modernos da Intel são bem mais caras.

A quantidade de slots PCIe x16 e x8 depende do chipset utilizado e da fabricante querer aproveitar a maioria dos lanes para implementar a tecnologia nVidia SLI ou AMD CrossFire.

Express Mini

Abaixo, você vê a imagem de um conector Express Mini (também chamamos de mini PCIe):

Conector Mini PCI Express

Imagem 7


Agora, a tabela de pinos do slot Express Mini:

Tabela 3


Significado dos pinos

Tabela 4


Quando um placa de rede de internet móvel é conectada, o chip da operadora se comunica com o sistema pelos pinos P8, P10, P12, P14 e P16 e o pino 42 (LED WWAN#) sinaliza a conexão com a internet. Os pinos P37, P39, P41, P43, P45, P47, P49 e P51 são reservados para a adição de outro lane PCIe. Os pinos SM Bus servem para a placa MiniPCIe enviar informações sobre ela à placa-mãe. Os pinos RefClk servem para sincronizar os controladores PCIe e o pino ClkREQ# requisita este sinal quando a placa é ativada.

Os pinos P42, P44 e P46 quando utilizados, informam a ausência ou não da conexão de internet através de um LED. A interface USB não pode ser utilizada junto da PCIe: quando uma placa MiniPCIe é projetada, o(s) engenheiro(s) decide(m) qual interface utilizar, já que as duas funcionam de forma completamente diferente uma da outra. A alimentação elétrica do slot é feita por linhas de 1,5 e 3,3 Volts.


CURIOSIDADE: Alguns notebooks (notavelmente o Asus Eee PC, o Apple MacBook Air e o Dell mini9 e mini10) usam uma variante do PCI Express Mini Card como um SSD. Esta variante usa os pinos reservados e vários não reservados para implementar a passagem de interface SATA e IDE, mantendo apenas USB, linhas de aterramento e, às vezes, o barramento PCIe x1 central intacto. Isso torna os drives flash e de estado sólido "miniPCIe" vendidos para netbooks amplamente incompatíveis com as verdadeiras implementações do PCI Express Mini.

Se você observou o diagrama da pinagem mostrada no vídeo acima, observou que há uns pinos chamados JTAG. Eles são uma interface de teste e programação de hardware presentes em vários dispositivos. JTAG significa "Joint Test Access Group" padronizada pela IEEE 1.149,1. O hardware é acessado através de cinco trilhas. Cada uma é explicada no vídeo, na parte da tabela com a pinagem. Será feito um artigo futuramente detalhando melhor o JTAG. No caso do slot PCIe, na maioria das placas-mãe esta interface não é conectada.

Os pinos SMBus são utilizados para monitoramento e transferências de informações relacionadas ao hardware. O barramento SMBus é derivado do I²C e utilizado apenas para comunicação com largura de banda estreita. O SMBus "Data" e "Clock" estão ligados ao BIOS e aos sistemas de controle da placa conectada. Futuramente será feito um artigo detalhando o funcionamento do BIOS. O SMBus é a interface que, neste caso, serve para mandar dados de identificação, como por exemplo reconhecimento dos circuitos, isto é, tipo de dispositivo, revisão de interface de comunicação, etc e também a interface de configuração, feita pelo driver do dispositivo (programa instalado no Sistema Operacional) que se comunica com o firmware(BIOS) da placa conectada pelo SM Bus;

O pino Power Good é para monitoramento de tensão. assim como as fontes de alimentação e as placas-mãe, a conexão PCIe também tem esta tecnologia para evitar danos relacionados com excessos de energia.

O sensor de Hot-plug serve para identificação da placa, já o identificador de Hot-plug, reconhece a "largura" da conexão. Perceba que ao final do slot x1 há um identificador, ao final do slot x4, x8 e x16 também. É assim que o sistema verifica se a placa conectada é x1, x4, x8 ou x16.

O par diferencial de clock faz a frequência necessária para sincronizar a transferência de dados entre dispositivos. No caso do PCIe revisão 1.0 é 2.5 GHz, na revisão 2.0 é 5 GHz e na versão 3.0 é 8 GHz. No Setup do BIOS de todas as placas mãe do mercado há uma opção, quase sempre nomeada com "PCI Express Frequency" e esta opção é sempre configurada em 100 MHz. Mas se o PCIe é sempre 2,5 GHz, 5 GHz ou 8 GHz, qual o motivo de no BIOS estar marcado 0,1 GHz? 100 MHz é o clock base para o Circuito PLL do controlador PCIe multiplicar.

No caso do PCIe 1.0, o multiplicador é de 25 vezes, já que 25 vezes 100 MHz é igual a 2,5 GHz. No PCIe 2.0 o multiplicador é de 50 vezes e no PCIe 3.0 é 80 vezes. Na revisão 4.0 o multiplicador é de 160 vezes.

Mas o que é PLL? Fique ligado que futuramente explicarei isso em um artigo! Leia os artigos sobre eletrônica para saber mais sobre frequência.

Os pinos Ground são os aterramentos entre dos pares diferenciais. Para cada polo positivo há um polo negativo. No padrão PCIe, para cada par diferencial há um par de aterramento.

Há o pino "ativar dispositivo". Quando a placa-mãe manda um sinal por esta trilha, a placa passa a receber energia, ser testada e funcionar.

As linhas de tensão 12 Volts e 3.3 Volts fornecem energia para a placa conectada à uma potência máxima de 75 Watts (no caso de slots x16), até 10 Watts para slots x1 e até 25 Watts para o x2, x4 e x8.


CURIOSIDADE: Todas as placas PCI Express podem consumir até 3 Amperes em +3,3 Volts (9,9 Watts). A quantidade de +12 V e a potência total que eles podem consumir depende do tipo de placa:

→ As placas x1 são limitadas a 0,5 A a +12 V (6 W) e 10 W combinados.

→ As placas x4 e maiores são limitadas a 2,1 A a +12 V (25 W) e 25 W combinadas.

→ Uma placa x1 de tamanho normal pode chegar aos limites de 25 W após a inicialização e configuração do software como um "dispositivo de alta potência".

→ Uma placa gráfica x16 de tamanho normal pode consumir até 5,5 A em +12 V (66 W) e 75 W combinados após a inicialização e configuração do software como um "dispositivo de alta potência".

Observe a imagem abaixo. É na parte circulada em amarelo que ficam os pinos de distribuição elétrica, ativação de dispositivo, sensor de hot-plug, pinos Power Good, interface SMBus e JTAG. Depois da "chave mecânica" que divide a primeira da segunda parte do slot, há o par diferencial de clock.

Slot PCIe: a parte elétrica e de controle

Imagem 8


ALIMENTAÇÃO EXTRA

Em placas de vídeo, a potência fornecida pelo slot normalmente não é o suficiente e muitas vezes nem é utilizada. Para estas placas se usa um conector de alimentação próprio que também é chamado de PCIe. Veja seu diagrama abaixo:

Conectores de alimentação PCIe 6 pinos e 8 pinos

Diagrama dos conectores de alimentação extras para PCI Express


Fontes de alimentação mais potentes já vem com este conector. Existem também adaptadores de cabo SATA (utilizados em HDs) para PCIe 8 pinos ou 6 pinos.

Os conectores de 6 pinos fornecem 75 Watts e os de 8 pinos fornecem 150 Watts. Observe que na versão de 8 pinos foi adicionado dois polos negativos extras, pois não era necessário mais tensão, e sim mais corrente elétrica para a placa PCIe. Placas PCIe podem ter um, dois ou mais conectores deste tipo, pois cada modelo pode exigir mais energia.


CURIOSIDADE: Algumas placas usam dois conectores de 8 pinos, mas isso ainda não havia sido padronizado em 2018, portanto essas placas não possuem o logotipo oficial PCI Express até a padronização. Esta configuração permite 375 W no total (1x75 W + 2x150 W). O conector PCI Express de 8 pinos não pode ser confundido com o conector EPS12V (que é usado principalmente para alimentar CPUs multi-core), afinal de contas são duas conexões de energia completamente diferentes em suas especificações. Os conectores de alimentação são variantes dos conectores da série Molex Mini-Fit Jr.


Os conectores Molex utilizados para alimentação extra no padrão PCI Express são dos seguintes modelos:

Tabela 5


OUTROS DETALHES

Outro detalhe é que, se você já observou uma placa-mãe, viu que logo acima do slot PCIe há alguns componentes SMD. Veja a imagem abaixo para entender melhor:

Placa-mãe Gigabyte GA-8i915G MF

Imagem 9 - Placa-mãe Gigabyte GA-8i915G MF

Os componentes circulados em amarelo são capacitores SMD, pequenas peças que fazem uma simples filtragem no sinal transmitido pelas trilhas TX dos lanes. Abaixo, você vê o diagrama de duas placas-mãe, também da marca Gigabyte, mostrando a posição e a numeração destes capacitores no circuito do slot PCIe. Observe:

Esquema elétrico da GBT GA-M59SLI S4 Ver.: 1.00

Esquema elétrico da GBT GA-M59SLI S4 Ver.: 1.00

Esquema elétrico da GBT GA-M61PM S2 Ver.: 1.00

Esquema elétrico da GBT GA-M61PM S2 Ver.: 1.00

Estes capacitores não possuem características padronizadas, isto é, o modelo de componente pode variar de placa para placa, apenas a capacitância que é sempre na faixa dos 0,1 microFarad.

Outro detalhe é que, se você viu bem os dois diagramas, apenas as trilhas de TX (Transceiver) possuem capacitores SMD, as trilhas RX (Receiver) não possuem capacitores! Mas qual o motivo?

A placa que será conectada ao slot virá com os capacitores SMD para RX. Pode analisar uma placa de vídeo ou qualquer outra placa compatível com PCIe. Todas elas vem com capacitores das linhas RX próximos dos contatos do conector!

Observe as imagens abaixo:

Placa de vídeo EVGA nVidia GT730

Imagem 10 - Placa de vídeo EVGA nVidia GT730 (interface PCIe x8)

Placa de vídeo GeForce 6200CT

Imagem 11 - Placa de vídeo GeForce 6200CT(interface PCIe x16)

Lembrando que, estes capacitores nas linhas TX e RX dos lanes são organizados desta forma em todas as placas-mãe e todos os circuitos que podem ser conectados ao PCIe, ou seja, placas de áudio, vídeo, rede, captura, entre várias outras. Capacitores das linhas RX também trabalham na mesma faixa de capacitância dos capacitores para as linhas TX.

Devido ao tamanho e a complexidade do assunto, resolvi dividir este artigo em dois capítulos. Você pode ver o segundo capítulo CLICANDO AQUI!


O que achou do artigo? Faltou alguma coisa? Ficou com alguma dúvida?

Mande suas dúvidas, sugestões e reclamações para hardwarecentrallr@gmail.com.

Não se esqueça de curtir, comentar e compartilhar! Ajude a divulgar o site!

REFERÊNCIAS e CRÉDITOS

Fotos, diagramas, texto e animação: Leonardo Ritter

Referências: Livro de Redes de computadores de Gabriel Torres (codificação 8B/10B); Guia do Hardware; Clube do Hardware; Pinouts.ru; Biblioteca de diagramas do Hardware Central; Wikipedia (somente artigos com fontes verificadas!); Trabalho de engenharia reversa feito pelo autor deste texto.

Última atualização: 11 de Dezembro de 2020.