使用MATLAB滤波器设计器导出Verilog代码

此处的参考参数用于在MATLAB滤波器设计器(fdatool/filterDesigner)中导出适用于16-bit精度ADC转换的数据的滤波器Verilog代码。

设计完滤波器后,切换到Quantize Filter页面,设置如下参数:

  • 滤波器数值表示法(Filter arithmetic):设置为定点(Fixed-Point)。
  • 滤波器精度(Filter precision):设置为“全部指定(Specify all)”。
  • 滤波器参数字长(Numerator word length)推荐使用预设值。但取消勾选“使用最佳小数位长度(Best-precision fraction lengths)”,手动指定小数位长度(Numerator frac. length),推荐设置为滤波器参数字长(Numerator word length)的一半。
  • 输入和输出字长(Input word length/Output word length)可根据情况指定,但推荐将小数位长度(Input fraction length/Output fraction length)设置为0。
  • 累乘器和累加器字长(Product word length/Accum. word length)推荐设置为较大的值,可保留预设参数,但推荐将小数位长度(Product fraction length/Accum. fraction length)设置为0。

最后,从滤波器设计器窗口的 [Targets] > [Generate HDL…] 菜单项中导出滤波器Verilog代码即可。

本设计使用的滤波器参数如下:

// -------------------------------------------------------------
//
// Module: FIRLowPassFilter
// Generated by MATLAB(R) 9.5 and Filter Design HDL Coder 3.1.4.
// Generated on: 2023-06-08 20:53:14
// -------------------------------------------------------------
 
// -------------------------------------------------------------
// HDL Code Generation Options:
//
// CoeffMultipliers: CSD
// ClockEnableInputPort: iIsDataReady
// ClockInputPort: iClock
// ResetInputPort: iReset
// EDAScriptGeneration: off
// AddInputRegister: off
// AddOutputRegister: off
// InputPort: iData
// OutputPort: oFilteredData
// Name: FIRLowPassFilter
// TargetLanguage: Verilog
// TestBenchStimulus: impulse step ramp chirp noise 
// GenerateHDLTestBench: off
 
// -------------------------------------------------------------
// HDL Implementation    : Fully parallel
// Folding Factor        : 1
// -------------------------------------------------------------
// Filter Settings:
//
// Discrete-Time FIR Filter (real)
// -------------------------------
// Filter Structure  : Direct-Form FIR
// Filter Length     : 11
// Stable            : Yes
// Linear Phase      : Yes (Type 1)
// Arithmetic        : fixed
// Numerator         : s16,8 -> [-128 128)
// Input             : s16,0 -> [-32768 32768)
// Filter Internals  : Specify Precision
//   Output          : s16,0 -> [-32768 32768)
//   Product         : s32,0 -> [-2147483648 2147483648)
//   Accumulator     : s32,0 -> [-2147483648 2147483648)
//   Round Mode      : convergent
//   Overflow Mode   : wrap
// -------------------------------------------------------------
it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License