Commit 220c7837 authored by Matthieu Cattin's avatar Matthieu Cattin

Fix bug in bicolor led controller.

The column signals where not properly driven, preventing to light the led independantly.
parent a54422fb
...@@ -112,6 +112,7 @@ architecture rtl of bicolor_led_ctrl is ...@@ -112,6 +112,7 @@ architecture rtl of bicolor_led_ctrl is
signal intensity_ctrl : std_logic; signal intensity_ctrl : std_logic;
signal line_oen_cnt : unsigned(c_LINE_OEN_CNT_NB_BITS - 1 downto 0); signal line_oen_cnt : unsigned(c_LINE_OEN_CNT_NB_BITS - 1 downto 0);
signal line_oen : std_logic_vector(2**c_LINE_OEN_CNT_NB_BITS - 1 downto 0); signal line_oen : std_logic_vector(2**c_LINE_OEN_CNT_NB_BITS - 1 downto 0);
signal led_state : std_logic_vector((g_NB_LINE * g_NB_COLUMN) -1 downto 0);
begin begin
...@@ -225,11 +226,15 @@ begin ...@@ -225,11 +226,15 @@ begin
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
-- Columns output -- Columns output
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
f_column_o : for I in 0 to g_NB_COLUMN - 1 generate f_led_state : for I in 0 to (g_NB_COLUMN * g_NB_LINE) - 1 generate
column_o(I) <= '0' when led_state_i(2 * I + 1 downto 2 * I) = c_LED_RED else led_state(I) <= '0' when led_state_i(2 * I + 1 downto 2 * I) = c_LED_RED else
'1' when led_state_i(2 * I + 1 downto 2 * I) = c_LED_GREEN else '1' when led_state_i(2 * I + 1 downto 2 * I) = c_LED_GREEN else
(line_ctrl and intensity_ctrl) when led_state_i(2 * I + 1 downto 2 * I) = c_LED_OFF else (line_ctrl and intensity_ctrl) when led_state_i(2 * I + 1 downto 2 * I) = c_LED_OFF else
not(line_ctrl and intensity_ctrl) when led_state_i(2 * I + 1 downto 2 * I) = c_LED_RED_GREEN; not(line_ctrl and intensity_ctrl) when led_state_i(2 * I + 1 downto 2 * I) = c_LED_RED_GREEN;
end generate f_led_state;
f_column_o : for C in 0 to g_NB_COLUMN - 1 generate
column_o(C) <= led_state(g_NB_COLUMN * to_integer(line_oen_cnt) + C);
end generate f_column_o; end generate f_column_o;
......
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