URL
https://opencores.org/ocsvn/keyboardcontroller/keyboardcontroller/trunk
Subversion Repositories keyboardcontroller
[/] [keyboardcontroller/] [trunk/] [Strober.vhd] - Rev 8
Go to most recent revision | Compare with Previous | Blame | View Log
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.Constants.all; entity Strober is port (reset, clk : in std_logic; strobe : in std_logic; sample : in std_logic; env_col : in col; env_row : out row; sample_col : out col; --rows and cols to be analysed sample_row_number : out row_number ); end Strober; architecture Strober_arc of Strober is function decode_row(inp: row_number) return row is variable rowstrobe : row; begin case inp is when 11 => rowstrobe := "011111111111"; when 10 => rowstrobe := "101111111111"; when 9 => rowstrobe := "110111111111"; when 8 => rowstrobe := "111011111111"; when 7 => rowstrobe := "111101111111"; when 6 => rowstrobe := "111110111111"; when 5 => rowstrobe := "111111011111"; when 4 => rowstrobe := "111111101111"; when 3 => rowstrobe := "111111110111"; when 2 => rowstrobe := "111111111011"; when 1 => rowstrobe := "111111111101"; when 0 => rowstrobe := "111111111110"; when others => rowstrobe := "111111111111"; end case; return rowstrobe; end decode_row; begin strober: process variable row_counter : integer; begin wait until rising_edge(clk); if (reset = '1') then env_row <= "111111111111"; row_counter := 0; elsif (strobe = '1') then if (row_counter < number_of_cols-1) then row_counter := row_counter + 1; elsif(row_counter = number_of_cols-1)then row_counter := 0; end if; env_row <= decode_row(row_counter); elsif (sample ='1') then --first sample sample_row_number <= row_counter; sample_col <= not env_col; end if; end process; end strober_arc;
Go to most recent revision | Compare with Previous | Blame | View Log