Low-pass filter model

This article contains Verilog-A model for a low-pass filter. This model supports two types of filters - 1st-order and 2nd-order.

Usage:

  1. Create a new cell in Library Manager named LPF and select cell type Verilog A;
  2. Copy and paste the code provided;
  3. Specify Cutoff_frequency variable to be -3dB frequency;
  4. Specify Filter_Order variable to be 1 if you want -20dB/dec or 2 if you want -40dB/dec ;
  5. Perform Check and Save;
  6. A cell symbol will be created;
  7. Instantiate LPF cell into your design;
  8. Perform Check and Save and run the simulation.


LPF model testbench

LPF model testbench


LPF model simulation result

LPF model simulation result (Filter_Order = 1 - purple, Filter_Order = 2 - green)


Cell name: LPF

Model type: Verilog-A

1 2// Low Pass filter model based on -3dB frequency definition 3// Author: A. Sidun 4// Source: AnalogHub.ie 5 6`include "constants.vams" 7`include "disciplines.vams" 8 9module LPF(in, out); 10electrical in, out; 11parameter real Cutoff_frequency = 10k; // -3dB frequency 12parameter real Filter_Order = 1; // 1 for 20dB/dec, 2 for 40dB/dec 13 14analog begin 15case (Filter_Order) 161: begin // First Order LPF (-20dB/dec) 17 V(out) <+ laplace_nd(V(in),{2*`M_PI*Cutoff_frequency},{2*`M_PI*Cutoff_frequency, 1}); 18 V(out) <+ laplace_nd(V(in),{2*`M_PI*Cutoff_frequency},{2*`M_PI*Cutoff_frequency, 1}); 19 end 20 212: begin // Second Order LPF (-40dB/dec) 22 V(out) <+ laplace_nd(V(in),{(2*`M_PI*Cutoff_frequency)**2},{(2*`M_PI*Cutoff_frequency)**2, 4*`M_PI*Cutoff_frequency,1}); 23 end 24endcase 25end 26endmodule