PoC.misc.gearbox.up_dc

This module provides a upscaling gearbox with a dependent clock (dc) interface. It perfoems a ‘byte’ to ‘word’ collection. The default order is LITTLE_ENDIAN (starting at byte(0)). Input “In_Data” is of clock domain “Clock1”; output “Out_Data” is of clock domain “Clock2”. The “In_Align” is required to mark the starting byte in the word. An optional input register can be added by enabling (ADD_INPUT_REGISTERS = TRUE).

Assertions:

  • Clock periods of Clock1 and Clock2 MUST be multiples of each other.
  • Clock1 and Clock2 MUST be phase aligned (related) to each other.

Entity Declaration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
entity gearbox_up_dc is
  generic (
    INPUT_BITS            : positive        := 8;                           -- input bit width
    INPUT_ORDER           : T_BIT_ORDER     := LSB_FIRST;                   -- LSB_FIRST: start at byte(0), MSB_FIRST: start at byte(n-1)
    OUTPUT_BITS           : positive        := 32;                          -- output bit width
    ADD_INPUT_REGISTERS   : boolean         := FALSE                        -- add input register @Clock1
  );
  port (
    Clock1                : in  std_logic;                                  -- input clock domain
    Clock2                : in  std_logic;                                  -- output clock domain
    In_Align              : in  std_logic;                                  -- align word (one cycle high impulse)
    In_Data               : in  std_logic_vector(INPUT_BITS - 1 downto 0);  -- input word
    Out_Data              : out std_logic_vector(OUTPUT_BITS - 1 downto 0); -- output word
    Out_Valid             : out std_logic                                   -- output is valid
  );
end entity;