Conheça a tecnologia serial de alta velocidade

Visão geral

A comunicação serial de alta velocidade é uma tecnologia em expansão, desenvolvida para oferecer maiores taxas de comunicações de dados em menor área ocupada. A seguir, apresentamos os conceitos fundamentais dos enlaces de comunicação serial de alta velocidade.

 

Conteúdo

Por que precisamos da comunicação serial de alta velocidade?

Os consumidores exigem um desempenho cada vez maior em dispositivos cada vez menores e que consumam menos energia. No mundo do Big Data, temos visto uma drástica mudança dos barramentos de comunicação digital; a partir dos anos 2000, os barramentos estão passando do paralelo para o serial.  Essa transição dos barramentos paralelos aos barramentos seriais de alta velocidade nos trouxe dispositivos de menores dimensões, com capacidade muito maior de transmissão de dados e menor consumo de energia – possibilitando o advento de muitas tecnologias, como SATA, USB ou PCI Express, que estão atualmente à disposição dos consumidores.

 

Figura 1. A partir dos anos 2000, os padrões de comunicação paralela 
começaram a dar lugar aos padrões seriais.

Vantagens

Há uma limitação física nas taxas de clock dos barramentos paralelos entre 1 GHz e 2 GHz.  Essa limitação se deve ao desvio introduzido nas linhas de clock e dados, que provoca erros de bit em taxas mais altas.  Os barramentos seriais de alta velocidade enviam dados codificados, que contêm informações de dados e clock em um único sinal diferencial; dessa forma, os engenheiros podem evitar as limitações de velocidade existentes nos barramentos paralelos.  Hoje em dia, é comum ver enlaces seriais de alta velocidade com vias de dados a 10 Gbps.  Além disso, é possível juntar várias vias de enlaces seriais para formar enlaces de comunicação com maiores taxas de transferência de dados.

Serializando os dados e os enviando em maiores velocidades, podemos reduzir o número de pinos dos circuitos integrados e, assim, a área ocupada pelo dispositivo.  Além disso, como as vias seriais podem operar a uma velocidade de clock muito maior, podemos também obter transferências de dados muito melhores que as possíveis com os barramentos paralelos.

Figura 2 Quantidades de vias vs. taxas de linha em barramentos comuns.  Os padrões seriais podem oferecer taxas de linha muito maiores que as dos padrões paralelos, proporcionando maiores taxas de transferência de dados.

 

Desvantagens

A menor quantidade de pinos pode reduzir a complexidade do projeto, mas as maiores velocidades exigidas trazem desafios adicionais.  Os projetos estão atingindo frequências de RF; dessa forma, preocupações similares às dos projetos de RF devem ser levadas em consideração para garantir a integridade dos sinais. Para reduzir esses problemas de integridade dos sinais, os enlaces seriais de alta velocidade implementam técnicas como a codificação, pré-ênfase e equalização.

 

Camadas dos enlaces seriais de alta velocidade

Para uma conexão serial funcionar, os dois lados devem operar dentro de parâmetros específicos.  Esses parâmetros podem ser abstraídos em várias camadas funcionais.  

Figura 3.  Podemos ter camadas adicionais acima das camadas física e de enlace de dados.  Essas camadas variam para cada protocolo e aplicação, sendo normalmente as camadas a serem customizadas.

 

A camada de nível mais baixo é a camada física, responsável pela transmissão e recuperação dos 0s e 1s.  Acima dela, a camada de enlace de dados é responsável por mapear bits brutos em dados que tenham algum significado. Essa camada também conta com funções que garantem a correta transmissão e recepção de dados pela camada física.  Para concluir, as camadas de nível superior, acima das camadas física e de enlace de dados, podem proporcionar contexto adicional, com recursos como correção de erros, criação de pacotes e informações de roteamento de dados.

 

Camada física

A camada física é responsável por garantir a compatibilidade elétrica entre dispositivos e apresentar bits sincronizados com o sinal de clock à camada de enlace de dados.

 

Interface elétrica

