Jump to content
  • 0

Communication à travers le shield de la carte Arty


zazou

Question

Bonjour à tous, 

mon projet à pour but de communiquer ma carte Arty z7-20 avec le ship TLC5940 afin de pouvoir allumer des Leds RGB, donc pour commencer je me demande est-ce que c'est faisable ? et quels sont les pistes que je devrai suivre ? 

MErci en avance ^_^ 

(translated by JColvin via Google Translate):

Hello everyone,

my project aims to communicate my card Arty z7-20 with the ship TLC5940 in order to light RGB Leds, so to begin I wonder is it feasible? and what are the tracks that I will have to follow?

Thank you in advance

Edited by JColvin
added english translation
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Hi @zazou,

Electrically the TLC5940 should work without an issue with the Arty-z7-20. You will need to make your own serial controller in hdl(verilog/vhdl) to interact with the TLC5940. You can make a full hdl(verilog/vhdl) design or have the serial controller connect to the zynq processor through the axi using the add module function in vivado. I am not sure if the zynq processor design will reach the desired 30 MHZ serial communication. A full HDL design will reach the desired 30 MHZ serial communication.

thank you,

Jon

Link to comment
Share on other sites

  • 0

@jpeyron 

Bonjour, 

merci pour votre reponse, j'ai essayé de programmer en vhdl les blocs utiles pour communiquer avec le TLC5940, j'ai bien une simulation fonctionnelle mais au niveau de l'implémentation je visualise rien, ..

et pour la conception hdl je ne sais pas quels blocs je doisi mettre, avez vous une idée? qu'est ce que je dois mettre essentiellement?

 

merci, 

<Translated on via Google Translate by JColvin>

@jpeyron

Hello,

thank you for your answer, I tried to program in vhdl the blocks useful to communicate with the TLC5940, I have a functional simulation but at the level of the implementation I visualize nothing, ..

and for the design hdl I do not know which blocks I must put, do you have an idea? what should I put essentially?

thank you,

Link to comment
Share on other sites

  • 0

Hi @zazou,

Here is a forum thread that discusses using the add a module and the gpio ip core process. Could you be more specific about the project are you trying to making a pure vhdl project using the switches or buttons to control the TLC5940 or are you trying to use the zynq processor with the add a module and gpio ip core to control the TLC5940 in sdk?

thank you,

Jon 

Link to comment
Share on other sites

  • 0

Bonjour, 

l'idée de mon projet est programmer un code qui traite les images ou un flux vidéo recu par l'entrée HDMI de la carte fpga qui sera liée à un moteur pour avoir la projection de ce flux video en 3D (en tenant compte de la vitesse de rotation et controle moteur) à travers les leds liée aux TLC5940,

j'ai réussi à faire la lisaison entre fpga et  TLC5940, j'ai fait l'implémentation avec un code en vhdl sans utilisé les blocs IPs et le processeur Zynq, 

du coup, à quoi sert d'utiliser le processeur zynq ? 

si vous avez d'autre idée pour traiter le projet je serai reconnaissante;

je vous remerci en avance, 

<Translated on via Google Translate by Jpeyronn>

Hello,

the idea of my project is to program a code which processes the images or a video stream received by the HDMI input of the fpga card which will be linked to an engine to have the projection of this video stream in 3D (taking into account the rotation speed and motor control) through the LEDs linked to the TLC5940,

I managed to make the link between fpga and TLC5940, I made the implementation with vhdl code without using the IPs blocks and the Zynq processor,

So, what is the use of the zynq processor?

if you have any other idea to deal with the project I will be grateful;

I thank you in advance,

 

Link to comment
Share on other sites

  • 0

Hi @zazou,

The zynq processor can make dev work easier especially for those that are more comfortable with microprocessors and c/c++ coding. It also helps make more complex components easier to work with like ethernet and ddr3 that are directly connected to the arm processors.  The Arty-Z7-20 has an zynq hdmi in project already completed on the resource center here .

cheers,

Jon

Link to comment
Share on other sites

  • 0

bonjour @jpeyron 

merci pour vos explications, j'ai un petit probleme avec la carte arty z7-20, en fait j'ai écrit le code en vhdl et j'ai essayé de l'implémenter mais toujours pas de résultat au niveau de la carte ! (le code est juste en bas)

pour l'utilisation du zynq processor je ne sais quels blocs exactement je doit integré ! help :( 

voici le code :

<Translated on via Google Translate by Jpeyron>

thank you for your explanations, I have a small problem with the card arty z7-20, in fact I wrote the code in vhdl and I tried to implement it but still no result at the map! (the code is right below)

