⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dgn.h

📁 SEED的VPM642测试程序-板级支持库
💻 H
字号:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/* "@(#) DSP/BIOS 4.90.270 12-18-03 (barracuda-o04)" */
/*
 *  ======== dgn.h ========
 *  Generator Device Module Interface
 *
 */

#ifndef DGN_
#define DGN_


#include <dev.h>
#include <sys.h>

#ifdef __cplusplus
extern "C" {
#endif

extern DEV_Fxns DGN_FXNS;

#ifdef _FLOAT_

/*
 *  ======== DGN_Params ========
 */
typedef struct {		/* device parameters */
    struct {
	Float value;		/* constant value */
    } constant;
    struct {
	LgUns    seed;		/* seed value */
	Float   lower;		/* lower limit of generator */
	Float	upper;		/* upper limit of generator */
    } rand;
    struct {
	Float gain;		/* gain */
	Float freq;		/* frequency (cycles / sec) */
	Float phase;		/* phase (in radians) */
	LgUns  rate;		/* sample rate (samples / sec) */
    } sine;
    struct {
	Fxn	fxn;		/* user function */
	Arg	arg;		/* and argument */
    } user;
} DGN_Params;

extern DGN_Params DGN_PARAMS;		/* default parameter values */

typedef struct DGN_GenObj {	
    Fxn		fxn;
    Arg		arg;
    Int		seed;		/* current seed value */
    Int		count;		/* number of sine values generated */
    DGN_Params	*dparams;	/* parameters */
} DGN_GenObj;

extern Void DGN_fconst(DGN_GenObj *gen, Float *addr, Uns size);
extern Void DGN_frand(DGN_GenObj *gen, Float *addr, Uns size);
extern Void DGN_fsine(DGN_GenObj *gen, Float *addr, Uns size);
extern Void DGN_user(DGN_GenObj *gen, Ptr addr, Uns size);

/*
 * Function address size is LgUns for 54f,55 and 28
 */
#if (defined(_54_) && defined(_FAR_MODE)) || defined(_55_) || defined(_28_)
#define DGN_CONST	(LgUns)DGN_fconst	/* constant series device id */
#define DGN_RAND	(LgUns)DGN_frand	/* random series device id */
#define DGN_SINE	(LgUns)DGN_fsine	/* sine wave device id */
#define DGN_USER	(LgUns)DGN_user		/* user function */
#else
#define DGN_CONST	(Int)DGN_fconst		/* constant series device id */
#define DGN_RAND	(Int)DGN_frand		/* random series device id */
#define DGN_SINE	(Int)DGN_fsine		/* sine wave device id */
#define DGN_USER	(Int)DGN_user		/* user function */
#endif

#else  /* _FLOAT_ */

/*
 *  ======== DGN_IParams ========
 */
typedef struct {		/* device parameters */
    struct {
	Int	value;		/* constant value */
    } constant;
    struct {
	LgUns	seed;		/* seed value */
	Int	lower;		/* lower limit of generator */
	Int	upper;		/* upper limit of generator */
    } rand;
    struct {
	Int	gain;		/* gain */
	Int	freq;		/* frequency (cycles / sec) */
	Int	phase;		/* phase (in radians) */
	Int	rate;		/* sample rate (samples / sec) */
    } sine;
    struct {
	Fxn	fxn;		/* user function */
	Arg	arg;		/* and argument */
    } user;
} DGN_IParams;

extern DGN_IParams DGN_PARAMS;		/* default parameter values */

typedef struct DGN_GenObj {	
    Fxn		fxn;
    Arg		arg;
    LgUns	seed;		/* current seed value */
    Int		index;		/* current index into sine value table */
    Int		step;		/* the step for indexing the sine table */
    Int		shift;		/* sine shift value to achieve gain */
    DGN_IParams	*dparams;	/* parameters */
} DGN_GenObj;

extern Void DGN_iconst(DGN_GenObj *gen, Int *addr, Uns size);
extern Void DGN_irand(DGN_GenObj *gen, Int *addr, Uns size);
extern Void DGN_isine(DGN_GenObj *gen, Int *addr, Uns size);
extern Void DGN_user(DGN_GenObj *gen, Ptr addr, Uns size);

/*
 * Function address size is LgUns for 54f,55 and 28
 */
#if (defined(_54_) && defined(_FAR_MODE)) || defined(_55_) || defined(_28_)
#define DGN_CONST	(LgUns)DGN_iconst	/* constant series device id */
#define DGN_RAND	(LgUns)DGN_irand	/* random series device id */
#define DGN_SINE	(LgUns)DGN_isine	/* sine wave device id */
#define DGN_USER	(LgUns)DGN_user		/* user function */
#else
#define DGN_CONST	(Int)DGN_iconst		/* constant series device id */
#define DGN_RAND	(Int)DGN_irand		/* random series device id */
#define DGN_SINE	(Int)DGN_isine		/* sine wave device id */
#define DGN_USER	(Int)DGN_user		/* user function */
#endif

#endif /* _FLOAT_ */

#ifdef __cplusplus
}
#endif /* extern "C" */

#endif /* DGN_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -