Project

General

Profile

Actions

Atividade #1288

closed

Implementação do protocolo UART no FPGA da MyRio

Added by Ana Luiza Buse da Silva almost 5 years ago. Updated almost 4 years ago.

Status:
Fechada
Priority:
Urgente
Assignee:
Start date:
03/23/2020
Due date:

Description

A MyRio tem um processador Zink, que é um processador de aplicações junto com FPGA, onde tanto o código do processador de aplicações quanto do FPGA podem ser programados em LabView. Isso nos permite implementar um protocolo de comunicação em um pino digital, fazendo com que possamos usar os 16 pios I/O de cada cada conector como saídas UART Half Duplex. Assim, seria possível conectar até 40 motores na MyRio,visto que essa tem 40 pinos I/O, sem usar a conexão e serie dos motores.


Files

Projeto_LabVIEW.png (23.5 KB) Projeto_LabVIEW.png Gabriel Lima, 03/23/2020 06:54 PM
RT_Main_example.png (29.3 KB) RT_Main_example.png Gabriel Lima, 03/23/2020 07:23 PM
FPGA_Main_Default_example.png (62.9 KB) FPGA_Main_Default_example.png Gabriel Lima, 03/23/2020 08:18 PM
FPGA_Main_Defaultd_example.png (314 KB) FPGA_Main_Defaultd_example.png Gabriel Lima, 03/23/2020 08:20 PM
FPGA_Main_Defaultd_UART.png (288 KB) FPGA_Main_Defaultd_UART.png Gabriel Lima, 03/23/2020 08:43 PM
RT_Main_UART.png (43.1 KB) RT_Main_UART.png Gabriel Lima, 03/23/2020 08:44 PM
Actions #1

Updated by Gabriel Lima almost 5 years ago

A MyRIO é um kit de desenvolvimento da National Instruments voltada para o ensino de engenharia e que foi sugerida pelo prof. Renault para o uso no robô humanoide de 2020. Seria uma alternativa ao uso do Raspberry Pi de 2019 ou ao uso da Discovery de 2020.

Actions #2

Updated by Gabriel Lima almost 5 years ago

Começamos procurando um "Getting Started" da MyRIO, e descobrimos a existência do software "NI LabVIEW myRIO Software Bundle 2018", disponível no link http://www.ni.com/download/ni-myrio-software-2018/7390/en/. Foi então instalada uma versão customizada do LabVIEW com os módulos de programação MyRIO Toolkit e FPGA.

Actions #3

Updated by Gabriel Lima almost 5 years ago

Terminada a instalação, foi aberto um projeto usando o template "myRIO Project", o qual foi em seguida executado e pudemos ver a primeira demonstração de uma funcionalidade do kit, onde ass leituras do acelerômetro on-board foram mostradas em um gráfico na front panel da VI principal do projeto.

Actions #4

Updated by Gabriel Lima almost 5 years ago

Em seguida, pesquisamos sobre a arquitetura do processador Zynq, e encontramos que ele é composto por duas partes separadas. Uma delas é o processador de aplicações Cortex A9, que, no caso da MyRIO executa o SO "NI Linux Real-Time", o qual por sua vez executa um código escrito em LabVIEW, abreviado código RT. A outra parte do Zynq é o FPGA, que executa um código escrito em LabVIEW e compilado pelo Xilinx Vivado, abreviado código FPGA. O projeto em LabVIEW, então , possui duas VI principais, a "RT Main.vi", que controla a parte RT e a "FPGA Main Default.vi", que controla a parte FPGA.

Actions #5

Updated by Gabriel Lima almost 5 years ago

A VI principal da parte RT "RT Main.vi" é formada por uma sptep sequence com os frames "Initialize myRIO with custom FPGA" (abreviado "Init"), "Acquire and process data" (Abreviado "Loop") e "Close". No frame init, o nó "Open FPGA VI Reference" referencia a VI principal do FPGA e o nó seguinte inicializa a parte FPGA com o bitfile compilado pelo Vivado. no frame loop, o método SYS.RDY se torna True quando o FPGA termina efetivamente sua inicialização. Além disso, a Express VI Button lê o estado atual do botão onboard da MyRIO e retorna um bool que será mostrado pelo indicador "Button Value". O Loop será finalizado quando houver algum erro ou quando for clicado o botão Stop da front panel (não o do LabVIEW). Em seguida, será executado o frame "close", onde o nó "Close FPGA VI Reference" irá parar a execução do código FPGA.

Updated by Gabriel Lima almost 5 years ago

A VI principal do FPGA possui em seu front panel vários controles e indicadores que podem ser alterados ou lidos pelo código RT, diretamente ou através de Express VIs. O Código da VI principal FPGA chama Sub VIs que por sua vez chamam os métodos que leem ou alteram o estado de um pino digital.

Updated by Gabriel Lima almost 5 years ago

Seguindo com a tarefa de iimplementar o UART, apagamos todo o código dentro do loop da porta B, criamos um buffer DMA FIFO, chamado "UART DMA", onde ficam armazenados os bytes a serem enviados pela UART. O código RT possui um nó que inicializa o FIFO, dentro do frame "init" e outro que grava no FIFO, dentro do frame "loop". O código FPGA possui um nó que verifica se há dados no FIFO e outro que lê os dados. O FPGA lê os bytes do fifo, um por um, converte em array de bool e levanta e abaixa o pino digital, transmitindo bit por bit cada byte do FIFO, até que o FIFO esteja vazio. Quando o FIFO está vazio, o pino é mantido levantado.

Actions #8

Updated by Gabriel Lima almost 5 years ago

Visto que o clock do FPGA é 40MHz, e que a baudrate desejada e de 1Mbps, a troca do estado do pino (chamada bit) deve ser feita a cada 40 iterações do loop, pois cada iteração é feita em um único tick. Além disso, cada byte transmitido é composto por um start bit, 8 data bits e um stop bit, totalizando 10 bits. Ao final da transmissão dos 10, será lido um novo byte do FIFO, o array será atualizado e uma nova transmissão iniciará.

Actions #9

Updated by Nicolas Oliveira almost 5 years ago

EXCELENTE! Estou ancioso pelo resultado.

Actions #10

Updated by Nicolas Oliveira almost 5 years ago

  • Priority changed from Normal to Urgente
Actions #11

Updated by Luis David Peregrino de Farias almost 5 years ago

Muito bom!!! Que gás!

Actions #12

Updated by Gabriel Lima over 4 years ago

Consegui implementar o protocolo (apenas de saída) para o controle dos 8 motores.

Actions #13

Updated by Gabriel Lima almost 4 years ago

  • Status changed from Em andamento to Fechada
Actions

Also available in: Atom PDF