SystemC Development with CapsimTMK

Source Code biquad.h

biquad.h

Generated by XSLT script syscblkgen.xsl.

#ifndef BIQUAD // needed for multiple instantiations.
#define BIQUAD 
/* 
   Copyright (C) 2006-2007 Silicon DSP Corporation, Portland, Oregon
 This library 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 library 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 Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 http://capsimtmk.sourceforge.net
       */
       
       /*
Implements biquad.
       */
       
       /*
 
*/
     
/* 
   * SystemC code for block generated by Capsim
   */
   #include <stdio.h>
   #include <math.h>
     
SC_MODULE(biquad) {
sc_in_clk CLK;
       sc_in<bool> rst_n;
 
/* 
   * Input Signal Definitions
   */ 
   sc_in < float> x;
/* 
   * Output Signals 
   */ 
   sc_out < float > y;
/*
   * STATES 
   */ 
 float xs_A[3];
   float ys_A[3];
     
/* 
   * Parameters
   */ 
   float zsec1;
   float zsec2;
   float psec1;
   float psec2;
SC_CTOR(biquad) {
   SC_METHOD(entry);
   dont_initialize();
     
 /* 
   * sensitivity list
   */ 
   sensitive_pos(CLK);
   sensitive_neg << rst_n;
     
}
   void entry();
};
/* 
   * Entry Code 
   */
   void biquad::entry() {
 
/*
   * Declarations 
   */
   
     
if(!rst_n) {
/*
   * User Init Code 
   */
     
 
 xs_A[2]=0;
   xs_A[1]=0;
   xs_A[0]=0;
 ys_A[2]=0;
   ys_A[1]=0;
   ys_A[0]=0;
 
} else {
/* 
   * Main Code
   */
 
 float xx;
   float yy;
 xx=x.read();
   xs_A[2]=xs_A[1];
   xs_A[1]=xs_A[0];
   xs_A[0]=xx;
     
 yy=xs_A[0]+(zsec1*xs_A[1])+(zsec2*xs_A[2])-(psec1*ys_A[1])-(psec2*ys_A[2]);
     
 
 ys_A[2]=ys_A[1];
   ys_A[1]=yy;
   
   
   
   y.write(yy);
     
  
     
}
       }
 
#endif 

 

 


Contact | ©2007 Silcon DSP Corporation , Portland, Oregon