/ MaxInputPinsPerModule.vhd
MaxInputPinsPerModule.vhd
 1  library IEEE;
 2  use IEEE.std_logic_1164.all;  -- defines std_logic types
 3  use IEEE.STD_LOGIC_ARITH.ALL;
 4  use IEEE.STD_LOGIC_UNSIGNED.ALL;
 5  
 6  -- Copyright (C) 2007, Peter C. Wallace, Mesa Electronics
 7  -- http://www.mesanet.com
 8  --
 9  -- This program is is licensed under a disjunctive dual license giving you
10  -- the choice of one of the two following sets of free software/open source
11  -- licensing terms:
12  --
13  --    * GNU General Public License (GPL), version 2.0 or later
14  --    * 3-clause BSD License
15  -- 
16  --
17  -- The GNU GPL License:
18  -- 
19  --     This program is free software; you can redistribute it and/or modify
20  --     it under the terms of the GNU General Public License as published by
21  --     the Free Software Foundation; either version 2 of the License, or
22  --     (at your option) any later version.
23  -- 
24  --     This program is distributed in the hope that it will be useful,
25  --     but WITHOUT ANY WARRANTY; without even the implied warranty of
26  --     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  --     GNU General Public License for more details.
28  -- 
29  --     You should have received a copy of the GNU General Public License
30  --     along with this program; if not, write to the Free Software
31  --     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
32  -- 
33  -- 
34  -- The 3-clause BSD License:
35  -- 
36  --     Redistribution and use in source and binary forms, with or without
37  --     modification, are permitted provided that the following conditions
38  --     are met:
39  -- 
40  --         * Redistributions of source code must retain the above copyright
41  --           notice, this list of conditions and the following disclaimer.
42  -- 
43  --         * Redistributions in binary form must reproduce the above
44  --           copyright notice, this list of conditions and the following
45  --           disclaimer in the documentation and/or other materials
46  --           provided with the distribution.
47  -- 
48  --         * Neither the name of Mesa Electronics nor the names of its
49  --           contributors may be used to endorse or promote products
50  --           derived from this software without specific prior written
51  --           permission.
52  -- 
53  -- 
54  -- Disclaimer:
55  -- 
56  --     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
57  --     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
58  --     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
59  --     FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
60  --     COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
61  --     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
62  --     BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
63  --     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
64  --     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
65  --     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
66  --     ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
67  --     POSSIBILITY OF SUCH DAMAGE.
68  -- 
69  
70  use work.IDROMConst.all;
71  package MaxInputPinsPerModule is
72  	function MaxInputPinsPerModule(PD : PinDescType; Tag : std_logic_vector(7 downto 0))	return integer;
73  end MaxInputPinsPerModule;
74  
75  package body MaxInputPinsPerModule is
76  
77  	function MaxInputPinsPerModule(PD : PinDescType; Tag : std_logic_vector(7 downto 0))	return integer is 
78  	variable result: integer;
79  	begin
80  		result := 0;
81  		for i in 0 to MaxPins-1 loop
82  			if Tag = PD(i)(15 downto 8) then       -- if GTag matches
83  				if PD(i)(7) = '0' then					-- and its an input
84  					if PD(i)(5 downto 0) > result then	-- drop MSB and NMSB to allow 2 input types
85  						result := conv_integer(PD(i)(5 downto 0)); -- find max (63 max)
86  					end if;	
87  				end if;
88  			end if;
89  		end loop;
90  		return result;
91  	end;	
92  end MaxInputPinsPerModule;