simple IIR filter design

3 views (last 30 days)
Safiya
Safiya on 5 May 2015
Commented: Stephen23 on 28 May 2015
Hi, I am using this simple transfer function H(z)= 1/(z^2 + 0.1z+ 0.01), transforming to bilinear. Now I want to generate the VHDL code for this compensator. Not targeting to any FPGA board. but for simple transistor level synthesis like cadence etc. Can I do this using MATLAB. Regards, shayder
  1 Comment
Stephen23
Stephen23 on 28 May 2015
Here is the text of the original question, just in case Safiya decides to delete the text of this question too (like this one):
Hi, I am using this simple transfer function H(z)= 1/(z^2 + 0.1z+ 0.01), transforming to bilinear. Now I want to generate the VHDL code for this compensator. Not targeting to any FPGA board. but for simple transistor level synthesis like cadence etc. Can I do this using MATLAB. Regards, shayder

Sign in to comment.

Accepted Answer

Tim McBrayer
Tim McBrayer on 5 May 2015
You might want to take a look at either HDL Coder or Filter Design HDL Coder to see if either of these products will meet your needs. Both generate cycle-accurate, bit true VHDL or Verilog that is ready for simulation and synthesis.
  3 Comments
Walter Roberson
Walter Roberson on 6 May 2015
HDL Coder and related tools can generate complete descriptions suitable for chip layout programs, and do not need to be targeted to FPGA.
If you want to use floating point then you are going to need a floating point library and it is going to take up a lot of space on your chip.
The recommendation is to avoid floating point and to instead to use the Fixed Point Designer.
Tim McBrayer
Tim McBrayer on 6 May 2015
HDL Coder supports many different styles of modeling. The design of your filter is up to you and your requirements.
With HDL Coder, if you need storage for your coefficients--for instance, if you want to change them over time--you can store them in a register implemented with a unit delay. If you want a RAM to store the coefficients, you can do that as well using a HDL RAM block. If you just want a set of fixed coefficients you can specify them with Constant blocks, or as the parameter of a Gain block. If you want to supply the coefficients as external inputs to your filter you can do that as well.
The generated HDL is target-independent unless specifically requested not to be. It can be used for simulation, synthesis (for either FPGA or ASIC), or any other purpose that you would use hand-written HDL for.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!