Diferentes protocolos seriais de alta velocidade definirão diferentes requisitos para as interfaces elétricas do transmissor e receptor.  Isso garante a compatibilidade elétrica da conexão entre o dispositivo transmissor e o receptor.  Os enlaces seriais de alta velocidade utilizam sinais diferenciais, para poderem oferecer os tempos extremamente rápidos de subida e descida necessários para a comunicação a velocidades acima de 1 Gbps, minimizar as emissões eletromagnéticas e aumentar a imunidade ao ruído, pela rejeição do ruído de modo comum. Além disso, as tensões pico a pico raramente ultrapassam 1 V nessas velocidades, e os padrões elétricos são tipicamente LVDS (sinalização diferencial de baixa tensão), ECL (lógica acoplada pelo emissor) ou CML (lógica em modo de corrente).  

 

Recuperação de clock e dados (CDR)

A recuperação de clock e dados (CDR) é outro recurso importante da camada física para os enlaces seriais de alta velocidade.  O CDR é a capacidade de um dispositivo de recepção de sincronizar em clock um feixe de dados de entrada sem a necessidade de um sinal de clock.  Isso é feito com o auxílio da camada de enlace de dados que, garantindo transições de bit frequentes na codificação, permite que os circuitos de sincronismo por malha de fase (PLL) e interpolador de fase (PI) recriem o clock da transmissão e o utilizem para capturar o feixe de dados de entrada com erro mínimo de temporização.

Figura 4.  Como a codificação feita na camada de enlace de dados garante a ocorrência de muitas transições entre 0 e 1, os circuitos de CDR poderão sincronizar em fase o feixe de bits da entrada e amostrar sincronamente os bits de dados codificados.

 

Considerações sobre a integridade dos sinais

Quando a transmissão de dados começa a utilizar taxas de bits acima de 5 GHz, surge mais um desafio para o projeto analógico.  Como as velocidades de transmissão agora estão nas faixas de frequência típicas dos projetos de RF, passaremos a enfrentar desafios relacionados à integridade dos sinais.  Para a comunicação a essas altas taxas de dados, é importante utilizar placas de circuito impresso, conectores e cabos de alta qualidade.  Além disso, é importante que os projetistas de placas de circuito impresso utilizem a teoria de linhas de transmissão em seus projetos de enlaces seriais de alta velocidade, utilizando técnicas adequadas para minimizar as distorções nos sinais, evitando stubs, descasamentos de impedância e descasamentos causados por diferenças no comprimento das trilhas.  

 

Equalização

Equalização é um processo pelo qual compensamos o comportamento elétrico de um canal para melhorarmos a resposta em frequência dos canais.  Isso pode ocorrer no lado do transmissor ou do receptor do enlace de comunicação, para melhorar a margem do enlace, mas normalmente o termo equalização é utilizado como referência ao receptor.  Quando um sinal serial de alta velocidade percorre as trilhas da placa de circuito impresso, conectores, cabos e entra no receptor, ele sofre distorção, pois a atenuação não afeta igualmente todas as componentes de frequência do sinal. Os parâmetros da equalização em transceptores multigigabit (MGTs) podem aplicar ganho ou atenuação nas diferentes frequências do sinal antes da amostragem, para melhorar o sinal e a margem do enlace.  Muitos MGTs possuem a equalização automática, que detecta e atualiza continuamente as configurações dos equalizadores conforme seus parâmetros ideais.   

 

Pré-ênfase

Pré-ênfase é o termo tipicamente utilizado para nos referirmos à equalização do lado do transmissor de um enlace serial de alta velocidade.  A pré-ênfase é basicamente utilizada para superar os desafios apresentados pela interferência intersímbolos (ISI).  Nas taxas de linha mais altas, os bits de dados começam a se afetar uns aos outros na transmissão.  Por exemplo, se houver uma sequência de três 1s transmitidos, seguidos por um 0, será difícil colocar a linha rapidamente no nível baixo 0, por ter sido criada uma polarização positiva na linha.

 

   

