Operácie

Schaeffler FPGA: Rozdiel medzi revíziami

Zo stránky SensorWiki

Kocur (diskusia | príspevky)
Bez shrnutí editace
Kocur (diskusia | príspevky)
Bez shrnutí editace
Riadok 1: Riadok 1:


= Modelovanie vnoreného systému na čipe FPGA - praktická časť =
= Modelovanie vnoreného systému na čipe FPGA - praktická časť =


Cieľom praktického cvičenia je navrhnúť hardvér a softvér pre vnorený mikropočítačový systém, využívajúci soft-core procesor MicroBlaze. Úlohou systému bude ovládať rýchlosť jednosmerného motora pomocou pulznej šírkovej modulácie (PWM) v otvorenej slučke. Procesor bude zaznamenávať signály z enkodéra motora a na základe týchto signálov vyhodnocovať uhlovú rýchlosť motora v jednotkách otáčok za minútu (ot/min).  
Cieľom praktického cvičenia je navrhnúť hardvér a softvér pre vnorený mikropočítačový systém, využívajúci soft-core procesor MicroBlaze. Úlohou systému bude ovládať rýchlosť jednosmerného motora pomocou pulznej šírkovej modulácie (PWM) v otvorenej slučke. Procesor bude zaznamenávať signály z enkodéra motora a na základe týchto signálov vyhodnocovať uhlovú rýchlosť motora v jednotkách otáčok za minútu (ot/min).  


== Úlohy ==
== Úlohy ==
Riadok 9: Riadok 13:
# Overte ovládanie a snímanie uhlovej rýchlosti DC motora pomocou experimentu.
# Overte ovládanie a snímanie uhlovej rýchlosti DC motora pomocou experimentu.


== H-mostík ==  
 
=== H-mostík ===
 
H-mostík je elektronický obvod používaný na riadenie smeru a veľkosti prúdu, ktorý tečie cez záťaž. Pozostáva z štyroch tranzistorov a vytvára tak kruhovú sústavu, ktorá dokáže meniť polaritu prúdu prechádzajúceho cez záťaž. Táto vlastnosť umožňuje použitie H-mostíka v rôznych aplikáciách, ako napríklad pri riadení motora, serva alebo pri riadení intenzity svetla LED. H-mostíky sú kľúčovými súčasťami v mnohých robotických aplikáciách a elektrotechnických projektov, kde umožňujú presné a účinné riadenie výkonu.
H-mostík je elektronický obvod používaný na riadenie smeru a veľkosti prúdu, ktorý tečie cez záťaž. Pozostáva z štyroch tranzistorov a vytvára tak kruhovú sústavu, ktorá dokáže meniť polaritu prúdu prechádzajúceho cez záťaž. Táto vlastnosť umožňuje použitie H-mostíka v rôznych aplikáciách, ako napríklad pri riadení motora, serva alebo pri riadení intenzity svetla LED. H-mostíky sú kľúčovými súčasťami v mnohých robotických aplikáciách a elektrotechnických projektov, kde umožňujú presné a účinné riadenie výkonu.


