fpga comme co-processeur de xenomai/linux temps-réel ...jmfriedt.free.fr/presentation_zynq.pdf ·...
Post on 04-Aug-2020
8 Views
Preview:
TRANSCRIPT
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Communication CPU-FPGA
FPGA comme co-processeur deXenomai/Linux temps-reel - Presentation
Redpitaya/Zynq, bus de communications etcommunication CPU-FPGA
Gwenhael GOAVEC-MEROU
17 janvier 2019
Slides disponibles surhttp://www.trabucayre.com/enseignement/presentation_zynq.pdf
1 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Motivation• s’approprier le principe de communication entre un processeur et
des peripheriques materiels• ne se limite pas simplement a la communication CPU/FPGA →
vrai egalement entre un cœur et les peripheriques materiels d’unprocesseur.
2 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Rappel/acquisIntegration du bloc axi gpio dans le FPGA et exploitation depuis leprocesseur
DDR
FIXED_IO
axi_gpio_0
AXI GPIO
S_AXI
GPIOs_axi_aclk
s_axi_aresetn
led_o
processing_system7_0
ZYNQ7 Processing System
DDR
FIXED_IO
SPI_0
USBIND_0
M_AXI_GP0
TTC0_WAVE0_OUT
TTC0_WAVE1_OUT
TTC0_WAVE2_OUT
M_AXI_GP0_ACLK
FCLK_CLK0
FCLK_RESET0_N
processing_system7_0_axi_periph
AXI Interconnect
S00_AXI
M00_AXI
ACLK
ARESETN[0:0]
S00_ACLK
S00_ARESETN[0:0]
M00_ACLK
M00_ARESETN[0:0]
rst_processing_system7_0_125M
Processor System Reset
slowest_sync_clk
ext_reset_in
aux_reset_in
mb_debug_sys_rst
dcm_locked
mb_reset
bus_struct_reset[0:0]
peripheral_reset[0:0]
interconnect_aresetn[0:0]
peripheral_aresetn[0:0]
Rappel :
• Zynq Processing System : partie PS du Zynq ;
• Intercon : decodeur d’adresse ;
• axi gpio : un esclave AXI fournie par Xilinx
3 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Bus de communication
Deja vu : protocoles serie (SPI, I2C).Le sujet : protocoles paralleles.Utilises pour :
• la communication avec les composants de RAM, de stockage(NAND, NOR, (e)MMC, etc.) ;
• la communication entre un cœur de processeur et les controleursmateriels ;
• communication avec les FPGAs
Composes generalement :
• d’un bus d’adresse ;
• d’un ou deux bus de donnees (bi-directionnels ou maıtre-esclaveet esclave-maıtre) ;
• signaux de controles (requete de lecture/ecriture, validite de ladonnee, acquittement, interruption)
4 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Principe de fonctionnement
• un maıtre, n esclaves ;
• memoire utilisee comme une zone d’acces au peripherique ;
• memoire decoupee : chaque esclave dispose de sa propre zone etd’une sous adresse ;
Attention : les acces a la memoire sont alignes selon la taille (8bits,16, 32 ou 64)// ok : e c r i t u r e d ’ un s h o r t (16 b i t s ) a une a d r e s s e mu l t i p l e de 2 ( o c t e t s )pos = 0 x02 ; /∗ 1 << 1 ∗/∗( u n s i g n e d s h o r t∗) ( p t r f p g a+pos ) = 0 x01 ;
// f a i l e c r i t u r e d ’ un s h o r t (16 b i t s ) a une a d r e s s e mu l t i p l e de 1 ( o c t e t )pos = 0 x01 ; /∗ 1 << 0 ∗/∗( u n s i g n e d s h o r t∗) ( p t r f p g a+pos ) = 0 x01 ;
Un bus n octets n’implique pas obligatoirement des acces sur noctets :ex : controleur SPI sur STM32F3/4 : comportement different selon letype d’acces et la taille des donnees a transmettre.
5 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Environnement materiel
Le materiel utilise, une carte Redpitaya (base de Zynq).
Le meme boitier contientun SOC et un FPGA
Caracteristiques :
• processeur doublecœur Cortex A9 ;
• FPGA equivalentartix7.
Communications : AXI slave et AXI High-Performance
• 32 bits de donnees ;
• 32 bits d’adresse ;
• DMA (Direct Memory Access) avec l’AXI HP.
• interruptions ;
Methodologie egalement valable pour le bus wishbone et AVALON
6 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Architecture des designs
bloc design
IP2
IP1intercon
ZYNQ_wrapper
Axi
clk
reset
reset
axi
clk
reset
axi
clk
Structure interne :
• un wrapper pour le bloc design ;
• exportation du bus AXI, de l’horloge et du signal de reset ;
• decodeur d’adresse pour communiquer avec plusieurs blocs(IPs) : intercon
⇒ simplifie/accelere la phase de developpement d’IP.
Structure globale automatiquement generee par le logiciel Peripheral OnDemand 1 (Non traite dans ce TP).
1. http://github.com/martoni/periphondemand7 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Decoupage d’adresse etabstraction
Principe :
• des plages d’adresses (1 Gb)dediees au niveau CPU(adresse absolue) ;
• celle-ci est decoupee ensous-adresses pour adresserchaque bloc independamment(intercon : adresse relativeau debut de la plaged’adresse) ;
• ce sous espace est egalementdecoupe pour acceder auxregistres d’un bloc (geree parle bloc, relatif a son adressede base).
0x00
0x01
0x02
0x00
0x01blo
ck
2
FP
GA
Ad
dre
ss
blo
ck
1
0x04
0x00
reg1
reg1
reg2
reg3
reg2
Intercon viewCPU view component view
8 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Presentation bus AXI4 liteclk et reset : s00 axi aclk et s00 axi reset
Ecriture :
Adresse/controle :
• s00 axi awaddr
• s00 axi awvalid
• s00 axi awready
• s00 axi bresp
• s00 axi bvalid
• s00 axi bready
Donnees :
• s00 axi wdata
• s00 axi wvalid
• s00 axi wready
• s00 axi wstrb
Lecture :
Adresse/controle :
• s00 axi araddr
• s00 axi arvalid
• s00 axi arready
Donnees :
• s00 axi rdata
• s00 axi rvalid
• s00 axi rready
• s00 axi rresp
9 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Presentation bus AXI4 lite : read
Adresse :
• s00 axi araddr
• s00 axi arvalid
• s00 axi arready
Donnees :
• s00 axi rdata
• s00 axi rvalid
• s00 axi rready
• s00 axi rresp
10 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Presentation bus AXI4 lite : write
Adresse/controles :
• s00 axi awaddr
• s00 axi awvalid
• s00 axi awready
• s00 axi bresp
• s00 axi bvalid
• s00 axi bready
Donnees :
• s00 axi wdata
• s00 axi wvalid
• s00 axi wready
• s00 axi wstrb
11 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Gestion de la communicationUtilisation d’un wrapper pour confiner la partie complexe.
Gestion lecture :r e a d b l o c : p r o c e s s ( c l k , r e s e t )b e g i n
i f r e s e t = ’ 1 ’ thenr e a d d a t a s <= ( o t h e r s => ’ 0 ’ ) ;
e l s i f r i s i n g e d g e ( c l k ) thenr e a d d a t a s <= r e a d d a t a s ;i f r e a d e n s = ’ 1 ’ then
c a s e a d d r s i swhen REG ID =>
r e a d d a t a s <= s t d l o g i c v e c t o r (→↪→ t o u n s i g n e d ( id , d a t s i z e ) ) ;
when REG RESULT =>r e a d d a t a s <= r e s u l t s ;
when o t h e r s =>r e a d d a t a s <= ( o t h e r s => ’ 0 ’ ) ;
end c a s e ;end i f ;
end i f ;end p r o c e s s r e a d b l o c ;
Gestion ecriture :w r i t e b l o c : p r o c e s s ( c l k , r e s e t )b e g i n
i f r e s e t = ’ 1 ’ theno p 1 s <= ( o t h e r s => ’ 0 ’ ) ;o p 2 s <= ( o t h e r s => ’ 0 ’ ) ;
e l s i f r i s i n g e d g e ( c l k ) theno p 1 s <= o p 1 s ;o p 2 s <= o p 2 s ;
i f w r i t e e n s = ’ 1 ’ thenc a s e a d d r s i swhen REG OP1 =>
o p 1 s <= w r i t e d a t a ;when REG OP2 =>
o p 2 s <= w r i t e d a t a ;when o t h e r s =>end c a s e ;end i f ;
end i f ;end p r o c e s s w r i t e b l o c ;
12 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Outils pour le FPGA
Generation des binaires : Vivados o u r c e / opt / X i l i n x / Vivado /VERSION/ s e t t i n g s 6 4 . sh
Puis, pour lancer l’outil :v i v a d o&
Attention : les autres applications peuvent avoir des problemes a fonctionnerdans le terminal utilise pour Vivado (probleme de version des bibliotheques).
Generation du bit.bin :un fichier bif :a l l :{
p r o j d i r / o b j s / pro j name . r u n s / i m p l 1 / pro j name . b i t}
Generation : bootgen −w −image fichier.bif −arch zynq −process bitstream bin
Ensuite copie dans le repertoire partage.Sur la carte :
• copie du fichier bit.bin dans /lib/firmware
• flashage : echo ”proj name.bit . bin” > /sys/class/fpga manager/fpga0/firmware
Communication depuis le terminal : devmemdevmem 0 x43C00000 32 −−> r ead a 32 b i t s @0x43C00000 ( r eg 0)devmem 0 x43C00004 32 10 −−> w r i t e s 10 @ 0x43C00004 ( r eg 1)
13 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Communication depuisl’espace-utilisateur
#d e f i n e PAGE SIZE 4096
#d e f i n e REG ID (0<<2)#d e f i n e REG START (2<<2)
/∗ a d r e s s e phy s i que du FPGA ∗/#d e f i n e FPGA BASE ADDR 0 x43C00000
[ . . . ]v o i d ∗p t r f p g a ;/∗ n e c e s s a i r e pour o b t e n i r un acce s a l a memoire ∗/i n t f d = open ( "/dev/mem" , O RDWR|O SYNC) ;i f ( f d < 0) {
r e t u r n EXIT FAILURE ;}
/∗ ob t e n t i o n d ’ un p o i n t e u r s u r l a page en memoire v i r t u e l l e∗ ou e s t p r o j e t e l a zone phy s i que∗/
p t r f p g a = mmap( 0 , PAGE SIZE , PROT READ|PROT WRITE , MAP SHARED,fd , FPGA BASE ADDR) ;
i f ( p t r f p g a == MAP FAILED) {r e t u r n −2;
}
/∗ l e c t u r e ∗/v a l u e = ∗( u n s i g n e d i n t ∗) ( p t r f p g a + REG ID ) ;
/∗ e c r i t u r e ∗/∗( u n s i g n e d i n t ∗) ( p t r f p g a + REG START) = 0 x01 ;
14 / 15
FPGA commeco-processeur deXenomai/Linux
temps-reel
G. GOAVEC-MEROU
Mise en application
1 decouverte de la communication : acces en lecture et ecritureaux registres
2 evolution pour ajouter un registre ;
3 acces a une RAM pour en lire le contenu :
4 reprise des applications Xenomai ;
5 creation du compteur de periode.
Utilisation du FPGA (temps-reel materiel) pour qualifier leslatences de Xenomai (temps-reel logiciel).
Sujet disponible surhttp://www.trabucayre.com/enseignement/tp_fpga.pdf
Codes disponibles surhttp://www.trabucayre.com/enseignement/tp_fpga_sources.tgz
15 / 15
top related