Figura 5. Degradação no sinal provocada pela interferência intersímbolos (ISI).  Essa degradação ocorre quando a falta de transições polariza a linha, dificultando a transição rápida na primeira ocorrência de um bit oposto.

 

Há duas maneiras para superar a interferência intersímbolos.  Sabendo que apenas o primeiro bit após a transição do nível baixo para o alto ou vice-versa é problemático, podemos amplificar apenas o primeiro bit após uma transição. Isso resultaria no sinal mostrado na Figura 6.

 

Figura 6. A pré-ênfase amplia o primeiro bit após a transição de um sinal.  Isso ajuda a reduzir problemas como a interferência intersímbolos.

 

Uma abordagem mais comum para se obter uma forma de onda como a mostrada na Figura 6 é atenuar os bits após a primeira transição, em vez de amplificar o primeiro.  Isso pode ser feito por uma filtragem passa-faixa, pois os bits da transição (frequência mais alta) são menos atenuados que os bits após a transição.

 

Camada de enlace de dados

A camada de enlace de dados é responsável pela manipulação de dados introduzida para melhorar a integridade dos sinais, garantir a boa comunicação e mapear bits físicos em dados.  Os recursos utilizados para isso são esquemas de codificação e caracteres de controle para alinhamento, correção de clock e junção de canais.   

 

Esquemas de codificação

A meta de codificação é garantir a presença de muitas transições de bit, que não apenas para garantir a recuperação de clock e dados (CDR) mas também o balanceamento CC dos dados.  Para garantir o sucesso do CDR, o esquema de codificação precisará garantir que o sinal de dados terá transições suficientes para que os circuitos do CDR continuem sincronizados em fase com o feixe de dados.  Se não for possível manter o PLL incluído nos circuitos de CDR sincronizado, pela falta de transições, o receptor não poderá garantir o clock síncrono de bits de dados, e você terá erros de bit ou falhas no enlace. O CDR é realizado garantindo a transmissão de símbolos com muitas transições de bit, com a inclusão de bits de overhead aos dados.
O balanceamento CC também é importante para que um enlace serial continue funcionando.  Se o balanceamento CC não for regulado, os sinais poderão se desviar de seus níveis lógicos alto e baixo ideais e isso poderá provocar erros de bit.  O balanceamento CC é garantindo com o equilíbrio estatístico da quantidade de 1s e 0s nos símbolos transmitidos.  Em um sinal com balanceamento CC, o número de 0s e 1s transmitidos ao longo do tempo é estatisticamente igual ao longo do tempo.   

 

Codificação 8b/10b

Um esquema de codificação bastante utilizado é o 8b/10b.  Para cada oito bits de dados, são incluídos dois bits adicionais para a codificação do overhead.  Esses dois bits adicionais quadruplicam as representações de bit (símbolos) possíveis com relação a apenas oito bits de dados.  Com muito mais opções de símbolos à disposição, o padrão 8b/10b escolhe os símbolos pré-definidos com a maioria das transições e o melhor balanceamento CC para fazer o mapeamento com as palavras de dados e os símbolos de controle.  Esse padrão armazena esses símbolos em lookup tables, que são utilizadas para codificar e decodificar os dados.
Quando uma palavra de dados de 8 bits está pronta para ser codificada, o codificador divide a palavra de dados em dois segmentos de cinco bits e três bits; em seguida, realiza as codificações 5b/6b e 3b/4b nessa palavra de dados.  Os 5 bits menos significativos são enviados à tabela 5b/6b, e os 3 bits mais significativos, à tabela 3b/4b. 

 

Palavra de dados 3b

Símbolo codificado 4b

 

Palavra de dados 5b

Símbolo codificado 6b

000

0100 ou 1011

 

00000

100111 ou 011000

001

1001

 

00001

011101 ou 100010

010

0101

 

00010

101101 ou 010010

011

0011 ou 1100

 

00011

110001

100

0010 ou 1101

 

00100

110101 ou 001010

101

1010

 

00101

101001

110

0110

 

00110

011001

111

0001 ou 1110

 

00111

111000 ou 000111

 

 

 

01000