Pmod DHB1 je dvojkanálový H-mostík, ktorý dokáže ovládať 2 DC motory, je pripojiteľný pomocou konektoru Pmod. Pin EN1 môže byť realizovaný ako PWM signál, pri plnej striede (Duty) sa motor bude točiť maximálnou rýchlosťou. Pomocou DIR1 sa určí smer otáčania motora. Signály S1A a S1B slúžia ako výstupy z enkodéra, pomocou ktorých bude snímať rýchlosť otáčania motora. Viac informácií o H-mostíku nájdete na [https://digilent.com/reference/pmod/pmoddhb1/start stránke výrobcu]
Pmod DHB1 je dvojkanálový H-mostík, ktorý dokáže ovládať 2 DC motory, je pripojiteľný pomocou konektoru Pmod. Pin EN1 môže byť realizovaný ako PWM signál, pri plnej striede (Duty) sa motor bude točiť maximálnou rýchlosťou. Pomocou DIR1 sa určí smer otáčania motora. Signály S1A a S1B slúžia ako výstupy z enkodéra, pomocou ktorých bude snímať rýchlosť otáčania motora. Viac informácií o H-mostíku nájdete na [https://digilent.com/reference/pmod/pmoddhb1/start stránke výrobcu]
== Inkrementálny enkodér DC motora ===
Enkodér motora je senzor, ktorý slúži na zisťovanie otáčok a polohy rotujúceho prvku motora. Enkodéry môžu byť absolútne alebo inkrementálne. Inkrementálne enkodéry merajú zmenu polohy rotujúceho prvku vzhľadom k svojej východiskovej polohy. Absolútne enkodéry dokážu zistiť aktuálnu polohu rotujúceho prvku bez ohľadu na jeho predchádzajúce polohy.
V našej aplikácií budeme využívať magnetický inkrementálny enkodér s dvoma halovými sondami. Zmenu magnetického poľa vytvára kotúč s troma magnetmi. Halova sonda tak zaznamená tri nábežné hrany na otáčku motora. Pri výpočte treba započítať aj prevodový pomer planétovej prevodovky motora, ktorý je 1:19. Hriadeľ motora za prevodovkou otáča 19x pomalšie ako motor.
== 1. Navrhnite hardvér procesora s perifériami. ==
* V programe Vivado vytvorte nový projekt Lab_11. Pri vytváraní projektu použite namiesto výberu čipu výber podľa definície dosky Nexys-4.
* Vytvorte základnú štruktúru procesora microblaze s prerušeniami, ktorý pripojte na hodinový a reset signál. Použite pomocný nástroj Run Block Automation a nakonfigurujte procesor podľa Obr. 5.
* Vytvorte hardvér pre UART komunikáciu, pripojte aj prerušenie na vstupný blok radiča prerušení.





Verzia z 12:24, 27. november 2023

Modelovanie vnoreného systému na čipe FPGA - praktická časť

Cieľom praktického cvičenia je navrhnúť hardvér a softvér pre vnorený mikropočítačový systém, využívajúci soft-core procesor MicroBlaze. Úlohou systému bude ovládať rýchlosť jednosmerného motora pomocou pulznej šírkovej modulácie (PWM) v otvorenej slučke. Procesor bude zaznamenávať signály z enkodéra motora a na základe týchto signálov vyhodnocovať uhlovú rýchlosť motora v jednotkách otáčok za minútu (ot/min).


Úlohy

  1. Navrhnite hardvér procesora s perifériami.
  2. Navrhnite a otestujte softvér pre procesor na obsluhu PWM a enkodéra motora.
  3. Overte ovládanie a snímanie uhlovej rýchlosti DC motora pomocou experimentu.


H-mostík

H-mostík je elektronický obvod používaný na riadenie smeru a veľkosti prúdu, ktorý tečie cez záťaž. Pozostáva z štyroch tranzistorov a vytvára tak kruhovú sústavu, ktorá dokáže meniť polaritu prúdu prechádzajúceho cez záťaž. Táto vlastnosť umožňuje použitie H-mostíka v rôznych aplikáciách, ako napríklad pri riadení motora, serva alebo pri riadení intenzity svetla LED. H-mostíky sú kľúčovými súčasťami v mnohých robotických aplikáciách a elektrotechnických projektov, kde umožňujú presné a účinné riadenie výkonu.

Pmod DHB1 je dvojkanálový H-mostík, ktorý dokáže ovládať 2 DC motory, je pripojiteľný pomocou konektoru Pmod. Pin EN1 môže byť realizovaný ako PWM signál, pri plnej striede (Duty) sa motor bude točiť maximálnou rýchlosťou. Pomocou DIR1 sa určí smer otáčania motora. Signály S1A a S1B slúžia ako výstupy z enkodéra, pomocou ktorých bude snímať rýchlosť otáčania motora. Viac informácií o H-mostíku nájdete na stránke výrobcu

Inkrementálny enkodér DC motora =

Enkodér motora je senzor, ktorý slúži na zisťovanie otáčok a polohy rotujúceho prvku motora. Enkodéry môžu byť absolútne alebo inkrementálne. Inkrementálne enkodéry merajú zmenu polohy rotujúceho prvku vzhľadom k svojej východiskovej polohy. Absolútne enkodéry dokážu zistiť aktuálnu polohu rotujúceho prvku bez ohľadu na jeho predchádzajúce polohy.

V našej aplikácií budeme využívať magnetický inkrementálny enkodér s dvoma halovými sondami. Zmenu magnetického poľa vytvára kotúč s troma magnetmi. Halova sonda tak zaznamená tri nábežné hrany na otáčku motora. Pri výpočte treba započítať aj prevodový pomer planétovej prevodovky motora, ktorý je 1:19. Hriadeľ motora za prevodovkou otáča 19x pomalšie ako motor.

1. Navrhnite hardvér procesora s perifériami.

  • V programe Vivado vytvorte nový projekt Lab_11. Pri vytváraní projektu použite namiesto výberu čipu výber podľa definície dosky Nexys-4.
  • Vytvorte základnú štruktúru procesora microblaze s prerušeniami, ktorý pripojte na hodinový a reset signál. Použite pomocný nástroj Run Block Automation a nakonfigurujte procesor podľa Obr. 5.
  • Vytvorte hardvér pre UART komunikáciu, pripojte aj prerušenie na vstupný blok radiča prerušení.



Takto sa sem píše obyčajný text.

Takto tučný, takto kurzíva.

Linky:



Obrázok vložíš takto:

 Súbor:FPGAchip.jpg  

všimni si, že je nektívny a treba ho potom nahrať kliknutím na odkaz.

Takto sa vkladajú jednoduché zdrojáky:

 Q <= tmp;
 QBAR <= not tmp;

Alebo aj takto cez záložky ak to má viac súborov:

library ieee;
use ieee. std_logic_1164.all;
use ieee. std_logic_arith.all;
use ieee. std_logic_unsigned.all;
 
entity SR_FF is
  PORT( S,R,CLOCK: in std_logic;
  Q, QBAR: out std_logic);
end SR_FF;
 
Architecture behavioral of SR_FF is

begin
 PROCESS(CLOCK)
 variable tmp: std_logic;
 begin
  if(CLOCK='1' and CLOCK'EVENT) then
  if(S='0' and R='0')then
  tmp:=tmp;
  elsif(S='1' and R='1')then
  tmp:='Z';
  elsif(S='0' and R='1')then
  tmp:='0';
  else
  tmp:='1';
  end if;
  end if;

  Q <= tmp;
  QBAR <= not tmp;

end PROCESS;

end behavioral;
from microbit import *

uart.init(baudrate=115200, bits=8, parity=None, stop=1)

while True:
    accX = accelerometer.get_x()
    
    uart.write('%d\r\n' % (accX))

    sleep(100)
    display.set_pixel(1,1,5)
    sleep(100)
    display.set_pixel(1,1,0)



A takto kľučové slová