Skip to content

Commit

Permalink
feat: update project tt_um_digitaler_filter_rathmayr from NicoRathmay…
Browse files Browse the repository at this point in the history
…r/jku-tt06-Digitaler-Filter

Commit: 9c7fb254f298a02c8900c089bf1838d160e7b945
Workflow: https://github.com/NicoRathmayr/jku-tt06-Digitaler-Filter/actions/runs/8156817736
  • Loading branch information
TinyTapeoutBot authored and urish committed Mar 5, 2024
1 parent f5129ca commit 3f19c66
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
6 changes: 3 additions & 3 deletions projects/tt_um_digitaler_filter_rathmayr/commit_id.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"app": "Tiny Tapeout tt06 e8c5040d",
"app": "Tiny Tapeout tt06 12c79b06",
"repo": "https://github.com/NicoRathmayr/jku-tt06-Digitaler-Filter",
"commit": "c8eb78496df78c3b2e8ebc1f4f752a9e855ee77f",
"workflow_url": "https://github.com/NicoRathmayr/jku-tt06-Digitaler-Filter/actions/runs/7986714345",
"commit": "9c7fb254f298a02c8900c089bf1838d160e7b945",
"workflow_url": "https://github.com/NicoRathmayr/jku-tt06-Digitaler-Filter/actions/runs/8156817736",
"sort_id": 1709300416068,
"openlane_version": "OpenLane f691c8c0712ca6c6645e3fd548985b3cbcf08c78",
"pdk_version": "open_pdks e0f692f46654d6c7c99fc70a0c94a080dab53571"
Expand Down
26 changes: 15 additions & 11 deletions projects/tt_um_digitaler_filter_rathmayr/docs/info.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,28 @@ You can also include images in this folder and reference them in the markdown. E

## How it works

Ziel dieses Projekts ist es, einen effizienten digitalen Filter zu entwerfen und zu implementieren, der in der Lage ist, unerwünschte Frequenzen aus einem digitalen Signal zu filtern.
The goal of this project is to design and implement an efficient digital filter capable of filtering unwanted frequencies from a digital signal.

Der FIR-Filter (Finite Impulse Response) zeichnet sich durch seine endliche Impulsantwort aus, die durch eine endliche Anzahl von Koeffizienten definiert wird. In diesem Fall werden lediglich zwei Koeffizienten verwendet, was den Entwurfsprozess vereinfacht und die Implementierung auf einem FPGA (Field-Programmable Gate Array) oder einem anderen digitalen Schaltkreis optimiert.
The FIR filter (Finite Impulse Response) is characterized by its finite impulse response defined by a finite number of coefficients. In this case, only two coefficients are used, simplifying the design process and optimizing the implementation on an FPGA (Field-Programmable Gate Array) or another digital circuit.

Die zwei Koeffizienten werden sorgfältig ausgewählt, um die gewünschte Frequenzantwort des Filters zu erreichen. Dabei ist es wichtig, die Anforderungen des Anwendungsfall zu berücksichtigen, sei es für Audioverarbeitung, Bildverarbeitung oder eine andere Anwendung im Bereich der Signalverarbeitung.
The two coefficients are carefully selected to achieve the desired frequency response of the filter. It is essential to consider the requirements of the application, whether it be for audio processing, image processing, or any other signal processing application.

Belegung der digitale Inputs und Outputs:
- ui_in 8 bit Einganssignal 'x'
- uio_in 8 bit Koeffizienten 'const\_h'
- uo_out 8 bit Ausgangssignal 'y'
- uio_out nicht verwendet!
- uio_oe nicht verwendet!
Assignment of digital inputs and outputs:

Ursprünglich war die Programmierung des Filters mit vier Koeffizienten geplant, jedoch musste diese Ambition aufgrund von Kapazitätsbeschränkungen des Chips auf zwei Koeffizienten reduziert werden. Im Code sind entsprechende Ergänzungen für vier Koeffizienten auskommentiert, was die Möglichkeit einer zukünftigen Erweiterung des Programms gewährleistet. Um nun sämtliche Koeffizienten mit nur einem 8-Bit-Eingang einzulesen und in das entsprechende Register zu speichern, wurde eine Art Schieberegister implementiert. Jede neue Flanke des Clock-Signals ermöglicht es, einen neu eingelesenen Wert an der gewünschten Position im Register abzulegen. Sobald die maximale Anzahl an Plätzen im Register belegt ist, wird die Flag auf Low gesetzt und der Zähler zurückgesetzt. Das Eingangssignal wird ebenfalls mittels eines Schieberegisters eingelesen, indem der Wert im Register in jedem Schritt um eine Stelle verschoben wird. Nun zur eigentlichen Filteroperation: Die gewünschten Koeffizienten werden mit dem Eingangssignal multipliziert und nach jedem Schritt summiert. Dabei ist zu berücksichtigen, dass die beiden Register unterschiedliche Größen haben und daher angepasst werden müssen. Das gefilterte Eingangssignal wird als Ausgangssignal aus einem Ausschnitt der in der Summe gespeicherten Bitfolge ausgegeben. Diese Schritte gewährleisten eine präzise Signalverarbeitung und verdeutlichen die Anpassungsfähigkeit des Programms für potenzielle zukünftige Erweiterungen.
- ui_in: 8-bit input signal 'x'
- uio_in: 8-bit coefficients 'const_h'
- uo_out: 8-bit output signal 'y'
- uio_out: not used!
- uio_oe: not used!

