OpenCores
URL https://opencores.org/ocsvn/fir_wishbone/fir_wishbone/trunk

Subversion Repositories fir_wishbone

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /fir_wishbone
    from Rev 13 to Rev 14
    Reverse comparison

Rev 13 → Rev 14

/trunk/design/packages/pkg-dsp.vhdl
0,0 → 1,123
/* Tauhop Digital Signal Processing package.
Description
This implements common functions used in digital signal processing.
To Do:
Author(s):
- Daniel C.K. Kho, daniel.kho@opencores.org | daniel.kho@tauhop.com
Copyright© 2014 Authors and Tauhop Solutions. All rights reserved.
This source file may be used and distributed without
restriction provided that this copyright statement is not
removed from the file and that any derivative work contains
the original copyright notice and the associated disclaimer.
This source file is free software; you can redistribute it
and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation;
either version 2.1 of the License, or (at your option) any
later version.
This source is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Lesser General Public License for more
details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
This notice and disclaimer must be retained as part of this text at all times.
@dependencies:
@created: Daniel C.K. Kho [daniel.kho@gmail.com] | [daniel.kho@tauhop.com]
@info:
Revision History: @see Mercurial log for full list of changes.
*/
/* TODO try using generic subprograms to have a single subprogram being
passed generic types.
*/
library ieee; use ieee.std_logic_1164.all, ieee.numeric_std.all;
package dsp_specific is
function clamp(s:unsigned; low,high:unsigned) return unsigned;
function clamp(s:unsigned; low,high:natural) return unsigned;
function clamp(s:signed; low,high:signed) return signed;
function clamp(s:signed; low,high:integer) return signed;
function max(l,r:unsigned) return unsigned;
function max(l,r:signed) return signed;
function min(l,r:unsigned) return unsigned;
function min(l,r:signed) return signed;
end package dsp_specific;
 
package body dsp_specific is
function clamp(s:unsigned; low,high:unsigned) return unsigned is
variable clamped:unsigned(s'range);
begin
clamped:=low when s<low else high when s>high else s;
return clamped;
end function clamp;
function clamp(s:unsigned; low,high:natural) return unsigned is begin
return clamp(s,to_unsigned(low,s'length),to_unsigned(high,s'length));
end function clamp;
function clamp(s:signed; low,high:signed) return signed is
variable clamped:signed(s'range);
begin
clamped:=low when s<low else high when s>high else s;
return clamped;
end function clamp;
function clamp(s:signed; low,high:integer) return signed is begin
return clamp(s,to_signed(low,s'length),to_signed(high,s'length));
end function clamp;
function max(l,r:unsigned) return unsigned is begin
/* FIXME support this in next standard. */
--return r when r>l else l;
if r>l then return r; end if;
return l;
end function max;
function max(l,r:signed) return signed is begin
--return r when r>l else l;
if r>l then return r; end if;
return l;
end function max;
function min(l,r:unsigned) return unsigned is begin
--return r when r<l else l;
if r<l then return r; end if;
return l;
end function min;
function min(l,r:signed) return signed is begin
--return r when r<l else l;
if r<l then return r; end if;
return l;
end function min;
end package body dsp_specific;
 
 
library ieee; use ieee.std_logic_1164.all, ieee.numeric_std.all;
package dsp_generic is generic(
type T;
--function "+"(l,r:T) return T is <>;
--function "<"(l,r:T) return boolean is <>;
--function ">"(l,r:T) return boolean is <>;
--function ">"(l:T;r:natural) return boolean is <>;
--function clamp(s,low,high:T) return T is <>;
function clamp(s:T; low,high:natural) return T is <>
);
--function clamp generic(type T) parameter(s:T; low:T; high:T) return T;
end package dsp_generic;
 
package body dsp_generic is end package body dsp_generic;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.