Languages

CommunityCategory: XMODELModeling an analog filter of which transfer function changes with digital inputs
SA Support Team Staff asked 3 years ago

I am modeling a programmable analog filter of which transfer function can change with a set of digital inputs. As a simple example, I modeled a programmable low-pass filter of which bandwidth can be 0.5, 1.0, 2.0, or 4.0GHz depending on the two-bit digital input 'mode', as shown below. This model is made of 4 filter primitives and 1 select primitive and pre-computes the outputs of all possible analog filters to the input 'in' and selects one of them based on the value of 'mode'.

But the problem is: this model wastes a lot of computation resources. And it will waste more as the number of digital bits increases. Is there a better way to model this programmable analog filter?

1 Answers
Best Answer
SA Support Team Staff answered 3 years ago

Yes, this programmable analog filter can be modeled with a single 'filter_sel' primitive. And this primitive will compute only the response of the selected transfer function, keeping the amount of computation to the minimum.

Here is an example of modeling your programmable analog filter using this 'filter_sel' primitive.

The primitive instance has the following parameter values:

Width of Selection Bits (width_sel) = 2
List of Filter Indices (indices) = '{0, 1, 2, 3}
List of Filter Data (data) = '{1, 2*M_PI*0.5e9, 0.0, 2*M_PI*0.5e9, 0.0, 1,
                               1, 2*M_PI*1.0e9, 0.0, 2*M_PI*1.0e9, 0.0, 1,
                               1, 2*M_PI*2.0e9, 0.0, 2*M_PI*2.0e9, 0.0, 1,
                               1, 2*M_PI*4.0e9, 0.0, 2*M_PI*4.0e9, 0.0, 1}

Each line of values for the parameter 'data' defines the transfer function of a low-pass filter with the bandwidth equal to 0.5, 1.0, 2.0, and 4GHz, which is selected when the two-bit selection input has an index value of 0, 1, 2, and 3, respectively. For more detailed information on the parameters of the 'filter_sel' primitive, please refer to its documentation.

For your information, XMODEL also provides the 'pwl_sel' and 'poly_sel' primitives, which can model digitally-programmable piecewise-linear functions and polynomial functions, respectively.

SA Support Team Staff asked 3 years ago

디지털 입력에 따라 전달함수가 바뀔수 있는 프로그래머블 아날로그 필터를 모델링하고 있습니다. 간단한 예로, 2비트 입력 mode<1:0> 값에 따라 대역폭이 0.5, 1.0, 2.0, 4.0GHz로 변화하는 로우패스 필터를 아래 그림과 같이 filter primitive 4개와 select primitive 한개로 모델링하였습니다. 즉, 입력 in에 대해 지원하는 모든 아날로그 필터들의 출력들을 다 구한후, 그 중 하나만을 mode 값에 따라 최종 출력 out으로 선택하는 구조로 되어 있습니다.

하지만, 이 구조는 계산 낭비가 심합니다. 특히, 디지털 입력의 비트수가 많아질수록 그 낭비는 더 심해질 것입니다. 이 프로그래머블 아날로그 필터를 모델링하는 더 좋은 방법이 있을까요?

1 Answers
Best Answer
SA Support Team Staff answered 3 years ago

Yes, this programmable analog filter can be modeled with a single 'filter_sel' primitive. And this primitive will compute only the response of the selected transfer function, keeping the amount of computation to the minimum.

Here is an example of modeling your programmable analog filter using this 'filter_sel' primitive.

The primitive instance has the following parameter values:

Width of Selection Bits (width_sel) = 2
List of Filter Indices (indices) = '{0, 1, 2, 3}
List of Filter Data (data) = '{1, 2*M_PI*0.5e9, 0.0, 2*M_PI*0.5e9, 0.0, 1,
                               1, 2*M_PI*1.0e9, 0.0, 2*M_PI*1.0e9, 0.0, 1,
                               1, 2*M_PI*2.0e9, 0.0, 2*M_PI*2.0e9, 0.0, 1,
                               1, 2*M_PI*4.0e9, 0.0, 2*M_PI*4.0e9, 0.0, 1}

Each line of values for the parameter 'data' defines the transfer function of a low-pass filter with the bandwidth equal to 0.5, 1.0, 2.0, and 4GHz, which is selected when the two-bit selection input has an index value of 0, 1, 2, and 3, respectively. For more detailed information on the parameters of the 'filter_sel' primitive, please refer to its documentation.

For your information, XMODEL also provides the 'pwl_sel' and 'poly_sel' primitives, which can model digitally-programmable piecewise-linear functions and polynomial functions, respectively.