Projeto

Geral

Perfil

Ações

Atividade #1288

Fechada

Implementação do protocolo UART no FPGA da MyRio

Adicionado por Ana Luiza Buse da Silva mais de 4 anos atrás. Atualizado aproximadamente 3 anos atrás.

Situação:
Fechada
Prioridade:
Urgente
Atribuído para:
Início:
23/03/2020
Data prevista:

Descrição

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.


Arquivos

Projeto_LabVIEW.png (23,5 KB) Projeto_LabVIEW.png Gabriel Lima, 23/03/2020 18:54 h
RT_Main_example.png (29,3 KB) RT_Main_example.png Gabriel Lima, 23/03/2020 19:23 h
FPGA_Main_Default_example.png (62,9 KB) FPGA_Main_Default_example.png Gabriel Lima, 23/03/2020 20:18 h
FPGA_Main_Defaultd_example.png (314 KB) FPGA_Main_Defaultd_example.png Gabriel Lima, 23/03/2020 20:20 h
FPGA_Main_Defaultd_UART.png (288 KB) FPGA_Main_Defaultd_UART.png Gabriel Lima, 23/03/2020 20:43 h
RT_Main_UART.png (43,1 KB) RT_Main_UART.png Gabriel Lima, 23/03/2020 20:44 h
Ações #1

Atualizado por Gabriel Limamais de 4 anos

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.

Ações #2

Atualizado por Gabriel Limamais de 4 anos

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.

Ações #3

Atualizado por Gabriel Limamais de 4 anos

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.

Ações #4

Atualizado por Gabriel Limamais de 4 anos

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.

Ações #5

Atualizado por Gabriel Limamais de 4 anos

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.

Atualizado por Gabriel Limamais de 4 anos

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.

Atualizado por Gabriel Limamais de 4 anos

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.

Ações #8

Atualizado por Gabriel Limamais de 4 anos

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á.

Ações #9

Atualizado por Nicolas Oliveiramais de 4 anos

EXCELENTE! Estou ancioso pelo resultado.

Ações #10

Atualizado por Nicolas Oliveiramais de 4 anos

  • Prioridade alterado de Normal para Urgente
Ações #11

Atualizado por Luis David Peregrino de Fariasmais de 4 anos

Muito bom!!! Que gás!

Ações #12

Atualizado por Gabriel Limamais de 3 anos

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

Ações #13

Atualizado por Gabriel Limaaproximadamente 3 anos

  • Situação alterado de Em andamento para Fechada
Ações

Exportar para Atom PDF