for the use of the zynq processor I do not know which blocks exactly I must integrate! help :(

 here is the code:

 

Spoiler

 

----------------------------------------------------------------------------------

entity test is
    Port ( 
           clk          : in STD_LOGIC ;
           VPRG         : out STD_LOGIC ;
           gsclk        : out STD_LOGIC ;
           Xlat         : out STD_LOGIC ;
           Blank        : out STD_LOGIC ;
           Signal_Send  : out STD_LOGIC ;
           sclk         : out STD_LOGIC  );
end test;

architecture Behavioral of test is


type machine is (Start_TLC, Loop_TLC) ;
signal etat_1 : machine ;


type tableau is array (0 to 144 ) of integer range 0 to 11 ; 
signal valeur : tableau  ; 

constant valeur0 : integer  := 255 ;
constant valeur1 : integer  := 0 ;
constant valeur2 : integer  := 255 ;
constant valeur3 : integer  := 0 ;
constant valeur4 : integer  := 255 ;
constant valeur5 : integer  := 0 ;
constant valeur20 : integer  := 150 ;
constant valeur40 : integer  := 150 ;
constant valeur50 : integer  := 150 ;
constant valeur144 : integer  := 150 ;

------------------------------------------------------------------------------------------------------
--                                  parametres locals 
---------------------------------------------------------------------------------------------------------
constant clk_gsclk : time := 100 ns;                            --------------------- Freq GSCLK = 21 * Freq SCLK
constant clk_sclk : time := 2100 ns; 

signal i : integer range 0 to 4096 ;
constant nbr_Leds_TLC : integer := 16;                       --------------------- dans une pale on a 9 TLC 
signal TLC_Color : integer range 0 to 2 := 0;                --------------------- chaque TLC_Color 16 led = 1 TLC
signal Signal_Table_Bit : std_logic_vector (11 downto 0) ;
signal  Bits_12_Led : integer range 0 to 11 := 0; 
signal  Leds: integer range 0 to 144 := 0;  
signal GS_counter : integer range 0 to 4096 ;

signal counter : integer range 0 to 27791 ;
------------------------------------------------------------------------------------------------------
--                                  programme
---------------------------------------------------------------------------------------------------------
begin

P1 :process (valeur)   ---------------------------------------- process remplir Signal_Send
variable j : integer := 0;

  begin 
    for j in 0 to 144 loop
        valeur(j) <= 0;
    end loop ;
    valeur(0) <= valeur0 ;
    valeur(1) <= valeur1 ;
    valeur(2) <= valeur2 ;
    valeur(3) <= valeur3 ;
    valeur(4) <= valeur4 ;
    valeur(5) <= valeur5 ;
    valeur(20) <= valeur20 ;
    valeur(40) <= valeur40 ;
    valeur(50) <= valeur50 ;
    valeur(144) <= valeur144 ;
end process;

P2 : process (clk) ------------------------------------------------  process affichage Signal_Send

begin 

    if clk'event and clk = '1'  then 
      
        case etat_1 is 
                   
              when Start_TLC => 
                    --initialisation des variables       
                    counter <= 0;
                    Leds<= 0;  
                    Bits_12_Led <= 0 ; 
                    TLC_Color <= 0 ; 
                    Signal_Table_Bit <= conv_std_logic_vector (valeur(Leds) * 4095 / 255 ,12) ;  
                    etat_1 <= Loop_TLC;

              when Loop_TLC =>
    
                    --traitement sortie NBR_TLC et TLC_Color    
                    Bits_12_Led <= Bits_12_Led +1 ; 
                    Signal_Send <= Signal_Table_Bit(Bits_12_Led) ;  
                    -- Changement led
                    if Bits_12_Led = 11 then           
                       Bits_12_Led <= 0 ;   
                       Leds <=  Leds+ 1;  
                       Signal_Table_Bit <= conv_std_logic_vector (valeur(Leds) * 4095/255,12) ;                           
                       
                        -- Changement TLC -> 16 Leds envoye
                        if ((Leds +1) MOD nbr_Leds_TLC = 0) then
                            TLC_Color <= TLC_Color +1 ;
                            Xlat <= '1' ;
                            if TLC_Color = 2 then 
                                TLC_Color <= 0 ;
                            end if   ;
                        else Xlat <= '0' ;
                        end if ;            
                        
                        if  ( Leds = 144) then
                             Leds<= 0;
                        end if;      
                    else
                    Xlat <= '0' ;
                    etat_1 <= Loop_TLC;
                    end if ;                                  
         end case ; 

         if counter = 27792 then 
            counter <= 0 ;
         else 
         counter <= counter + 1 ;
         end if ;
end if ;
end process ;

   
P3 : process  ------------------------------------------------  process Clock GSCLK

begin    
    for i in 0 to 4096 loop
        gsclk <= '1' ;
        wait for clk_gsclk/2 ;
        gsclk <= '0' ;
        wait for clk_gsclk/2 ; 
    
    if i = 4096 then 
        blank <= '1' ;
    else 
        blank <= '0' ; 
    end if ;
    
    end loop;
              
end process ; 

P4 :    process ------------------------------------------------  process Clock SCLK
         begin 
            
            sclk <= '1' ;
            wait for clk_sclk/2 ;
            sclk <= '0' ;
            wait for clk_sclk/2 ;
              
end process ; 

end Behavioral ;

 

 

Link to comment
Share on other sites

  • 0

bonjour @ jpeyron

oui exactement,

Mais ce que je  comprends pas, c'est que j'ai implémenter le code dans FPGA et j'ai visualisé les signaux à travers un oscilloscope mais pas sur les Leds liés à la carte. est ce que normal?

Merci,

<translation added by JColvin>

Hello @ jpeyron

Yes exactly,

But what I do not understand is that I implement the code in FPGA and I visualized the signals through an oscilloscope but not on the LEDs linked to the card. is that normal?

thank you,

Edited by JColvin
added english translation
Link to comment
Share on other sites

  • 0

Hi @zazou,

can you also include your xdc you are using? I also changed a couple of things in your VHDL code. Here is a project done in Vivado 2017.4 that uses the add a module to the zynq design. I created one port to show how to do it but left the rest to you to set up. Here is an xilinx forum thread that talks about using the add a module process.

thank you,

Jon

Link to comment
Share on other sites

  • 0

Bonjour @jpeyron

je vous remercie pour votre aide, Les Leds sont bien allumées maintenant il me reste que travaillé sur la transformation d'une image en coordonnées cartesiennes en cordonnées polaire, je reviens vers vous si j'aurai des questions :) Merci beaucoup !

best regards, 

Zazou

 

<translation added by JColvin via Google Translate>

Hello @jpeyron

I thank you for your help, The LEDs are on now I still have worked on the transformation of an image in Cartesian coordinates in polar coordinates, I come back to you if I have questions :) Thank you very much!

best regards,

Zazou

Edited by JColvin
added english translation
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...