Rataser is a collection of unidirectional single-wire signal transmission protocols, suitable for use over various (dispersion) qualities of cables and fibres. The implementation of the sender and receiver functions is in generic VHDL. The protocols support clock and time distribution (rataclock), general signal distribution (ratasig), and (to-finalise) trigger distribution.
See README (included with download).
Rataclock simulation screenshots.
entity rataser_clock_send is generic (period_bits: integer ); port (clk: in std_logic; -- Input timestamp information, and auxilliary signals. tick_ns: in std_logic_vector(63 downto 0); aux_sigs: in std_logic_vector(4 downto 0); info_bit: in std_logic; -- Rataclock signal parameters. pulse_period_clks: in std_logic_vector(period_bits-1 downto 0); duty_low_min_clks: in std_logic_vector(period_bits-1 downto 0); duty_low_max_clks: in std_logic_vector(period_bits-1 downto 0); eight_slot: in std_logic; -- Clock and (optional) latency information. pulse_period_ns: in std_logic_vector(9 downto 0); message_delay_ns: in std_logic_vector(21 downto 0); -- The rataclock signal (with oscilloscope debug mark). transmit: out std_logic; transmit_sync: out std_logic ); end;
entity rataser_clock_recv is generic(period_bits: integer; num_last_edges: integer; max_skew_4phase_sample: string ); port (clk: in std_logic; clk90: in std_logic; -- The rataclock signal. receive: in std_logic; eight_slot: in std_logic; -- Resolving phase in clock-mode. expect_edge: in std_logic_vector(1 downto 0); last_edges: out std_logic_vector(num_last_edges*2-1 downto 0); use_auto_edge: in std_logic; auto_edge: out std_logic_vector(1 downto 0); -- (Optional) latency information. receive_delay_ns: in std_logic_vector(15 downto 0); -- Output timestamp, and auxilliary signals. tick_ns_lo: out std_logic_vector(31 downto 0); tick_ns_hi: out std_logic_vector(63 downto 32); aux_sigs: out std_logic_vector(4 downto 0); info_bit: out std_logic; msg_strobe: out std_logic; -- Synchronisation status. sync_status: out std_logic_vector(2 downto 0); sync_lost: out std_logic_vector(2 downto 0); bad_signals: out std_logic_vector(4 downto 0); clear_status: in std_logic; -- Clock information in clock-mode. pulse_period_clks: in std_logic_vector(period_bits-1 downto 0); clk_period_ns: in std_logic_vector(9 downto 0); ); end;
entity rataser_signals_send is port (clk: in std_logic; -- Input signals (only index 0 if single_symbol_mode). signals: in std_logic_vector(3 downto 0); -- Auxiliary information. info_bit: in std_logic; -- Transmission mode (1 or 4 signals). single_symbol_mode: in std_logic; -- Output serial signal (with oscilloscope debug mark). transmit: out std_logic := '0'; transmit_sync: out std_logic := '0' ); end;
entity rataser_signals_recv is port (fast_clk: in std_logic; fast_clk90: in std_logic; -- Input serial signal. receive: in std_logic; -- Output signals (only 0 if single_symbol_mode). signals: out std_logic_vector(3 downto 0); -- Auxiliary information. info_bit: out std_logic; -- Strobe signal. msg_strobe: out std_logic; -- Transmission mode. single_symbol_mode: in std_logic; -- Counter of bad bits. bad_bit_count: out std_logic_vector ); end;
Last modified: Tue 22 Mar 2022 08:45:03 CET 2022