111001 ou 000101

 

 

 

01001

100101

 

 

 

01010

010101

 

 

 

01011

110100

 

 

 

01100

001101

 

 

 

01101

101100

 

 

 

01110

011100

 

 

 

01111

010111 ou 101000

 

 

 

10000

011011 ou 100100

 

 

 

10001

100011

 

 

 

10010

010011

 

 

 

10011

110010

 

 

 

10100

001011

 

 

 

10101

101010

 

 

 

10110

011010

 

 

 

10111

111010 ou 000101

 

 

 

11000

110011 ou 001100

 

 

 

11001

100110

 

 

 

11010

010110

 

 

 

11011

110110 ou 001001

 

 

 

11100

001110

 

 

 

11101

101110 ou 010001

 

 

 

11110

011110 ou 100001

 

 

 

11111

101011 ou 010100

Quadro 1.  As palavras de dados 8b são codificadas pelo envio dos 3 MSBs a uma tabela 3b/4b e dos 5 LSBs a uma tabela 5b/6b.  Esses bits são então combinados com base no conceito de "disparidade cumulativa corrente", de modo a formar um símbolo de 10b com muitas transições para os circuitos do CDR.

 

Em uma situação ideal, todos os símbolos terão um igual número de zeros e uns, para manter o balanceamento CC.  Não há símbolos suficientes em 5b/6b e 3b/4b para isso acontecer; dessa forma, foram implementadas regras para a tomada de decisões com base em um conceito de "disparidade cumulativa" (running disparity). A disparidade cumulativa é a diferença acumulada entre o número de 1s e o número de 0s que foram transmitidos. Como não há uma quantidade suficiente de símbolos que tenham um número igual de 1s e 0s para representar 8 bits, algumas palavras de dados são representadas por 2 símbolos: um símbolo com mais 0s que 1s e outro símbolo com mais 1s que 0s. Por exemplo, o símbolo da tabela 3b/4b para 1101 também pode ser representado como 0010.  Ao escolher a versão do símbolo a ser utilizada, o codificador sempre tenta balancear a disparidade cumulativa.  A disparidade de um símbolo 8b/10b completo é sempre 0, +2 ou -2.  O quadro abaixo mostra o processo que decide qual o símbolo a ser utilizado.

 

Regras para a disparidade cumulativa

RD anterior

Escolha de símbolo conforme a disparidade

Disparidade encontrada

Próxima RD

-1

0

0

-1

-1

+2, -2

+2

+1

+1

0

0

+1

+1

+2,-2

-2

-1


Quadro 2. Esse quadro mostra as regras para a disparidade cumulativa (RD), que determina a versão da palavra de código a ser utilizada para garantir o balanceamento CC.

 

Para demonstrar essas regras, iremos codificar a palavra 10010001.  Os 3 bits mais significativos (100) são enviados à tabela 3b/4b, e os 5 bits menos significativos (10001) são enviados à tabela 5b/6b. Se essa for a primeira palavra enviada pela linha, o codificador assumirá que a disparidade é -1; dessa forma, assumiremos uma disparidade cumulativa de -1 para esse exemplo.  Não há escolha para a parte 5b/6b, portanto a parte 3b/4b decidirá se a disparidade será +2 ou -2.  Como a disparidade cumulativa é -1, será escolhido o código 3b/4b de disparidade +2 (1101).  Quando os códigos 3b/4b e 5b/6b forem combinados, o símbolo codificado final será 1101100011. Após esse símbolo ter sido transmitido, a disparidade cumulativa será agora -1 + 2 = +1.  

 

Codificação 64b/66b

A codificação 64b/66b utiliza uma abordagem diferente da 8b/10b para realizar algo similar. Em vez de tabelas de código, essa codificação utiliza o embaralhamento.  O embaralhamento requer um circuito de hardware que oferece uma alta probabilidade de múltiplos 0s e 1s com espaçamento relativamente uniforme.  O embaralhamento permite que os dados codificados pareçam aleatórios, com transições frequentes, mas ainda podendo ser desembaralhados no lado do receptor.

