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 2

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

powered by: WebSVN 2.1.0

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