Download presentation
Presentation is loading. Please wait.
1
VHDL Coding Exercise 4: FIR Filter
2
Where to start? AlgorithmArchitecture RTL- Block diagram VHDL-Code Designspace Exploration Feedback Optimization
3
Algorithm High-Level System Diagram Context of the design Inputs and Outputs Throughput/rates Algorithmic requirements Algorithm Description Mathematical Description Performance Criteria Accuracy Optimization constraints Implementation constraints Area Speed FIR
4
Architecture (1) Isomorphic Architecture: Straight forward implementation of the algorithm
5
Architecture (2) Pipelining/Retiming: Improve timing Insert register(s) at the inputs or outputs Increases Latency
6
Architecture (2) Pipelining/Retiming: Improve timing Insert register(s) at the inputs or outputs Increases Latency Perform Retiming: Move registers through the logic without changing functionality Forward: Backwards:
7
Architecture (2) Pipelining/Retiming: Improve timing Insert register(s) at the inputs or outputs Increases Latency Perform Retiming: Move registers through the logic without changing functionality Forward: Backwards:
8
Architecture (2) Pipelining/Retiming: Improve timing Insert register(s) at the inputs or outputs Increases Latency Perform Retiming: Move registers through the logic without changing functionality Forward: Backwards:
9
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain
10
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain
11
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
12
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
13
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
14
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
15
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
16
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
17
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
18
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
19
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
20
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
21
Architecture (3) Retiming and simple transformation: Optimization Reverse the adder chain Perform Retiming
22
Architecture (4) More pipelining: Add one pipelining stage to the retimed circuit The longest path is given by the multiplier Unbalanced: The delay from input to the first pipeline stage is much longer than the delay from the first to the second stage
23
Architecture (5) More pipelining: Add one pipelining stage to the retimed circuit Move the pipeline registers into the multiplier: Paths between pipeline stages are balanced Improved timing Tclock = (Tadd + Tmult)/2 + Treg
24
Architecture (6) Iterative Decomposition: Reuse Hardware Identify regularity and reusable hardware components Add control multiplexers storage elements Control Increases Cycles/Sample
25
RTL-Design Choose an architecture under the following constraints: It meets ALL timing specifications/constraints: Throughput Latency It consumes the smallest possible area It requires the least possible amount of power Decide which additional functions are needed and how they can be implemented efficiently: Storage of samples x(k) => MEMORY Storage of coefficients b i => LUT Address generators for MEMORY and LUT => COUNTERS Control => FSM Iterative Decomposition
26
RTL-Design RTL Block-diagram: Datapath FSM: Interface protocols datapath control:
27
RTL-Design How it works: IDLE Wait for new sample
28
RTL-Design How it works: IDLE Wait for new sample Store to input register
29
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory
30
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory RUN:
31
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory RUN: Store result to output register
32
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory RUN: Store result to output register DATA OUT: Output result
33
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory RUN: Store result to output register DATA OUT: Output result / Wait for ACK
34
RTL-Design How it works: IDLE Wait for new sample Store to input register NEW DATA: Store new sample to memory RUN: Store result to output register DATA OUT: Output result / Wait for ACK IDLE: …
35
Translation into VHDL Some basic VHDL building blocks: Signal Assignments: Outside a process: Within a process (sequential execution): AxD YxD AxD YxD BxD Sequential execution The last assignment is kept when the process terminates AxD YxD BxD This is NOT allowed !!!
36
Translation into VHDL Some basic VHDL building blocks: Multiplexer: Conditional Statements: AxD BxDYxD SELxS CxD Default Assignment AxD BxD SelAxS CxD DxD OUTxD SelBxS STATExDP
37
Translation into VHDL Common mistakes with conditional statements: Example: AxD ?? SelAxS BxD ?? OUTxD SelBxS STATExDP NO default assignment NO else statement ASSIGNING NOTHING TO A SIGNAL IS NOT A WAY TO KEEP ITS VALUE !!!!! => Use FlipFlops !!!
38
Translation into VHDL Some basic VHDL building blocks: Register: Register with ENABLE: DataREGxDNDataREGxDP DataREGxDNDataREGxDP DataREGxDN DataREGxDP
39
Translation into VHDL Common mistakes with sequential processes: DataREGxDNDataREGxDP CLKxCI DataRegENxS DataREGxDNDataREGxDP CLKxCI DataRegENxS DataREGxDNDataREGxDP 0 1 Can not be translated into hardware and is NOT allowed Clocks are NEVER generated within any logic Gated clocks are more complicated then this Avoid them !!!
40
Translation into VHDL Some basic rules: Sequential processes (FlipFlops) Only CLOCK and RESET in the sensitivity list Logic signals are NEVER used as clock signals Combinatorial processes Multiple assignments to the same signal are ONLY possible within the same process => ONLY the last assignment is valid Something must be assigned to each signal in any case OR There MUST be an ELSE for every IF statement More rules that help to avoid problems and surprises: Use separate signals for the PRESENT state and the NEXT state of every FlipFlop in your design. Use variables ONLY to store intermediate results or even avoid them whenever possible in an RTL design.
41
Translation into VHDL Write the ENTITY definition of your design to specify: Inputs, Outputs and Generics
42
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section:
43
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section:
44
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section: Register with ENABLE
45
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section: Register with CLEAR
46
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section: Counter
47
Translation into VHDL Describe the functional units in your block diagram one after another in the architecture section:
48
Translation into VHDL The FSM is described with one sequential process and one combinatorial process
49
Translation into VHDL The FSM is described with one sequential process and one combinatorial process
50
Translation into VHDL The FSM is described with one sequential process and one combinatorial process
51
Translation into VHDL The FSM is described with one sequential process and one combinatorial process MEALY
52
Translation into VHDL The FSM is described with one sequential process and one combinatorial process
53
Translation into VHDL The FSM is described with one sequential process and one combinatorial process MEALY
54
Translation into VHDL The FSM is described with one sequential process and one combinatorial process MEALY
55
Translation into VHDL Complete and check the code: Declare the signals and components Check and complete the sensitivity lists of ALL combinatorial processes with ALL signals that are: used as condition in any IF or CASE statement being assigned to any other signal used in any operation with any other signal Check the sensitivity lists of ALL sequential processes that they contain ONLY one global clock and one global async. reset signal no other signals
56
Other Good Ideas Keep things simple Partition the design (Divide et Impera): Example: Start processing the next sample, while the previous result is waiting in the output register: Just add a FIFO to at the output of you filter Do NOT try to optimize each Gate or FlipFlop Do not try to save cycles if not necessary VHDL code Is usually long and that is good !! Is just a representation of your block diagram Does not mind hierarchy
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.