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

Subversion Repositories epc_rfid_transponder

[/] [epc_rfid_transponder/] [trunk/] [tag.vhd] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 erwing
-------------------------------------------------------------------------------
2
-------------------------------------------------------------------------------
3
--     Politecnico di Torino                                              
4
--     Dipartimento di Automatica e Informatica       
5
-------------------------------------------------------------------------------
6
-------------------------------------------------------------------------------     
7
--
8
--     File name      : tag.vhd 
9
--
10
--     Description    : top level of the whole architecture
11
--
12 3 erwing
--     Author         : Erwing R. Sanchez Sanchez <erwing.sanchez@polito.it>
13 2 erwing
--            
14
-------------------------------------------------------------------------------            
15
-------------------------------------------------------------------------------
16
 
17
library IEEE;
18
use IEEE.std_logic_1164.all;
19
library WORK;
20
use WORK.epc_tag.all;
21
 
22
 
23
entity EPCTAG is
24
  generic (
25
    LOG2_10_TARI_CK_CYC        : integer := 9;  -- Log2(clock cycles for 10 maximum TARI value) (def: Log2(490) = 9 @TCk=520ns)
26
    DELIMITIER_TIME_CK_CYC_MIN : integer := 22;  -- Min Clock cycles for 12,5 us delimitier
27
    DELIMITIER_TIME_CK_CYC_MAX : integer := 24;  -- Max Clock cycles for 12,5 us delimitier
28
    WordsRSV                   : integer := 8;
29
    WordsEPC                   : integer := 16;
30
    WordsTID                   : integer := 8;
31
    WordsUSR                   : integer := 256;
32
    AddrRSV                    : integer := 2;  -- 1/2 memory address pins
33
    AddrEPC                    : integer := 3;  -- 1/2 memory address pins
34
    AddrTID                    : integer := 2;  -- 1/2 memory address pins  
35
    AddrUSR                    : integer := 5;  -- 1/2 memory address pins (maximum)
36
    Data                       : integer := 16);  -- memory data width
37
  port (
38
    clk       : in  std_logic;
39
    rst_n     : in  std_logic;
40
    tdi       : in  std_logic;
41
    tdo       : out std_logic;
42
    Data_r    : out std_logic_vector(31 downto 0);
43
    CRC_r     : out std_logic_vector(15 downto 0);
44
    Pointer_r : out std_logic_vector(15 downto 0);
45
    RN16_r    : out std_logic_vector(15 downto 0);
46
    Length_r  : out std_logic_vector(7 downto 0);
47
    Mask_r    : out std_logic_vector(MASKLENGTH-1 downto 0);
48
    trm_cmd   : out std_logic_vector(2 downto 0);
49
    trm_buf   : out std_logic_vector(15 downto 0));
50
end EPCTAG;
51
 
52
architecture STRUCTURAL of EPCTAG is
53
 
54
  component receiver
55
    generic (
56
      LOG2_10_TARI_CK_CYC        : integer;
57
      DELIMITIER_TIME_CK_CYC_MIN : integer;
58
      DELIMITIER_TIME_CK_CYC_MAX : integer);
59
    port (
60
      clk       : in  std_logic;
61
      rst_n     : in  std_logic;
62
      tdi       : in  std_logic;
63
      en        : in  std_logic;
64
      CommDone  : out CommandInternalCode_t;
65
      Data_r    : out std_logic_vector(31 downto 0);
66
      CRC_r     : out std_logic_vector(15 downto 0);
67
      Pointer_r : out std_logic_vector(15 downto 0);
68
      RN16_r    : out std_logic_vector(15 downto 0);
69
      Length_r  : out std_logic_vector(7 downto 0);
70
      Mask_r    : out std_logic_vector(MASKLENGTH-1 downto 0));
71
  end component;
72
 
73
  component TagCtrl
74
    generic (
75
      WordsRSV : integer;
76
      WordsEPC : integer;
77
      WordsTID : integer;
78
      WordsUSR : integer;
79
      AddrRSV  : integer;
80
      AddrEPC  : integer;
81
      AddrTID  : integer;
82
      AddrUSR  : integer;
83
      Data     : integer);
