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

Subversion Repositories epc_rfid_transponder

[/] [epc_rfid_transponder/] [trunk/] [TagCtrl.vhd] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 erwing
-------------------------------------------------------------------------------
2
--     Politecnico di Torino                                              
3
--     Dipartimento di Automatica e Informatica       
4
-------------------------------------------------------------------------------
5
-------------------------------------------------------------------------------     
6
--
7
--     File name      : tagCtrl.vhd 
8
--
9
--     Description    : top level of the tag control - Includes TagFSM.
10
--
11
--     Author         : Erwing R. Sanchez Sanchez <erwing.sanchezsanchez@polito.it>
12
-- 
13
--     Last change    : 11 October 06 - Erwing Sanchez          
14
--            
15
-------------------------------------------------------------------------------            
16
-------------------------------------------------------------------------------
17
 
18
library IEEE;
19
use IEEE.std_logic_1164.all;
20
library WORK;
21
use WORK.epc_tag.all;
22
 
23
entity TagCtrl is
24
  generic(
25
    WordsRSV : integer := 8;
26
    WordsEPC : integer := 16;
27
    WordsTID : integer := 8;
28
    WordsUSR : integer := 256;
29
    AddrRSV  : integer := 2;            -- 1/2 memory address pins
30
    AddrEPC  : integer := 3;            -- 1/2 memory address pins
31
    AddrTID  : integer := 2;            -- 1/2 memory address pins
32
    AddrUSR  : integer := 5;            -- 1/2 memory address pins (maximum)
33
    Data     : integer := 16);          -- memory data width
34
  port (
35
    clk       : in  std_logic;
36
    rst_n     : in  std_logic;
37
    -- Receiver
38
    CommDone  : in  CommandInternalCode_t;
39
    Data_r    : in  std_logic_vector(31 downto 0);
40
    Pointer_r : in  std_logic_vector(15 downto 0);
41
    RN16_r    : in  std_logic_vector(15 downto 0);
42
    Length_r  : in  std_logic_vector(7 downto 0);
43
    Mask_r    : in  std_logic_vector(MASKLENGTH-1 downto 0);
44
    -- Transmitter Command and Output buffer
45
    trm_cmd   : out std_logic_vector(2 downto 0);
46
    trm_buf   : out std_logic_vector(15 downto 0)
47
    );
48
end TagCtrl;
49
 
50
 
51
architecture struct of TagCtrl is
52
 
53
  component TagFSM
54
    generic (
55
      WordsRSV : integer;
56
      WordsEPC : integer;
57
      WordsTID : integer;
58
      WordsUSR : integer;
59
      AddrUSR  : integer;
60
      Data     : integer);
61
    port (
62
      clk       : in  std_logic;
63
      rst_n     : in  std_logic;
64
      CommDone  : in  CommandInternalCode_t;
65
      Data_r    : in  std_logic_vector(31 downto 0);
66
      Pointer_r : in  std_logic_vector(15 downto 0);
67
      RN16_r    : in  std_logic_vector(15 downto 0);
68
      Length_r  : in  std_logic_vector(7 downto 0);
69
      Mask_r    : in  std_logic_vector(MASKLENGTH-1 downto 0);
70
      SInvD     : out std_logic_vector(3 downto 0);
71
      SelD      : out std_logic;
72
      SInvQ     : in  std_logic_vector(3 downto 0);
73
      SelQ      : in  std_logic;
74
      SInvCE    : out std_logic_vector(3 downto 0);
75
      SelCE     : out std_logic;
76
      rng_init  : out std_logic;
77
      rng_cin   : out std_logic_vector(30 downto 0);
78
      rng_ce    : out std_logic;
79
      rng_cout  : in  std_logic_vector(30 downto 0);
80
      mem_WR    : out std_logic;
81
      mem_RD    : out std_logic;
82
      mem_RB    : in  std_logic;
83
      mem_BANK  : out std_logic_vector(1 downto 0);
84
      mem_ADR   : out std_logic_vector((2*AddrUSR)-1 downto 0);
85
      mem_DTI   : out std_logic_vector(Data-1 downto 0);
86
      mem_DTO   : in  std_logic_vector(Data-1 downto 0);
87
      T2ExpFlag : in  std_logic;
88
      trm_cmd   : out std_logic_vector(2 downto 0);
89
      trm_buf   : out std_logic_vector(15 downto 0));
90
  end component;
91
 
92
  component Mem_ctrl
93
    generic (
94
      WordsRSV : integer;
95
      WordsEPC : integer;
96
      WordsTID : integer;
97
      WordsUSR : integer;
98
      AddrRSV  : integer;
99
      AddrEPC  : integer;
100
      AddrTID  : integer;
101
      AddrUSR  : integer;
102
      Data     : integer);
103
    port (
104
      clk   : in  std_logic;
105
      rst_n : in  std_logic;
106
      BANK  : in  std_logic_vector(1 downto 0);
107
      WR    : in  std_logic;
108
      RD    : in  std_logic;
109
      ADR   : in  std_logic_vector((2*AddrUSR)-1 downto 0);
110
      DTI   : in  std_logic_vector(Data-1 downto 0);
111
      DTO   : out std_logic_vector(Data-1 downto 0);
112
      RB    : out std_logic);
113
  end component;
114
 
115
  component prng
116
    port (
117
      clk   : in  std_logic;
118
      rst_n : in  std_logic;
119
      init  : in  std_logic;
120
      cin   : in  std_logic_vector(30 downto 0);
121
      ce    : in  std_logic;
122
      cout  : out std_logic_vector(30 downto 0));
