# Autres langages > Autres langages > VHDL >  Echange de donnes HPS <-> FPGA via DMA

## Iradrille

Hello,

J'essaie de faire de la dtection de contours sur une vido.

En thorie, c'est simple :
*cot HPS* :
lire / dcoder une vido avec openCV (c'est compatible ARM je crois).
copier la vido: sdram -> sram (par block de x ko, ou ligne par ligne, ou frame par frame); DMA synchro avec des interruptions.
*
cot FPGA* :
traitement des donnes.

*FPGA ou HPS (je sais pas trop, un peu perdu)* :
copier le rsultat : sram -> sdram (pareil, par block de x ko, ou ligne par ligne, ou frame par frame); DMA synchro avec des interruptions.

En pratique par contre je suis compltement perdu.  ::D: 
Le traitement des donnes cot FPGA ne pose pas de problmes (c'est juste de l'algorithmie), et de toutes faons j'en suis pas encore l.
Par contre les copies, ou rien que linteraction HPS <-> FPGA, je bloque.

Qsys reste assez obsur mais je vois le principe et j'ai test quelques systmes avec un soft core NIOS II qui ont marchs du premier coup (presque  ::aie:: ).

Du coup j'essaie juste la premire partie : copier des donnes de la sdram vers le FPGA.

Mon systme (Qsys) :


Bridges de l'HPS :


Et les priphriques :

J'ai aucune ide de que qu'est cet norme tableau excel "Periph Mux Table", j'ai laiss tout par dfaut.

Niveau config HPS clock / DDR3, pas de problmes. Normalement ce que j'ai est bon.

Avec a, je devrais pouvoir copier des donnes de la ram vers un buffer sur le FPGA, puis lire la sram en debug via la connexion JTAG / UART. (Je crois ?)

Pour l'instant a compile (avec 200 warnings, mais a compile  ::aie:: ). Il me reste le placement des pins  faire et je pourrais tester a.

Mais j'ai un problme  ce niveau l.

Mon entit principale :


```

```

mem_ck et mem_ck_n forment une paire diffrentielle.

J'ai des warnings parce que j'ai pas attribu les pins encore (normal).
Au niveau des warnings mem_ck et mem_ck_n sont lists 1 fois.


Mais, ces signaux apparaissent en double dans le pin planner, et sont non assignables  ::aie:: 


Du coup, j'y comprend pas grand chose et Google est pas trs bavard l dessus.

Si quelqu'un  une piste je prend !  ::): 

Mon code complet, si jamais c'est utile : j'ai simplement copier / coller le template dinstanciation de Qsys

```

```

----------


## mith06

> Pour l'instant a compile (avec 200 warnings, mais a compile )


Un avantage des outils de synthese FPGA c'est qu'ils gnrent beaucoup de warning.
On peut donc voir tous les points suspicieux du design.

Un dsavantage des outils de synthese FPGA c'est qu'ils gnrent beaucoup de warning.
Il est donc difficile d'extraire les warnings pertinents dans tout le bruit de warning gnr...
200 Warnings cela ne me choque pas..

Sur certain FPGA (Arria V/Zynq) le contrleur DDR3 est en dur dans le Silicium. Les Pins sont donc fixes.
Ce warning sur ces pins non fixes n'est pas ncessairement pertinent...


Quand tu dits compil, tu veux dire synthse/placement/routage?
Ou bien compilation d'un logiciel?

----------


## Iradrille

> Un avantage des outils de synthese FPGA c'est qu'ils gnrent beaucoup de warning.
> On peut donc voir tous les points suspicieux du design.
> 
> Un dsavantage des outils de synthese FPGA c'est qu'ils gnrent beaucoup de warning.
> Il est donc difficile d'extraire les warnings pertinents dans tout le bruit de warning gnr...


Ouais, habitu du C++ j'aime bien les warnings (gnralement un warning == une erreur); mais l yen a plein d'inutile, genre "Warning (292013): Feature LogicLock is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature."...

Puis qu'est ce que c'est long  compiler aussi ><




> Sur certain FPGA (Arria V/Zynq) le contrleur DDR3 est en dur dans le Silicium. Les Pins sont donc fixes.
> Ce warning sur ces pins non fixes n'est pas ncessairement pertinent...


J'ai une De0 nano SoC (Cyclone V donc).
A priori le contrleur DDR3 est en dur. En tout cas a serait logique vu que seul l'HPS  accs  la RAM.

Ce qui m'inquite un peu c'est ce warning 

```
Warning (171167): Found invalid Fitter assignments. See the Ignored Assignments panel in the Fitter Compilation Report for more information.
```






> Quand tu dits compil, tu veux dire synthse/placement/routage?
> Ou bien compilation d'un logiciel?


Je parle de synthse / placement / routage. Le cot logiciel j'y suis pas encore.  :;): 

Gnration du systme sous Qsys (grave ? pas grave ?) : 


Et synthse/placement/routage : ~200 warnings.

Critical Warnings (grave ? pas grave ?) :


```

```

-> IO Assignment Warnings dans mon 1er post + plein de signaux auxquels il manque slew rate / drive strength.

Warnings :


```

```

----------


## mith06

Voici les warnings qui puent plus que les autres :




> Warning (10541): VHDL Signal Declaration warning at vid_system_rst_controller_001.vhd(55): used implicit default value for signal "reset_req" because signal was never assigned a value or an explicit default value. Use of implicit default value may introduce unintended design optimizations.
> 
> 
> Warning (332060): Node: CONNECTED_TO_clk_clk was determined to be a clock but was found without an associated clock assignment.
> 	Info (13166): Register vid_system:u0|vid_system_hps_0:hps_0|vid_system_hps_0_fpga_interfaces:fpga_interfaces|hps2fpga_light_weight~FF_3425 is being clocked by CONNECTED_TO_clk_clk
> 	Info (13166): Register vid_system:u0|vid_system_hps_0:hps_0|vid_system_hps_0_fpga_interfaces:fpga_interfaces|hps2fpga_light_weight~FF_3425 is being clocked by CONNECTED_TO_clk_clk
> 
> Warning (332056): PLL cross checking found inconsistent PLL clock settings:
> 	Warning (332056): Node: u0|pll_0|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0] was found missing 1 generated clock that corresponds to a base clock with a period of: 200.000
> 	Warning (332056): Node: u0|pll_0|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0] was found missing 1 generated clock that corresponds to a base clock with a period of: 200.000


En esprant aider
@+

----------