84
    port (
85
      clk       : in  std_logic;
86
      rst_n     : in  std_logic;
87
      CommDone  : in  CommandInternalCode_t;
88
      Data_r    : in  std_logic_vector(31 downto 0);
89
      Pointer_r : in  std_logic_vector(15 downto 0);
90
      RN16_r    : in  std_logic_vector(15 downto 0);
91
      Length_r  : in  std_logic_vector(7 downto 0);
92
      Mask_r    : in  std_logic_vector(MASKLENGTH-1 downto 0);
93
      trm_cmd   : out std_logic_vector(2 downto 0);
94
      trm_buf   : out std_logic_vector(15 downto 0));
95
  end component;
96
 
97
 
98
 
99
  component transmitter
100
    port (
101
      clk     : in  std_logic;
102
      rst_n   : in  std_logic;
103
      trm_cmd : in  std_logic_vector(2 downto 0);
104
      trm_buf : in  std_logic_vector(15 downto 0);
105
      tdo     : out std_logic);
106
  end component;
107
 
108
 
109
  signal Data_ri    : std_logic_vector(31 downto 0);
110
  signal CRC_ri     : std_logic_vector(15 downto 0);
111
  signal Pointer_ri : std_logic_vector(15 downto 0);
112
  signal RN16_ri    : std_logic_vector(15 downto 0);
113
  signal Length_ri  : std_logic_vector(7 downto 0);
114
  signal Mask_ri    : std_logic_vector(MASKLENGTH-1 downto 0);
115
 
116
  signal rec_en    : std_logic;
117
  signal CommDone  : CommandInternalCode_t;
118
  signal trm_cmd_i : std_logic_vector(2 downto 0);
119
  signal trm_buf_i : std_logic_vector(15 downto 0);
120
 
121
begin
122
 
123
-- Enabling signals 
124
  rec_en <= '1';
125
-- Output signals
126
   Data_r    <= Data_ri;
127
  CRC_r     <= CRC_ri;
128
  Pointer_r <= Pointer_ri;
129
  RN16_r    <= RN16_ri;
130
  Length_r  <= Length_ri;
131
  Mask_r    <= Mask_ri;
132
  trm_cmd   <= trm_cmd_i;
133
  trm_buf   <= trm_buf_i;
134
 
135
 
136
  receiver_i : receiver
137
    generic map (
138
      LOG2_10_TARI_CK_CYC        => LOG2_10_TARI_CK_CYC,
139
      DELIMITIER_TIME_CK_CYC_MIN => DELIMITIER_TIME_CK_CYC_MIN,
140
      DELIMITIER_TIME_CK_CYC_MAX => DELIMITIER_TIME_CK_CYC_MAX)
141
    port map (
142
      clk       => clk,
143
      rst_n     => rst_n,
144
      tdi       => tdi,
145
      en        => rec_en,
146
      CommDone  => CommDone,
147
      Data_r    => Data_ri,
148
      CRC_r     => CRC_ri,
149
      Pointer_r => Pointer_ri,
150
      RN16_r    => RN16_ri,
151
      Length_r  => Length_ri,
152
      Mask_r    => Mask_ri);
153
 
154
  TagCtrl_i : TagCtrl
155
    generic map (
156
      WordsRSV => WordsRSV,
157
      WordsEPC => WordsEPC,
158
      WordsTID => WordsTID,
159
      WordsUSR => WordsUSR,
160
      AddrRSV  => AddrRSV,
161
      AddrEPC  => AddrEPC,
162
      AddrTID  => AddrTID,
163
      AddrUSR  => AddrUSR,
164
      Data     => Data)
165
    port map (
166
      clk       => clk,
167
      rst_n     => rst_n,
168
      CommDone  => CommDone,
169
      Data_r    => Data_ri,
170
      Pointer_r => Pointer_ri,
171
      RN16_r    => RN16_ri,
172
      Length_r  => Length_ri,
173
      Mask_r    => Mask_ri,
174
      trm_cmd   => trm_cmd_i,
175
      trm_buf   => trm_buf_i);
176
 
177
  transmitter_i: transmitter
178
    port map (
179
      clk     => clk,
180
      rst_n   => rst_n,
181
      trm_cmd => trm_cmd_i,
182
      trm_buf => trm_buf_i,
183
      tdo     => tdo);
184
 
185
end STRUCTURAL;
186
 
187
 
188
 
189
 

powered by: WebSVN 2.1.0

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