Laboratório: UART Transceiver

Laboratório: UART Transceiver

Este laboratório propõe o desenvolvimento de comunicação entre duas placas usando UART. O objetivo envolve sincronização entre placas com referência de clock diferentes, além de detecção de início e fim de transmissões de dados.

Ver histórico de mudanças

Changelog

Versão Data Descrição
v2025.1 31/mar/2025 Versão inicial

Disciplina

Este laboratório faz parte da disciplina MC613 - Laboratório de Circuitos Digitais. Ver oferecimento mais recente.

Entrega

  • A entrega deverá estar em único arquivo .ZIP contendo todos e apenas os arquivos listados abaixo.
  • O nome do arquivo ZIP deve ser RA<RA>.zip, onde <RA> é o RA do componente do grupo que fará a entrega. Por exemplo, RA123456.zip é a entrega do grupo do aluno com o RA 123456.
  • Os nomes dos arquivos dentro do ZIP devem ser seguidos.
  • Se mais do que um arquivo for recebido para a mesma entrega, apenas o último recebido dentro do prazo será considerado.
  • O cumprimento ou não dessas instruções fará parte dos critérios de avaliação.

Arquivos que fazem parte da entrega:

  • uart.pdf: Ilustração do formato de comunicação.
  • uart.vhd: Descrição em VHDL da entidade do Transceiver.
  • uart_tb.vhd: Testbench da entidade do Transceiver.
  • uart_board.vhd: Descrição em VHDL da entidade de interface de comunicação entre o Transceiver e as conexões na placa DE1-SoC.
  • *.vhd: Descrição em VHDL de quaisquer módulos auxiliares.

Link para entrega: https://ic.unicamp.br/~isaias/mc613/entrega.

Comunicação Serial

A comunicação serial é um método de transmissão de dados que envia os bits um a um, em sequência, através de um único canal de comunicações. Diferente da transmissão paralela, que pode enviar vários bits simultaneamente, a transmissão serial pode ser implementada com poucos fios, reduzindo a complexidade das placas, a interferência entre sinais, os custos de material e facilitando a comunicação à longa distância.

Diferentes protocolos implementam este tipo de comunicação, como o RS232, USB, Ethernet, dentre outros. Contudo, alguns padrões evoluíram para transmissão serial sobre múltiplos canais para aumentar as taxas de transferência, como é o caso das versões mais recentes do protocolo USB.

Atividades do laboratório

Parte I - Criação do controlador UART

Neste laboratório, vocês irão implementar uma comunicação serial entre duas placas e testá-la com outro grupo. Para isto, vocês precisam implementar um controlador UART como o especificado pela figura abaixo.

Diagrama de blocos para um controlador UART

O padrão UART (universal asynchronous receiver-transmitter) permite comunicação serial assíncrona com tanto o formato dos dados quanto a velocidade sendo configuráveis. Os dados são enviados bit por bit do menos significativo para o mais significativo, marcados por um bit de início e um de fim. Para simplificar a comunicação, usem 8 bits de dados com um bit de paridade par, isto é, um bit que é definido para garantir que o número total de 1s é par.

Ilustrem no arquivo uart.pdf o formato dos pacotes sendo transferidos, destacando cada trecho do pacote e especifique a função que define o bit de paridade paridade sendo utilizada.

Salve a entidade da controladora UART no arquivo uart.vhd e crie um testbench, uart_tb.vhd, que ilustre o envio e recepção de pacotes corretamente.

Parte II - Integração com a DE1-SoC

Crie um arquivo uart_board.vhd integrando seu componente UART com a placa DE1-SoC. Utilize os switches SW[7..0] para definir os dados a serem enviados no pacote e o pushbutton KEY(0) para enviar os dados. Ao receberem os dados, mostrem eles nos LEDs LEDR[7..0]. Use o pushbutton KEY(1) para limpar os dados armazenados do último recebimento. Usem os pinos GPIO da placa para os sinais RX e TX, consulte o manual para localizar os pinos que serão utilizados no conector e indique como comentário no seu arquivo.

Parte III - Testando com outro grupo

Usando jumper wires fornecidos para esta atividade, conecte a sua placa com a de outro grupo conforme o diagrama abaixo. Preste atenção ao conectar os pinos entre as duas placas. Lembrem-se de conectar o RX de uma placa com o TX da outra placa e vice-versa, e não esqueçam de o pino de GND das duas placas.

Diagrama de conexão dos sinais

Verifiquem se o formato dos pacotes entre os dois grupos está compatível, definam entre si uma taxa de bits para a comunicação (ex.: 9600 bits/s) e definam a frequência corretamente no seu design.

Apresentem a transferência de dados entre as placas para finalizar a atividade.