--------------------------------------------------------------------------
--------------------------------------------------------------------------
--	File Name 	: ellip.v
--	Author(s)	: Rajiv Dutta
--	Affiliation	: Laboratory for Digital Design Environments
--			  Department of Electrical & Computer Engineering
--			  University of Cincinnati
--	Date Created	: September 1991.
--	Introduction	: Behavioral description of the Elliptic Wave
--			  Filter, written in a synthesizable subset of
--			  VHDL.
--	Source		: P. Paulin and many others used this example
--                        in their papers. Was a benchmark at the
--                        Highlevel Synthesis Workshops.
--
--	Disclaimer	: This comes with absolutely no guarantees of any
--			  kind (just stating the obvious ...)
--
--      Acknowledgement : The Distributed Synthesis Systems research at 
--                        the Laboratory for Digital Design Environments,
--                        University of Cincinnati, is sponsored in part 
--                        by the Defense Advanced Research Projects Agency 
--                        under order number 7056 monitored by the Federal 
--                        Bureau of Investigation under contract number 
--                        J-FBI-89-094.
--
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Use Work.functions.all;

entity elliptic is
   port(inp,sv2,sv13,sv18,sv26,sv33,sv38,sv39 : inout bit_vector(15 downto 0);
        over : out bit);
end elliptic;

architecture elliptic of elliptic is

begin

  P1: process
    variable  outpi, sv18i, sv38i : bit_vector(15 downto 0);
    variable rega, regb, regc, regd, rege,regf, regg, regh : integer := 2;
    variable op3, op32, op12, op20, op25, op21, op24 : bit_vector(15 downto 0);
    variable op19, op27, op11, op22,op29, op9, op30 : bit_vector(15 downto 0);
    variable op8, op31, op7, op10, op28, op41, op6 : bit_vector(15 downto 0);
    variable op15, op35, op40, op4, op16, op36 : bit_vector(15 downto 0);

	-- instruction.Execution
      begin
		op3 := inp + sv2;
		op32 := sv33 + sv39;
		op12 := op3 + sv13;
		op20 := op12 + sv26;
		op25 := op20 + op32;
		op21 := op25 * 2;
		op24 := op25 * 2;
		op19 := op12 + op21;
		op27 := op24 + op32;
		op11 := op12 + op19;
		op22 := op19 + op25;
		op29 := op27 + op32;
		op9 := op11 * 2;
		sv26 <= op22 + op27;
		op30 := op29 * 2;
		op8 := op3 + op9;
		op31 := op30 + sv39;
		op7 := op3 + op8;
		op10 := op8 + op19;
		op28 := op27 + op31;
		op41 := op31 + sv39;
		op6 := op7 * 2;
		op15 := op10 + sv18;
		op35 := sv38 + op28;
		outpi := op41 * 2; 
		op4 := inp + op6;
		op16 := op15 * 2;
		op36 := op35 * 2;
		sv39 <= op31 + outpi; 
		sv2 <= op4 + op8;
		sv18i := op16 + sv18;
		sv18 <= sv18i;
		sv38i := sv38 + op36;
		sv38 <= sv38i;
		sv13 <= op15 + sv18i;
		sv33 <= sv38i + op35;
	over <= '1';
	wait on inp;
     end process;

end elliptic;

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>