Originally, the filter programming was planned with four coefficients, but due to chip capacity limitations, this ambition had to be reduced to two coefficients. The code includes comments for additional four-coefficient support, ensuring the possibility of future program expansion.

To read all coefficients with just one 8-bit input and store them in the corresponding register, a shift register has been implemented. Each new clock signal edge allows storing a newly read value at the desired position in the register. Once the maximum number of positions in the register is occupied, the flag is set to low, and the counter is reset. The input signal is also read using a shift register by shifting the value in the register by one position in each step.

Now, for the actual filter operation: the desired coefficients are multiplied with the input signal and summed after each step. It is important to note that the two registers have different sizes and need to be adjusted accordingly. The filtered input signal is output as the output signal from a section of the bit sequence stored in the sum. These steps ensure precise signal processing and demonstrate the program's adaptability for potential future expansions.
## How to test

siehe Testbench.
Refer to the Testbench.

## External hardware

Expand Down
2 changes: 1 addition & 1 deletion projects/tt_um_digitaler_filter_rathmayr/stats/metrics.csv
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Final_Util,Peak_Memory_Usage_MB,synth_cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,pin_antenna_violations,net_antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,DecapCells,WelltapCells,DiodeCells,FillCells,NonPhysCells,TotalCells,CoreArea_um^2,power_slowest_internal_uW,power_slowest_switching_uW,power_slowest_leakage_uW,power_typical_internal_uW,power_typical_switching_uW,power_typical_leakage_uW,power_fastest_internal_uW,power_fastest_switching_uW,power_fastest_leakage_uW,critical_path_ns,suggested_clock_period,suggested_clock_frequency,CLOCK_PERIOD,FP_ASPECT_RATIO,FP_CORE_UTIL,FP_PDN_HPITCH,FP_PDN_VPITCH,GRT_ADJUSTMENT,GRT_REPAIR_ANTENNAS,MAX_FANOUT_CONSTRAINT,PL_TARGET_DENSITY,RUN_HEURISTIC_DIODE_INSERTION,STD_CELL_LIBRARY,SYNTH_STRATEGY
/work/src,tt_um_digitaler_filter_rathmayr,wokwi,flow completed,0h2m57s0ms,0h2m32s0ms,114176.10522469858,0.01795472,57088.05261234929,62.04,78.9637,567.05,987,0,0,0,0,0,0,0,0,0,0,-1,-1,19760,6797,0.0,-1,-1,-1,-1,0.0,-1,-1,-1,-1,14525152.0,0.0,41.87,29.23,8.31,3.8,-1,880,1139,21,144,0,0,0,958,130,48,52,55,90,199,93,18,76,126,19,735,225,1,416,1025,2402,16493.3184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,21.0,47.61904761904762,20,1,50,26.520,38.870,0.3,1,10,0.8,0,sky130_fd_sc_hd,AREA 0
/work/src,tt_um_digitaler_filter_rathmayr,wokwi,flow completed,0h2m56s0ms,0h2m31s0ms,114176.10522469858,0.01795472,57088.05261234929,62.04,78.9637,564.92,987,0,0,0,0,0,0,0,0,0,0,-1,-1,19760,6797,0.0,-1,-1,-1,-1,0.0,-1,-1,-1,-1,14525152.0,0.0,41.87,29.23,8.31,3.8,-1,880,1139,21,144,0,0,0,958,130,48,52,55,90,199,93,18,76,126,19,735,225,1,416,1025,2402,16493.3184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,21.0,47.61904761904762,20,1,50,26.520,38.870,0.3,1,10,0.8,0,sky130_fd_sc_hd,AREA 0
Binary file not shown.

0 comments on commit 3f19c66

Please sign in to comment.