RFID之UID

时间:2024-01-09 21:41:14

1  Unique identifier (UID)

  The VICCs are uniquely identified by a 64 bits unique identifier (UID). This is used for addressing each VICC uniquely and individually, during the anticollision loop and for one-to-one exchange between a VCD and a VICC.

  The UID shall be set permanently by the IC manufacturer in accordance with figure 1.

  RFID之UID

  The UID comprises

  • The 8 MSB bits shall be 'E0',

  • The IC manufacturer code, on 8 bits according to ISO/IEC 7816-6/AM1,

  • A unique serial number on 48 bits assigned by the IC manufacturer.

2  Example

 entity uid15963 is
port
(
RST : in std_logic; --! Async Reset
C : in std_logic; --! Clock
CE : in std_logic; --! Enable
BCNT : in std_logic_vector( downto ); --! byte counter
MANUFACT : in std_logic_vector( downto ); --! Manufacture-Code from EEPROM
SERIAL : in std_logic_vector( downto ); --! Serial number from EEPROM
BYTE : in std_logic_vector( downto ); --! Data byte input
UIDVALID : out std_logic;  --! UID is OK
MFCVALID : out std_logic --! MANUFACT is OK (for custom commands)
);
end uid15963;
signal c_valid : std_logic;                --current validation
signal n_valid : std_logic; --next validation signal compare : std_logic_vector( downto ); --compare results begin --! It's an D-Reset-Flip-Flop with enable ...
pff: process (RST,C)
begin
if RST = '' then
c_valid <= '';
MFCVALID <= '';
elsif C'event and C = '' then
if CE = '' then
if BCNT = "" then
c_valid <= n_valid;
MFCVALID <= compare();
else
c_valid <= c_valid and n_valid;
end if;
end if;
end if;
end process; UIDVALID <= c_valid; compare() <= '' when BYTE = X"E0" else '';
compare() <= '' when BYTE = MANUFACT else '';
compare() <= '' when BYTE = SERIAL( downto ) else '';
compare() <= '' when BYTE = SERIAL( downto ) else '';
compare() <= '' when BYTE = SERIAL( downto ) else '';
compare() <= '' when BYTE = SERIAL( downto ) else '';
compare() <= '' when BYTE = SERIAL( downto ) else '';
compare() <= '' when BYTE = SERIAL( downto ) else ''; with BCNT select
n_valid <= compare() when "",
compare() when "",
compare() when "",
compare() when "",
compare() when "",
compare() when "",
compare() when "",
compare() when others;