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 3

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

powered by: WebSVN 2.1.0

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