Skip to content

Instantly share code, notes, and snippets.

@marcusmueller
Created May 11, 2019 15:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcusmueller/c9429057899b59e19693ba20479fd252 to your computer and use it in GitHub Desktop.
Save marcusmueller/c9429057899b59e19693ba20479fd252 to your computer and use it in GitHub Desktop.
{
"Name": "Analog frontend",
"Description": "for biometrics",
"Tool": "FW",
"Version": "1.1",
"Design": {
"visitedTabs": [
"filter-type",
"specifications",
"components",
"tolerances",
"next-steps"
],
"filterType": "lowPass",
"specifications": {
"gain": 0,
"gainUnit": "dB",
"passbandAttenuation": -2,
"passbandFrequency": 300,
"stopbandAttenuation": -32,
"stopbandFrequency": 1000,
"filterResponseValue": 2,
"filterResponseSlider": "0",
"centerFrequency": null
},
"components": {
"vsPlus": 3.3,
"vsMinus": 0,
"optimization": "RecommendedSpecificComponents",
"optimizationPreference": "specific",
"compensateForGbw": true,
"stages": [
{
"stageLetter": "A",
"componentSizing": 90,
"gain": -1,
"gainEnabled": false,
"implementation": "firstOrder",
"opAmps": "AD8542"
},
{
"stageLetter": "B",
"componentSizing": 90,
"gain": -1,
"gainEnabled": false,
"implementation": "sallenKey",
"opAmps": "AD8542"
}
],
"recommendedAmps": [],
"sortOrder": [
1,
0
]
},
"tolerances": {
"resistorTolerance": "1%",
"capacitorTolerance": "20%",
"inductorTolerance": "5%",
"opAmpGbwTolerance": "20%",
"resistorPreferredSeries": "E12",
"capacitorPreferredSeries": "E6",
"inductorPreferredSeries": "E12"
},
"nextSteps": {}
},
"CreatedDate": "2019-05-11 04:48:12 PM",
"UpdatedDate": "2019-05-11 04:48:12 PM"
}
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1500x900 with 0 Axes>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 1500x900 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy\n",
"from scipy import signal\n",
"from matplotlib import pyplot\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of taps in b: 3\n",
"number of taps in a: 3\n",
"total multiplications per sample: 6\n"
]
}
],
"source": [
"b50,a50 = signal.iirnotch(50/(2000.0/2), 30)\n",
"print(f\"number of taps in b: {len(b50)}\\nnumber of taps in a: {len(a50)}\\ntotal multiplications per sample: {len(a50) + len(b50)}\")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"w50, h50 = signal.freqz(b50, a50, worN=10001)\n",
"_, group_delay = signal.group_delay((b,a), w50)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'Group delay [samples]')"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pyplot.figure(figsize=(10,6), dpi=100)\n",
"pyplot.plot(w50/numpy.pi*1000., 10*numpy.log10(numpy.abs(h50)), label=\"freq. resp.\")\n",
"pyplot.xlim(0, 300)\n",
"pyplot.ylabel(\"H(f) [dB]\")\n",
"pyplot.figure(figsize=(10,6), dpi=100)\n",
"pyplot.plot(w50/numpy.pi*1000., group_delay, label=\"group delay\")\n",
"pyplot.xlim(0, 300)\n",
"pyplot.ylabel(\"Group delay [samples]\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment