Загрузка данных


void SOGI_Run(SOGI_Q15_t *s, int32_t u) {
	int64_t alpha;
	int64_t beta;
	
	/*
	 * Alpha channel
	 */
	alpha = 
				  (int64_t)s->bD0 * u
				+ (int64_t)s->bD1 * s->u_z1
				+ (int64_t)s->bD2 * s->u_z2
				+ (int64_t)s->a1  * s->alpha_z1
				+ (int64_t)s->a2  * s->alpha_z2;
	
	alpha >>= 30;
	
	/*
	 * Beta channel
	 */
	beta = 
				  (int64_t)s->bQ0 * u
				+ (int64_t)s->bQ1 * s->u_z1
				+ (int64_t)s->bQ2 * s->u_z2
				+ (int64_t)s->a1  * s->beta_z1
				+ (int64_t)s->a2  * s->beta_z2;
				
			beta >>= 30;
					
	 /*
	 *  Saturation and Outputs
	 */	
		s->alpha 	= sat_q15(alpha);
		s->beta 	= sat_q15(beta);
				
	/*
	 * Update state
	 */
	 s->u_z2 = s->u_z1;
	 s->u_z1 = u;
	 
	 s->alpha_z2 = s->alpha_z1;
	 s->alpha_z1 = alpha;
	 
	 s->beta_z2 = s->beta_z1;
	 s->beta_z1 = beta;	 
}