Figura 7.  Um circuito de embaralhamento faz os dados de saída parecerem aleatórios, com balanceamento CC, mas ainda podendo ser desembaralhados no receptor.  O embaralhamento é um método alternativo de codificarmos dados com uma lookup table.

 

Os dois primeiros dos 66 bits são considerados o preâmbulo, e fornecem informações sobre os demais 64 bits.   

 

Preâmbulo (dois primeiros bits)

64 bits restantes

00

Não utilizado, seria considerado um erro

01

Dados

10

8 bits de tipo, 56 bits de controle e/ou dados

11

Não utilizado, seria considerado um erro


Quadro 3.  Os dois primeiros bits de um símbolo 64b/66b são considerados um preâmbulo.  O preâmbulo fornece informações ao decodificador sobre os 64 bits seguintes.  Os significados de preâmbulo acima são aplicáveis ao Ethernet de 10 Gigabits.

 

A principal vantagem do 64b/66b em comparação com o 8b/10b é o menor overhead.  Essa codificação tem um overhead de até 3%; em comparação, o overhead para a codificação 8b/10b é de 20%.  Um ponto fraco do 64b/66b é que não há compromisso com o balanceamento CC como o 8b/10b.  Os circuitos de embaralhamento provaram ser muito bons em fornecer dados aparentemente aleatórios, com desbalanceamento CC estatisticamente insignificante, mas não forçosamente, como no 8b/10b.

 

64b/67b

Determinados circuitos eletrônicos são demasiadamente sensíveis ao offset CC ao longo do tempo; dessa forma, pode não ser interessante para os projetistas escolherem o esquema de codificação 64b/66b, porque nesse esquema, o offset CC não é forçado.  Nessas situações, os engenheiros estavam presos ao maior overhead (20%) do esquema 8b/10b.  O 64b/67b inclui 1 bit adicional de overhead, o que permite ao esquema de codificação limitar a disparidade cumulativa a ±96.
O transmissor monitora a disparidade cumulativa e calcula a nova disparidade das palavras de código embaralhadas.  Se a nova palavra de código for reduzir o valor da disparidade, ele transmite esse símbolo.  Se a nova palavra de código for aumentar o valor da disparidade, o codificador inverte os 64 bits embaralhados (não sendo necessário inverter o preâmbulo, pois sua disparidade é zero).  O bit adicional é referido como bit de inversão. Ele informa ao decodificador se é necessário inverter os dados ou não.  Isso permite que circuitos eletrônicos sensíveis ao offset CC se beneficiem de um esquema de codificação de baixo overhead que possui um offset CC forçado.

 

128b/130b

O PCIe 1.0 e o 2.0 utilizam a codificação 8b/10b, enquanto que o PCIe 3.0 e o 4.0 utilizam o 128b/130b, para oferecer uma maior taxa de transferência de dados com uma taxa de linha possível.  O 128b/130b pode ser pensado como um 64b/66b com payload duplo, ainda com apenas dois bits de preâmbulo.  O quadro abaixo mostra as especificações para PCIe.

 

Versão PCIe

Codificação

Taxa de linha

Transferência (x16)

1.0

8b/10b

2,5 Gbps

4 GB/s

2.0

8b/10b

5 Gbps

8 GB/s

3.0

128b/130b

8 Gbps

15,8 GB/s

4.0

128b/130b

16 Gbps

31,5 GB/s


Quadro 4.  Especificações das quatro gerações de PCI Express.  O PCIe 3.0 e o 4.0 fizeram a transição para o 128b/130b para poderem ter uma maior taxa de transferência de dados, mantendo suas taxas de linha a uma velocidade mais controlável.

 

Símbolos de controle (caracteres K)

Os símbolos de controle, também conhecidos como caracteres k no contexto da codificação 8b/10b, são uma função importante dos enlaces seriais de alta velocidade.  Esses são símbolos que podem ser diferenciados dos dados; dessa forma, o receptor pode utilizá-los para diferentes responsabilidades de controle, tais como o alinhamento das fronteiras dos bytes antes da decodificação, técnicas de correção de clock e junção de canais, para proporcionar coerência dos dados em diferentes vias.  

 

Alinhamento e detecção de caracteres de controle

Para detectar corretamente uma palavra, o receptor precisa saber exatamente onde começa e termina a palavra com os dados codificados. O receptor procura nos dados de entrada o caractere de controle, também referido como vírgula (comma), quando utilizado no alinhamento em 8b/10b, que define as fronteiras dos dados codificados.  Ao identificar o caractere de alinhamento, o receptor terá uma ideia de onde começa e termina a palavra com os dados codificados, o que permite que esses dados sejam enviados à lógica de decodificação.

 

Caracteres de correção de clock

A correção de clock deve ser usada sempre que o clock de transmissão e o clock de recepção não estiverem sincronizados com uma mesma fonte.  Mesmo estando em uma mesma frequência nominal, esses clocks irão pouco a pouco se desviar um do outro, devido a pequenas imprecisões que ocorrem na frequência do clock.  Ter uma FIFO (buffer de memória "primeiro a entrar, primeiro a sair"), às vezes referido como buffer elástico, permite que o receptor compense pequenas diferenças de clock entre o transmissor e o receptor e implemente a correção do clock.

Figura 8.  É necessário utilizar um buffer elástico na recepção entre as camadas superiores do decodificador e receptor para implementar a correção do clock.  Esse buffer armazena dados para evitar erros provocados pela não sincronização e consequente desvio entre clocks, permitindo a comunicação entre dois dispositivos que não utilizem um mesmo clock de referência.

 

A lógica de correção de clock é responsável por garantir que o buffer elástico nunca estará com falta ou excesso de dados.  Se o clock de transmissão estiver operando ligeiramente mais rápido que a leitura do buffer elástico pelo clock de recepção, poderá haver overflow, se não forem utilizadas as técnicas de correção de clock adequadas.  Se o clock de transmissão estiver trabalhando a uma velocidade ligeiramente menor que a lógica de leitura do receptor, poderá haver underflow, se não forem utilizadas as técnicas de correção de clock adequadas.

Um dos caracteres de controle é escolhido como caractere de correção de clock. O transmissor deverá enviar esse caractere de clock periodicamente, intercalado com os dados reais. A frequência de envio desse caractere de correção de clock dependerá da correção de clock exigida pela aplicação e projeto de hardware.  Se a lógica de correção de clock do receptor detectar que o buffer elástico do receptor está indo para o underflow, a lógica de correção do receptor poderá inserir caracteres adicionais de correção de clock, para garantir que isso não irá ocorrer. Se a lógica de correção de clock detectar que o buffer elástico está ficando cheio demais e pronto para transbordar, a lógica poderá jogar fora as sequências de correção de clock que estão no buffer, fornecendo mais espaço para os dados.

 

Junção de canais

Se a taxa de linha e o esquema de codificação não puderem fornecer a taxa de transmissão de dados serial em uma única via serial, você poderá utilizar várias vias.  Como exemplo, os padrões HDMI utilizam 3 vias de dados seriais para obterem sua largura de banda de dados total.  No caso de envio de dados por múltiplas vias, atrasos de propagação farão que os dados cheguem em momentos diferentes nas vias de entrada do receptor.  Dependendo da aplicação, pode ser necessário alinhar os dados por todas as vias do receptor, em um processo conhecido como junção de canais.  O buffer elástico de cada via de entrada do receptor utilizada na correção de clock também é utilizado para a função de junção de canais.

Para conseguirmos a junção de canais, é necessário escolher um caractere de controle e reservá-lo para a junção de canais.  O enlace serial terá uma via mestre; as outras serão consideradas escravas.  A via mestre e todas as escravas enviarão o caractere de junção de canais ao mesmo tempo.  Quando o receptor mestre detectar a sequência de junção de canais em uma determinada posição do buffer elástico, todas as escravas serão instruídas a encontrar sua sequência de junção, e todos os ponteiros de leitura de todos os buffers elásticos serão ajustados conforme a posição da sequência de junção do canal.  Como cada via de dados tem seu próprio offset para o seu próprio buffer elástico, o receptor pode fazer a leitura em diferentes posições de cada buffer elástico, alinhando sua leitura dos dados.

 

