Line 1... |
Line 1... |
-------------------------------------------------------------------------------------------------100
|
-------------------------------------------------------------------------------------------------100
|
--| Modular Oscilloscope
|
--| Modular Oscilloscope
|
--| UNSL - Argentine
|
--| UNSL - Argentine
|
--|
|
--|
|
--| File: ctrl_channel_selector.vhd
|
--| File: ctrl_channel_selector.vhd
|
--| Version: 0.3
|
--| Version: 0.31
|
--| Tested in: Actel A3PE1500
|
--| Tested in: Actel A3PE1500
|
--| Board: RVI Prototype Board + LP Data Conversion Daughter Board
|
--| Board: RVI Prototype Board + LP Data Conversion Daughter Board
|
--|-------------------------------------------------------------------------------------------------
|
--|-------------------------------------------------------------------------------------------------
|
--| Description:
|
--| Description:
|
--| CONTROL - Channel Selector
|
--| CONTROL - Channel Selector
|
Line 14... |
Line 14... |
--|-------------------------------------------------------------------------------------------------
|
--|-------------------------------------------------------------------------------------------------
|
--| File history:
|
--| File history:
|
--| 0.1 | jul-2009 | First testing
|
--| 0.1 | jul-2009 | First testing
|
--| 0.2 | jul-2009 | Added generic number of channel
|
--| 0.2 | jul-2009 | Added generic number of channel
|
--| 0.3 | jul-2009 | Added signal indicating when it's selecting the first channel
|
--| 0.3 | jul-2009 | Added signal indicating when it's selecting the first channel
|
|
--| 0.31 | aug-2009 | Generic width in channel_number
|
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
--| Copyright © 2009, Facundo Aguilera.
|
--| Copyright © 2009, Facundo Aguilera.
|
--|
|
--|
|
--| This VHDL design file is an open design; you can redistribute it and/or
|
--| This VHDL design file is an open design; you can redistribute it and/or
|
--| modify it and/or implement it after contacting the author.
|
--| modify it and/or implement it after contacting the author.
|
Line 25... |
Line 26... |
|
|
|
|
--==================================================================================================
|
--==================================================================================================
|
-- TODO
|
-- TODO
|
-- · Speed up...
|
-- · Speed up...
|
-- · Generic width in channel_number_O
|
-- OK Generic width in channel_number_O
|
--==================================================================================================
|
--==================================================================================================
|
|
|
|
|
library ieee;
|
library ieee;
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_1164.all;
|
Line 44... |
Line 45... |
generic(
|
generic(
|
CHANNEL_WIDTH: integer := 4 -- number of channels 2**CHANNEL_WIDTH, max. 4
|
CHANNEL_WIDTH: integer := 4 -- number of channels 2**CHANNEL_WIDTH, max. 4
|
);
|
);
|
port(
|
port(
|
channels_I: in std_logic_vector(integer(2**real(CHANNEL_WIDTH))-1 downto 0);
|
channels_I: in std_logic_vector(integer(2**real(CHANNEL_WIDTH))-1 downto 0);
|
channel_number_O: out std_logic_vector(3 downto 0);
|
channel_number_O: out std_logic_vector(CHANNEL_WIDTH-1 downto 0);
|
first_channel_O: out std_logic;
|
first_channel_O: out std_logic;
|
clk_I: in std_logic;
|
clk_I: in std_logic;
|
enable_I: in std_logic;
|
enable_I: in std_logic;
|
reset_I: in std_logic
|
reset_I: in std_logic
|
);
|
);
|
end entity channel_selector;
|
end entity ctrl_channel_selector;
|
|
|
|
|
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------------
|
architecture ARCH01 of ctrl_channel_selector is
|
architecture ARCH01 of ctrl_channel_selector is
|
Line 69... |
Line 70... |
signal plus: unsigned(CHANNEL_WIDTH downto 0);
|
signal plus: unsigned(CHANNEL_WIDTH downto 0);
|
begin
|
begin
|
|
|
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
-- Output
|
-- Output
|
channel_number_O <= (3 downto CHANNEL_WIDTH => '0') & std_logic_vector(channel);
|
channel_number_O <= std_logic_vector(channel);
|
--channel_number_O <= std_logic_vector(channel);
|
--channel_number_O <= std_logic_vector(channel);
|
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
-- Combinational selection of next channel
|
-- Combinational selection of next channel
|
|
|
-- P_comb: process(channel,channels_I)
|
-- P_comb: process(channel,channels_I)
|