# Difference between revisions of "Discrete Filter"

From T-VEC Wiki

Line 6: | Line 6: | ||

<table> | <table> | ||

− | < | + | <div style="text-indent:12"> |

− | Discrete | + | <br> |

− | + | Discrete Transfer Function: <br> | |

− | + | A.z + B<br> | |

− | + | -------<br> | |

− | + | D.z + C<br> | |

− | + | where A, B, C, D are real numbers.<br> | |

− | where A, B, C, D are real numbers | + | <br> |

− | + | Or, alternatively<br> | |

− | The output of the function is defined as | + | <br> |

− | + | Discrete Filter:<br> | |

− | + | A + B.z<sup>-1</sup><br> | |

− | + | ----------<br> | |

− | Where | + | D + C.z<sup>-1</sup><br> |

− | + | The output of the function is defined as <br> | |

− | In. | + | Oz<sup>0</sup> = A/D*In.z<sup>0</sup> + B/D*In.z<sup>-1</sup> - C/D*Out.z<sup>-1</sup><br> |

− | In.z-1: previous input | + | Where <br> |

− | </ | + | In.z<sup>0</sup> : current input<br> |

+ | In.z<sup>-1</sup>: previous input<br> | ||

+ | <br>NOTE: these 2 specifications are equivalent, one form is used by control engineers and the other is used by filter designers. <br> | ||

+ | The output function definition is the same regardless.<br> | ||

+ | </div> | ||

</table> | </table> | ||

− | |||

==Approach== | ==Approach== | ||

To represent this in TTM it is necessary to state the semantics in terms of a function of current cycle input values and a previous cycle computed state variable (or multiple previous cycle state variables, in the case of z-equations of orders greater than 1). This requires the equation to be in a form similar to the expressions used to perform such a filter computation, computing the primary output and also computing a state variable output that you would also reference as an input (from the previous cycle's output computation). | To represent this in TTM it is necessary to state the semantics in terms of a function of current cycle input values and a previous cycle computed state variable (or multiple previous cycle state variables, in the case of z-equations of orders greater than 1). This requires the equation to be in a form similar to the expressions used to perform such a filter computation, computing the primary output and also computing a state variable output that you would also reference as an input (from the previous cycle's output computation). | ||

Line 51: | Line 54: | ||

:"Block X shall compute the signal Y passing the raw signal through a debounce with persistence time of 0.5 seconds" | :"Block X shall compute the signal Y passing the raw signal through a debounce with persistence time of 0.5 seconds" | ||

− | A user could define the constants A, B, C, and D with proper values for | + | A user could define the constants A, B, C, and D with proper values for their specific requirement. |