Commit 072a4bc4 authored by Denia Bouhired-Ferrag's avatar Denia Bouhired-Ferrag

Renamed front panel leds to reflect n4egative logic. Added support for reading…

Renamed front panel leds to reflect n4egative logic. Added support for reading pcb version number from pcb. removed separate process and sequence to test inverter led's
parent 5ae766f3
......@@ -104,8 +104,8 @@ entity pts is
oterm_en_o : out std_logic_vector(5 downto 0);
-- Channel leds
led_front_o : out std_logic_vector(5 downto 0);
led_inv_o : out std_logic_vector(3 downto 0);
led_front_n_o : out std_logic_vector(5 downto 0);
led_front_inv_n_o : out std_logic_vector(3 downto 0);
led_rear_n_o : out std_logic_vector(5 downto 0);
-- SPI interface to on-board flash chip
......@@ -147,7 +147,8 @@ entity pts is
-- Switches
sw_gp_n_i : in std_logic_vector(7 downto 0);
sw_multicast_n_i : in std_logic_vector(3 downto 0);
-- PCB version recognition
pcbrev_i : in std_logic_vector(5 downto 0);
-- RTM lines
rtmm_i : in std_logic_vector(2 downto 0);
rtmp_i : in std_logic_vector(2 downto 0);
......@@ -175,6 +176,8 @@ architecture arch of pts is
-- Pulse counter register and load value types
type t_pcr is array (15 downto 0) of unsigned(31 downto 0);
type t_pcr_ldval is array (15 downto 0) of std_logic_vector(31 downto 0);
-- Pulse LED counter
type t_pulse_led_cnt is array(9 downto 0) of unsigned(18 downto 0);
--============================================================================
......@@ -332,7 +335,9 @@ architecture arch of pts is
-- Port for std_logic_vector field: 'Input termination enable' in reg: 'TER'
pts_ter_iterm_o : out std_logic_vector(5 downto 0);
-- Port for std_logic_vector field: 'Output termination enable' in reg: 'TER'
pts_ter_oterm_o : out std_logic_vector(5 downto 0)
pts_ter_oterm_o : out std_logic_vector(5 downto 0);
-- Port for std_logic_vector field: 'PCB version number' in reg: 'HWVERS'
pts_hwvr_hwvers_i : in std_logic_vector(5 downto 0)
);
end component pts_regs;
......@@ -347,7 +352,7 @@ architecture arch of pts is
-- Active high enable signal
en_i : in std_logic;
-- Delay, pulse width and frequency inputs, in number of clk_i cycles
-- Delay, pulse width and period inputs, in number of clk_i cycles
delay_i : in std_logic_vector(31 downto 0);
pwidth_i : in std_logic_vector(31 downto 0);
per_i : in std_logic_vector(31 downto 0);
......@@ -622,15 +627,16 @@ architecture arch of pts is
-- LED signals
signal cnt_halfsec : unsigned(23 downto 0);
signal led_seq : unsigned(4 downto 0);
signal max_led_seq : unsigned(4 downto 0);
signal pulse_led_en : std_logic;
signal stat_led_en : std_logic;
signal pulse_led_en_d0 : std_logic;
signal stat_led_en_d0 : std_logic;
signal front_led_en_risedge_p : std_logic;
signal stat_led_en_risedge_p : std_logic;
signal front_led_seq : std_logic_vector( 5 downto 0);
signal inv_led : std_logic_vector( 3 downto 0);
signal inv_led_seq : std_logic_vector( 3 downto 0);
signal front_led_seq : std_logic_vector( 9 downto 0);
--signal inv_led : std_logic_vector( 3 downto 0);
--signal inv_led_seq : std_logic_vector( 3 downto 0);
signal front_led : std_logic_vector( 9 downto 0);
signal front_led_cnt : t_pulse_led_cnt;
signal bicolor_led_state : std_logic_vector(23 downto 0);
......@@ -653,6 +659,7 @@ architecture arch of pts is
signal i2c_err_bit_rst_ld : std_logic;
signal rtm_lines : std_logic_vector(5 downto 0);
signal switches : std_logic_vector(7 downto 0);
signal pcb_version : std_logic_vector(5 downto 0);
signal line_front : std_logic_vector(5 downto 0);
signal line_inv : std_logic_vector(3 downto 0);
signal line_rear : std_logic_vector(5 downto 0);
......@@ -743,7 +750,7 @@ architecture arch of pts is
signal rear_trigs_a : std_logic_vector(5 downto 0);
signal rear_trigs : std_logic_vector(5 downto 0);
signal rear_trigs_redge_p : std_logic_vector(5 downto 0);
signal rs485_fs : std_logic_vector(5 downto 0);
signal rs485_fs : std_logic_vector(5 downto 0);
-- Pulse counter register signals
signal ipcr_ld : std_logic_vector(15 downto 0);
......@@ -918,6 +925,8 @@ begin
-- RTM lines combo
rtm_lines <= rtmp_i & rtmm_i;
switches <= not sw_gp_n_i;
-- PCB version
pcb_version <= pcbrev_i;
-- LSR signals
line_front <= not (ttl_n_i);
......@@ -975,7 +984,8 @@ begin
pts_lsr_frontinvfs_i => (others => '0'),
pts_lsr_rearfs_i => line_rear_fs,
pts_ter_iterm_o => iterm_en_o,
pts_ter_oterm_o => oterm_en_o
pts_ter_oterm_o => oterm_en_o,
pts_hwvr_hwvers_i => pcb_version
);
-- Implement the RST_UNLOCK bit
......@@ -1750,7 +1760,7 @@ end generate gen_rear_test_logic;
-- Finally, assign the outputs
rs485_oen_o <= rear_pulse_en;
rs485_o <= rear_pulses;
--============================================================================
-- Pulse counter registers, retaining values for pulse counters of both RS-485
-- and TTL pulse repetition tests.
......@@ -1920,13 +1930,87 @@ end generate gen_rear_test_logic;
if (cnt_halfsec = 9999999) then
cnt_halfsec <= (others => '0');
led_seq <= led_seq + 1;
if (led_seq = 24) then
if (led_seq = max_led_seq) then
led_seq <= (others => '0');
end if;
end if;
end if;
end if;
end process p_led_seq;
-- cycle 24 times for status leds
-- 30 times for pulse leds
max_led_seq <= to_unsigned(30,5) when pulse_led_en = '1' else to_unsigned(24,5);
-- Sequence the front-panel LEDs based on the sequence counter
front_led_seq <= "0000000001" when (pulse_led_en = '1') and (led_seq = 1) else
"0000000010" when (pulse_led_en = '1') and (led_seq = 2) else
"0000000100" when (pulse_led_en = '1') and (led_seq = 3) else
"0000001000" when (pulse_led_en = '1') and (led_seq = 4) else
"0000010000" when (pulse_led_en = '1') and (led_seq = 5) else
"0000100000" when (pulse_led_en = '1') and (led_seq = 6) else
"0001000000" when (pulse_led_en = '1') and (led_seq = 7) else
"0010000000" when (pulse_led_en = '1') and (led_seq = 8) else
"0100000000" when (pulse_led_en = '1') and (led_seq = 9) else
"1000000000" when (pulse_led_en = '1') and (led_seq = 10) else
"0000000001" when (pulse_led_en = '1') and (led_seq = 11) else
"0000000010" when (pulse_led_en = '1') and (led_seq = 12) else
"0000000100" when (pulse_led_en = '1') and (led_seq = 13) else
"0000001000" when (pulse_led_en = '1') and (led_seq = 14) else
"0000010000" when (pulse_led_en = '1') and (led_seq = 15) else
"0000100000" when (pulse_led_en = '1') and (led_seq = 16) else
"0001000000" when (pulse_led_en = '1') and (led_seq = 17) else
"0010000000" when (pulse_led_en = '1') and (led_seq = 18) else
"0100000000" when (pulse_led_en = '1') and (led_seq = 19) else
"1000000000" when (pulse_led_en = '1') and (led_seq = 20) else
"0000000001" when (pulse_led_en = '1') and (led_seq = 21) else
"0000000010" when (pulse_led_en = '1') and (led_seq = 22) else
"0000000100" when (pulse_led_en = '1') and (led_seq = 23) else
"0000001000" when (pulse_led_en = '1') and (led_seq = 24) else
"0000010000" when (pulse_led_en = '1') and (led_seq = 25) else
"0000100000" when (pulse_led_en = '1') and (led_seq = 26) else
"0001000000" when (pulse_led_en = '1') and (led_seq = 27) else
"0010000000" when (pulse_led_en = '1') and (led_seq = 28) else
"0100000000" when (pulse_led_en = '1') and (led_seq = 29) else
"1000000000" when (pulse_led_en = '1') and (led_seq = 30) else
"0000000000";
-- Sequence the inverter LEDs
-- inv_led_seq <= "0001" when (pulse_led_en = '1') and (led_seq = 7) else
-- "0010" when (pulse_led_en = '1') and (led_seq = 8) else
-- "0100" when (pulse_led_en = '1') and (led_seq = 9) else
-- "1000" when (pulse_led_en = '1') and (led_seq = 10) else
-- "0001" when (pulse_led_en = '1') and (led_seq = 17) else
-- "0010" when (pulse_led_en = '1') and (led_seq = 18) else
-- "0100" when (pulse_led_en = '1') and (led_seq = 19) else
-- "1000" when (pulse_led_en = '1') and (led_seq = 20) else
-- "0000";
-- Sequence the rear-panel LEDs based on the sequence counter
rear_led_seq <= "000001" when (pulse_led_en = '1') and (led_seq = 1) else
"000010" when (pulse_led_en = '1') and (led_seq = 2) else
"000100" when (pulse_led_en = '1') and (led_seq = 3) else
"001000" when (pulse_led_en = '1') and (led_seq = 4) else
"010000" when (pulse_led_en = '1') and (led_seq = 5) else
"100000" when (pulse_led_en = '1') and (led_seq = 6) else
"000001" when (pulse_led_en = '1') and (led_seq = 7) else
"000010" when (pulse_led_en = '1') and (led_seq = 8) else
"000100" when (pulse_led_en = '1') and (led_seq = 9) else
"001000" when (pulse_led_en = '1') and (led_seq = 10) else
"010000" when (pulse_led_en = '1') and (led_seq = 11) else
"100000" when (pulse_led_en = '1') and (led_seq = 12) else
"000001" when (pulse_led_en = '1') and (led_seq = 13) else
"000010" when (pulse_led_en = '1') and (led_seq = 14) else
"000100" when (pulse_led_en = '1') and (led_seq = 15) else
"001000" when (pulse_led_en = '1') and (led_seq = 16) else
"010000" when (pulse_led_en = '1') and (led_seq = 17) else
"100000" when (pulse_led_en = '1') and (led_seq = 18) else
"000001" when (pulse_led_en = '1') and (led_seq = 19) else
"000010" when (pulse_led_en = '1') and (led_seq = 20) else
"000100" when (pulse_led_en = '1') and (led_seq = 21) else
"001000" when (pulse_led_en = '1') and (led_seq = 22) else
"010000" when (pulse_led_en = '1') and (led_seq = 23) else
"100000" when (pulse_led_en = '1') and (led_seq = 24) else
"000000";
-- Light each LED red and green in a sequence, based on the sequence counter.
--
......@@ -1961,58 +2045,6 @@ end generate gen_rear_test_logic;
"100000000000000000000000" when (stat_led_en = '1') and (led_seq = 24) else
"000000000000000000000000";
-- Sequence the front-panel LEDs based on the sequence counter
front_led_seq <= "000001" when (pulse_led_en = '1') and (led_seq = 1) else
"000010" when (pulse_led_en = '1') and (led_seq = 2) else
"000100" when (pulse_led_en = '1') and (led_seq = 3) else
"001000" when (pulse_led_en = '1') and (led_seq = 4) else
"010000" when (pulse_led_en = '1') and (led_seq = 5) else
"100000" when (pulse_led_en = '1') and (led_seq = 6) else
"000001" when (pulse_led_en = '1') and (led_seq = 11) else
"000010" when (pulse_led_en = '1') and (led_seq = 12) else
"000100" when (pulse_led_en = '1') and (led_seq = 13) else
"001000" when (pulse_led_en = '1') and (led_seq = 14) else
"010000" when (pulse_led_en = '1') and (led_seq = 15) else
"100000" when (pulse_led_en = '1') and (led_seq = 16) else
"000000";
-- Sequence the inverter LEDs
inv_led_seq <= "0001" when (pulse_led_en = '1') and (led_seq = 7) else
"0010" when (pulse_led_en = '1') and (led_seq = 8) else
"0100" when (pulse_led_en = '1') and (led_seq = 9) else
"1000" when (pulse_led_en = '1') and (led_seq = 10) else
"0001" when (pulse_led_en = '1') and (led_seq = 17) else
"0010" when (pulse_led_en = '1') and (led_seq = 18) else
"0100" when (pulse_led_en = '1') and (led_seq = 19) else
"1000" when (pulse_led_en = '1') and (led_seq = 20) else
"0000";
-- Sequence the rear-panel LEDs based on the sequence counter
rear_led_seq <= "000001" when (pulse_led_en = '1') and (led_seq = 1) else
"000010" when (pulse_led_en = '1') and (led_seq = 2) else
"000100" when (pulse_led_en = '1') and (led_seq = 3) else
"001000" when (pulse_led_en = '1') and (led_seq = 4) else
"010000" when (pulse_led_en = '1') and (led_seq = 5) else
"100000" when (pulse_led_en = '1') and (led_seq = 6) else
"000001" when (pulse_led_en = '1') and (led_seq = 7) else
"000010" when (pulse_led_en = '1') and (led_seq = 8) else
"000100" when (pulse_led_en = '1') and (led_seq = 9) else
"001000" when (pulse_led_en = '1') and (led_seq = 10) else
"010000" when (pulse_led_en = '1') and (led_seq = 11) else
"100000" when (pulse_led_en = '1') and (led_seq = 12) else
"000001" when (pulse_led_en = '1') and (led_seq = 13) else
"000010" when (pulse_led_en = '1') and (led_seq = 14) else
"000100" when (pulse_led_en = '1') and (led_seq = 15) else
"001000" when (pulse_led_en = '1') and (led_seq = 16) else
"010000" when (pulse_led_en = '1') and (led_seq = 17) else
"100000" when (pulse_led_en = '1') and (led_seq = 18) else
"000001" when (pulse_led_en = '1') and (led_seq = 19) else
"000010" when (pulse_led_en = '1') and (led_seq = 20) else
"000100" when (pulse_led_en = '1') and (led_seq = 21) else
"001000" when (pulse_led_en = '1') and (led_seq = 22) else
"010000" when (pulse_led_en = '1') and (led_seq = 23) else
"100000" when (pulse_led_en = '1') and (led_seq = 24) else
"000000";
-- Then, we instantiate the LED controller and control it via the LED state
-- vector.
......@@ -2045,13 +2077,21 @@ end generate gen_rear_test_logic;
--============================================================================
-- Drive pulse LEDs
--============================================================================
led_front_o <= front_led_seq when (pulse_led_en = '1') else
front_led(5 downto 0);
led_inv_o <= inv_led_seq when (pulse_led_en = '1') else
tester_ctrl when (tester_vcc = '1') else
front_led(9 downto 6);
-- Drive front pulse LEDs
led_front_n_o <= not front_led_seq (5 downto 0) when (pulse_led_en = '1') else
not front_led(5 downto 0);
-- Drive front INV pulse LEDs
led_front_inv_n_o <= not front_led_seq (9 downto 6) when (pulse_led_en = '1') else
not front_led(9 downto 6);
led_rear_n_o <= not rear_led_seq when (pulse_led_en = '1') else
not rear_led(5 downto 0);
-- led_inv_o <= inv_led_seq when (pulse_led_en = '1') else
-- tester_ctrl when (tester_vcc = '1') else
-- front_led(9 downto 6);
--============================================================================
-- Drive unused outputs with safe values
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment