OpenCores
URL https://opencores.org/ocsvn/saturn/saturn/trunk

Subversion Repositories saturn

[/] [saturn/] [trunk/] [IPCommunication/] [readmac.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 DavidRAMBA
--============================================================================= 
2
--  TITRE : READMAC
3
--  DESCRIPTION : 
4
--       Récupère le DNA du composant et génère l'adresse MAC du composant
5
 
6
--  FICHIER :        readmac.vhd 
7
--=============================================================================
8
--  CREATION 
9
--  DATE              AUTEUR    PROJET  REVISION 
10
--  10/04/2014  DRA        SATURN       V1.0 
11
--=============================================================================
12
--  HISTORIQUE  DES  MODIFICATIONS :
13
--  DATE              AUTEUR    PROJET  REVISION 
14
--  17/11/14   DRA      SATURN   V1.1
15
--             Suppression d'un coup de shift pour garder les 57 bits utiles en LSB
16
--=============================================================================
17
 
18
LIBRARY IEEE;
19
USE IEEE.STD_LOGIC_1164.ALL;
20
USE IEEE.STD_LOGIC_ARITH.ALL;
21
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
22
Library UNISIM;
23
use UNISIM.vcomponents.all;
24
 
25
ENTITY readmac IS
26
   GENERIC (
27
      -- Valeur utilisée pour la simulation
28
      sim_dna_value : STD_LOGIC_VECTOR(59 DOWNTO 0) :=  X"023456789ABCDEF");
29
   PORT (
30
      -- Ports système
31
      clk_sys  : IN  STD_LOGIC;  -- Clock système
32
      rst_n    : IN  STD_LOGIC;  -- Reset général système
33
 
34
      -- Résultat
35
      mac      : OUT  STD_LOGIC_VECTOR(63 downto 0);
36
      mac_rdy  : OUT  STD_LOGIC  -- Indique que l'adresse MAC a été récupérée
37
      );
38
END readmac;
39
 
40
ARCHITECTURE rtl of readmac is
41
   SIGNAL cptbit  : STD_LOGIC_VECTOR(5 downto 0);  -- compteur de bit
42
   SIGNAL shifter : STD_LOGIC_VECTOR(56 downto 0); -- Shifter pour réceptionner le DNA
43
   SIGNAL gnd     : STD_LOGIC;                     -- '0' logique
44
   SIGNAL read    : STD_LOGIC;                     -- Ordre de lecture du DNA
45
   SIGNAL read_r  : STD_LOGIC;                     -- Ordre de lecture retardé
46
   SIGNAL shift   : STD_LOGIC;                     -- Signal de shift d'un bit du DNA
47
   SIGNAL dout    : STD_LOGIC;                     -- Bit sorti du DNA
48
 
49
BEGIN
50
   gnd <= '0';
51
 
52
   --------------------------------------------
53
   -- Comptage des bits et registre à décalage
54
   --------------------------------------------
55
   inst_cpt : PROCESS(clk_sys, rst_n)
56
   BEGIN
57
      IF (rst_n = '0') THEN
58
         cptbit <= (OTHERS => '0');
59
         read <= '1';
60
         read_r <= '1';
61
         mac_rdy <= '0';
62
      ELSIF (clk_sys'EVENT AND clk_sys = '1') THEN
63
         read <= '0';
64
         read_r <= read;                     -- On assure que le signal de lecture à duré au moins 1 clk_sys
65
         IF (read_r = '0') THEN              -- Quand la lecture est finie
66
            IF (cptbit /= "111001") THEN     -- On shifte 57 bits
67
            -- Si on a pas récupéré les 57 bits
68
               shift <= '1';                 -- On ordonne le shift au DNA
69
               shifter <= shifter(55 DOWNTO 0) & dout;   -- On prend un bit de plus
70
               cptbit <= cptbit + 1;
71
            ELSE
72
            -- Si ona récupéré tous les bits
73
               shift <= '0';                 -- On annule le shift DNA
74
               mac_rdy <= '1';               -- On indique que le MAC est prêt
75
            END IF;
76
         END IF;
77
      END IF;
78
   END PROCESS;
79
   mac <= "1111111" & shifter;               -- DNA sur 57 bits et MAC sur 64
80
 
81
   -- Instantiation de la ressource DNA du FPGA
82
   dn_port_inst : DNA_PORT
83
   GENERIC MAP (
84
      sim_dna_value => TO_BITVECTOR(sim_dna_value)
85
   )
86
   port map (
87
      dout => dout,
88
      clk => clk_sys,
89
      din => gnd,
90
      read => read_r,
91
      shift => shift
92
   );
93
 
94
END rtl;
95
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.