Figura 9.  A junção de canais controla os ponteiros de leitura do buffer elástico de cada via de entrada, permitindo que o receptor faça leituras síncronas em múltiplas vias de dados.

 

Caracteres nulos

Outro uso importante para os caracteres de controle é o caractere nulo.  Para que a recuperação de clock e dados permaneça sincronizada em fase, o transmissor sempre precisará estar mandando bits.  Quando não houver dados a serem enviados, será necessário enviar um caractere nulo.  Esse é outro caractere de controle determinado pelo protocolo; o receptor sabe que esse caractere não é um dado real.

 

Camadas superiores adicionais

Há camadas superiores adicionais, acima da camada do enlace de dados, que permitem aos engenheiros configurar a comunicação conforme suas necessidades específicas.  Alguns protocolos têm padrões específicos para os recursos das camadas superiores, enquanto outros protocolos deixam isso à cargo do projetista.  Alguns recursos comuns podem incluir a verificação/correção de erros, informações de cabeçalho para a comunicação baseada em pacotes ou até mesmo informações sobre o status do enlace.

As camadas acima da camada de enlace de dados e a camada física são as camadas normalmente configuradas caso a caso para atender a necessidades específicas da aplicação, permitindo que os engenheiros aproveitem os recursos existentes nas implementações das camadas física e de enlace de dados normais.  
Alguns exemplos dos recursos comumente utilizados nas camadas superiores são a detecção de erro e a correção por verificação redundante cíclica (CRC) e correção antecipada de erros (FEC).  O uso desses esquemas para detectar ou corrigir erros reduz a eficiência na transferência de dados.  O CRC implementa regras que mostram se há erros de bit na transmissão, mas não pode corrigir esses erros.  A aplicação pode decidir se terá recursos para solicitar o reenvio desses dados.  Por outro lado, o FEC inclui informações de correção de dados nos dados transmitidos, que podem permitir a recuperação do receptor caso haja uma quantidade limitada de erros de bit.  Isso é útil no caso de canais com muito ruído ou em taxas de comunicação muitas altas, nas quais problemas de integridade de sinais provocam mais erros de bit.  Utilizar o FEC é uma decisão de projeto, que contrapõe a eficiência da taxa de dados à integridade dos sinais.  

 

Conclusões

Há muitos desafios a serem enfrentados nas várias camadas de um enlace serial de alta velocidade para garantirmos a qualidade da comunicação.  A compreensão dos diferentes conceitos envolvidos em cada nível ajuda a implementar e testar as diferentes camadas.  Para uma camada poder operar, as camadas abaixo dela deverão estar funcionando corretamente.  Há muitas especificações definidas para as camadas física e de enlace de dados. O uso de uma das implementações padrão permite que os engenheiros não tenham de determinar eles mesmos os detalhes de baixo nível.  Outro benefício do uso de camadas física e de enlace de dados padrão é que normalmente há códigos prontos disponíveis que implementam todos esses detalhes de baixo nível para você.  Um ótimo exemplo desses códigos é o Xilinx Aurora Protocol, um código gratuito que implementa um protocolo leve de camada de enlace de dados para a comunicação serial ponto a ponto.  Isso permite uma abstração que livra o usuário de pequenos detalhes como a correção de clock, junção de canais, caracteres nulos, codificação/decodificação e outros mais, permitindo que os engenheiros se concentrem nas especificidades de suas aplicações, nas camadas superiores.  

Com os benefícios de menores dimensões e consumo de energia, em conjunto com seu maior desempenho, os enlaces seriais de alta velocidade estão ganhando popularidade rapidamente.  A indústria aperfeiçoa continuamente os conceitos básicos da comunicação serial em alta velocidade, que permitem a criação de taxas de linha cada vez mais rápidas para o novo mundo do Big Data.