123
  end component;
124
 
125
  component InvSelFlagCtrl
126
    port (
127
      clk   : in  std_logic;
128
      rst_n : in  std_logic;
129
      S0in  : in  std_logic;
130
      S1in  : in  std_logic;
131
      S2in  : in  std_logic;
132
      S3in  : in  std_logic;
133
      SLin  : in  std_logic;
134
      S0en  : in  std_logic;
135
      S1en  : in  std_logic;
136
      S2en  : in  std_logic;
137
      S3en  : in  std_logic;
138
      SLen  : in  std_logic;
139
      S0out : out std_logic;
140
      S1out : out std_logic;
141
      S2out : out std_logic;
142
      S3out : out std_logic;
143
      SLout : out std_logic);
144
  end component;
145
 
146
 
147
  signal SInvD     : std_logic_vector(3 downto 0);
148
  signal SelD      : std_logic;
149
  signal SInvQ     : std_logic_vector(3 downto 0);
150
  signal SelQ      : std_logic;
151
  signal SInvCE    : std_logic_vector(3 downto 0);
152
  signal SelCE     : std_logic;
153
  signal rng_init  : std_logic;
154
  signal rng_cin   : std_logic_vector(30 downto 0);
155
  signal rng_ce    : std_logic;
156
  signal rng_cout  : std_logic_vector(30 downto 0);
157
  signal mem_WR    : std_logic;
158
  signal mem_RD    : std_logic;
159
  signal mem_RB    : std_logic;
160
  signal mem_BANK  : std_logic_vector(1 downto 0);
161
  signal mem_ADR   : std_logic_vector((2*AddrUSR)-1 downto 0);
162
  signal mem_DTI   : std_logic_vector(Data-1 downto 0);
163
  signal mem_DTO   : std_logic_vector(Data-1 downto 0);
164
  signal T2ExpFlag : std_logic := '0';
165
 
166
 
167
begin  -- struct
168
 
169
 
170
 
171
  TagFSM_i : TagFSM
172
    generic map (
173
      WordsRSV => WordsRSV,
174
      WordsEPC => WordsEPC,
175
      WordsTID => WordsTID,
176
      WordsUSR => WordsUSR,
177
      AddrUSR  => AddrUSR,
178
      Data     => Data)
179
    port map (
180
      clk       => clk,
181
      rst_n     => rst_n,
182
      CommDone  => CommDone,
183
      Data_r    => Data_r,
184
      Pointer_r => Pointer_r,
185
      RN16_r    => RN16_r,
186
      Length_r  => Length_r,
187
      Mask_r    => Mask_r,
188
      SInvD     => SInvD,
189
      SelD      => SelD,
190
      SInvQ     => SInvQ,
191
      SelQ      => SelQ,
192
      SInvCE    => SInvCE,
193
      SelCE     => SelCE,
194
      rng_init  => rng_init,
195
      rng_cin   => rng_cin,
196
      rng_ce    => rng_ce,
197
      rng_cout  => rng_cout,
198
      mem_WR    => mem_WR,
199
      mem_RD    => mem_RD,
200
      mem_RB    => mem_RB,
201
      mem_BANK  => mem_BANK,
202
      mem_ADR   => mem_ADR,
203
      mem_DTI   => mem_DTI,
204
      mem_DTO   => mem_DTO,
205
      T2ExpFlag => T2ExpFlag,
206
      trm_cmd   => trm_cmd,
207
      trm_buf   => trm_buf);
208
 
209
 
210
  Mem_ctrl_i : Mem_ctrl
211
    generic map (
212
      WordsRSV => WordsRSV,
213
      WordsEPC => WordsEPC,
214
      WordsTID => WordsTID,
215
      WordsUSR => WordsUSR,
216
      AddrRSV  => AddrRSV,
217
      AddrEPC  => AddrEPC,
218
      AddrTID  => AddrTID,
219
      AddrUSR  => AddrUSR,
220
      Data     => Data)
221
    port map (
222
      clk   => clk,
223
      rst_n => rst_n,
224
      BANK  => mem_BANK,
225
      WR    => mem_WR,
226
      RD    => mem_RD,
227
      ADR   => mem_ADR,
228
      DTI   => mem_DTI,
229
      DTO   => mem_DTO,
230
      RB    => mem_RB);
231
 
232
  prng_i : prng
233
    port map (
234
      clk   => clk,
235
      rst_n => rst_n,
236
      init  => rng_init,
237
      cin   => rng_cin,
238
      ce    => rng_ce,
239
      cout  => rng_cout);
240
 
241
  InvSelFlagCtrl_i : InvSelFlagCtrl
242
    port map (
243
      clk   => clk,
244
      rst_n => rst_n,
245
      S0in  => SInvD(0),
246
      S1in  => SInvD(1),
247
      S2in  => SInvD(2),
248
      S3in  => SInvD(3),
249
      SLin  => SelD,
250
      S0en  => SInvCE(0),
251
      S1en  => SInvCE(1),
252
      S2en  => SInvCE(2),
253
      S3en  => SInvCE(3),
254
      SLen  => SelCE,
255
      S0out => SInvQ(0),
256
      S1out => SInvQ(1),
257
      S2out => SInvQ(2),
258
      S3out => SInvQ(3),
259
      SLout => SelQ);
260
 
261
end struct;

powered by: WebSVN 2.1.0

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