Implementing FIR Filters

Similar documents
January 1996, ver. 1 Functional Specification 1

Benefits of Embedded RAM in FLEX 10K Devices

Table 1 shows the issues that affect the FIR Compiler v7.1.

Parallel FIR Filters. Chapter 5

FFT/IFFT Block Floating Point Scaling

Nios Soft Core Embedded Processor

Table 1 shows the issues that affect the FIR Compiler, v6.1. Table 1. FIR Compiler, v6.1 Issues.

Implementing LED Drivers in MAX Devices

Intel Stratix 10 Variable Precision DSP Blocks User Guide

Design Guidelines for Using DSP Blocks

Implementing CRCCs. Introduction. in Altera Devices

Simple Excalibur System

Estimating Nios Resource Usage & Performance

Using MAX 3000A Devices as a Microcontroller I/O Expander

Error Correction Code (ALTECC_ENCODER and ALTECC_DECODER) Megafunctions User Guide

Design Tools for 100,000 Gate Programmable Logic Devices

Using MAX II & MAX 3000A Devices as a Microcontroller I/O Expander

CHAPTER 4. DIGITAL DOWNCONVERTER FOR WiMAX SYSTEM

Stratix II vs. Virtex-4 Performance Comparison

CORDIC Reference Design. Introduction. Background

Matrices in MAX II & MAX 3000A Devices

Design Guidelines for Using DSP Blocks

On-Chip Memory Implementations

4. DSP Blocks in Stratix IV Devices

Exercise 1 In this exercise you will review the DSSS modem design using the Quartus II software.

POS-PHY Level 4 POS-PHY Level 3 Bridge Reference Design

Introduction. Synchronous vs. Asynchronous Memory. Converting Memory from Asynchronous to Synchronous for Stratix & Stratix GX Designs

AN 547: Putting the MAX II CPLD in Hibernation Mode to Achieve Zero Standby Current

FPGA Design Security Solution Using MAX II Devices

Low Power Design Techniques

ZBT SRAM Controller Reference Design

Two-Level CLA for 4-bit Adder. Two-Level CLA for 4-bit Adder. Two-Level CLA for 16-bit Adder. A Closer Look at CLA Delay

Using TriMatrix Embedded Memory Blocks

Stratix vs. Virtex-II Pro FPGA Performance Analysis

Using Flexible-LVDS I/O Pins in

AIRbus Interface. Features Fixed width (8-, 16-, or 32-bit) data transfers (dependent on the width. Functional Description. General Arrangement

E3 Mapper MegaCore Function (E3MAP)

SameFrame Pin-Out Design for FineLine BGA Packages

White Paper Configuring the MicroBlaster Passive Serial Software Driver

Design Verification Using the SignalTap II Embedded

Stratix FPGA Family. Table 1 shows these issues and which Stratix devices each issue affects. Table 1. Stratix Family Issues (Part 1 of 2)

GC2011A 3.3V DIGITAL FILTER CHIP DATASHEET. March 21, 2000

24K FFT for 3GPP LTE RACH Detection

FIR Compiler MegaCore Function User Guide

White Paper The Need for a High-Bandwidth Memory Architecture in Programmable Logic Devices

Using Flexible-LVDS Circuitry in Mercury Devices

White Paper Using the MAX II altufm Megafunction I 2 C Interface

Implementing LVDS in Cyclone Devices

ByteBlaster II Parallel Port Download Cable

Simulating the Reed-Solomon Model

Using the Serial FlashLoader With the Quartus II Software

Implementing LED Drivers in MAX and MAX II Devices. Introduction. Commercial LED Driver Chips

At the ith stage: Input: ci is the carry-in Output: si is the sum ci+1 carry-out to (i+1)st state

Introduction. Design Hierarchy. FPGA Compiler II BLIS & the Quartus II LogicLock Design Flow

DSP Development Kit, Stratix II Edition

Floating-Point Megafunctions User Guide

FPGA Polyphase Filter Bank Study & Implementation

RapidIO Physical Layer MegaCore Function

isplever Parallel FIR Filter User s Guide October 2005 ipug06_02.0

Cyclone II FPGA Family

Legacy SDRAM Controller with Avalon Interface

Logic Optimization Techniques for Multiplexers

Simultaneous Multi-Mastering with the Avalon Bus

Using the Nios Development Board Configuration Controller Reference Designs

A SIMULINK-TO-FPGA MULTI-RATE HIERARCHICAL FIR FILTER DESIGN

POS-PHY Level 4 MegaCore Function

Enhanced Configuration Devices

Active Serial Memory Interface

Video and Image Processing Suite

PCI Express Multi-Channel DMA Interface

OPTIMIZATION OF FIR FILTER USING MULTIPLE CONSTANT MULTIPLICATION

Binary Adders. Ripple-Carry Adder

White Paper Taking Advantage of Advances in FPGA Floating-Point IP Cores

Using Library Modules in Verilog Designs

Implementing PLL Reconfiguration in Stratix & Stratix GX Devices

ECE331: Hardware Organization and Design

Simulating the PCI MegaCore Function Behavioral Models

Nios II Embedded Design Suite 6.1 Release Notes

White Paper AHB to Avalon & Avalon to AHB Bridges

White Paper. Floating-Point FFT Processor (IEEE 754 Single Precision) Radix 2 Core. Introduction. Parameters & Ports

Intel Arria 10 Native Fixed Point DSP IP Core User Guide

RapidIO MegaCore Function

Nios II Performance Benchmarks

Digital Computer Arithmetic

COPY RIGHT. To Secure Your Paper As Per UGC Guidelines We Are Providing A Electronic Bar Code

EE878 Special Topics in VLSI. Computer Arithmetic for Digital Signal Processing

altshift_taps Megafunction User Guide

Floating Point Inverse (ALTFP_INV) Megafunction User Guide

Computer Arithmetic Multiplication & Shift Chapter 3.4 EEC170 FQ 2005

Nios Embedded Processor UART Peripheral

T3 Framer MegaCore Function (T3FRM)

PowerPlay Early Power Estimator User Guide for Cyclone III FPGAs

CPLDs vs. FPGAs: Comparing High-Capacity Programmable Logic

Figure 1. Device Package Ordering Information for Stratix, Stratix GX, Cyclone, APEX 20KC, APEX II, Mercury & Excalibur Devices EP1S 25 F 780 C 5 N

DSP Builder. DSP Builder v6.1 Issues. Error When Directory Pathname is a Network UNC Path

UNIVERSITY OF MASSACHUSETTS Dept. of Electrical & Computer Engineering. Digital Computer Arithmetic ECE 666

FPGAs Provide Reconfigurable DSP Solutions

Intel Stratix 10 Logic Array Blocks and Adaptive Logic Modules User Guide

2.1. Unit 2. Integer Operations (Arithmetic, Overflow, Bitwise Logic, Shifting)

RUN-TIME RECONFIGURABLE IMPLEMENTATION OF DSP ALGORITHMS USING DISTRIBUTED ARITHMETIC. Zoltan Baruch

Transcription:

Implementing FIR Filters in FLEX Devices February 199, ver. 1.01 Application Note 73 FIR Filter Architecture This section describes a conventional FIR filter design and how the design can be optimized in FLEX devices. Conventional FIR Filter Design Introduction Conventions The finite impulse response (FIR) filter is used in many digital signal processing (DSP) systems to perform signal preconditioning, antialiasing, band selection, decimation/interpolation, low-pass filtering, and video convolution functions. Only a limited selection of off-the-shelf FIR filter circuits is available; these circuits often limit system performance. Therefore, programmable logic devices (PLDs) are an ideal choice for implementing FIR filters. Altera FLEX devices, including the FLEX 10K and FLEX 000 families, are flexible, high-performance devices that can easily implement FIR filters. For example, you can use a FLEX device for one or more critical filtering functions in a DSP microprocessor-based application, freeing the DSP processor to perform the lower-bit-rate, algorithmically complex operations. A DSP microprocessor can implement an -tap FIR filter at 5 million samples per second (MSPS), while an off-the-shelf FIR filter circuit can deliver 30 MSPS. In contrast, FLEX devices can implement the same filter at over 100 MSPS. This application note describes how to map the mathematical operations of the FIR filter into the FLEX architecture and compares this implementation to a hard-wired design. Implementation details including performance/device resource tradeoffs through serialization, pipelining, and precision are also discussed. Parentheses are used to show which tap or coefficient is being referenced. The variable refers to the nth input sample, e.g., x(6) refers to tap number 6. The variable h(n) refers to the nth coefficient of the FIR filter, e.g., h(4) refers to coefficient 4. Subscripts are used to distinguish which bit in the binary word is being referenced, e.g., x(6) 1 denotes the least significant bit (LSB) in the sixth tap. All numbering begins with 1 rather than 0. Figure 1. Conventional FIR Application w Figure 1 shows a conventional -tap FIR filter architecture. This filter has eight -bit registers arranged in a shift register configuration. x(1) x() x(3) x(4) x(5) x(6) x(7) x() w w w w w w w w h(1) h() h(3) h(4) h(4) h(3) h() h(1) w The output of each register is called a tap and is represented by, where n is the tap number. Each tap is multiplied by a coefficient h(n) and then all the products are summed. The equation for this filter is: yn ( ) = xn ( )hn ( ) n = 1 For a linear phase response FIR filter, the coefficients are symmetric around the center values. This symmetry allows the symmetric taps to be added together before they are multiplied by the coefficients. See Figure. Taking advantage of the symmetry lowers the number of multiplies from eight to four, which reduces the circuitry required to implement the filter. Altera Corporation 1 Altera Corporation A-AN-073-01.01

Figure. Adding Symmetric Taps Before Multiplication Figure 3. Vector Multiplier & Add x() x(7) x(6) x(5) Multiplicand h(n) Multiplier s(n) 01 11 10 11 11 00 10 01 Partial Product P1(n) Partial Product P(n) 01 00 00 11 + 01 00 10 00 = 100 = 011 011 000 100 011 = 1010 x(1) x() x(3) x(4) The partial products P1(n) and P(n) can be added either horizontally or vertically without changing the result, which is 1010. Because each component of h(n) is constant for any fixed-coefficient FIR filter, you can use a FLEX to implement the vector multiplier. s(1) s() s(3) s(4) h(1) h() h(3) h(4) In Figure 3, the four digits shown in bold, blue text are the LSBs of each s(n), and are represented by s(n) 1. Each partial product P1(n) highlighted with the blue bar is either 00 or the corresponding value of the multiplicand s h(n). The sum of all partial products P1(n) is P1 (in this case 100). Because s(n) 1 for the 4 multipliers uniquely determines the value for P1, there are only 16 possible values for P1. See Table 1. Table 1. LSB of Each s(n) for Each Partial Product (P1) Parallel Vector Multiplier Optimizing the FIR Filter with FLEX Devices The multiplication and addition for the vector multiplier shown in Figure can be optimized by using look-up tables (s) in a FLEX device. The equation for the vector multiplier is: y = [s(1) h(1)] + [s() h()] + [s(3) h(3)] + [s(4) h(4)] The multiplication and addition can be performed in parallel using s. The following example uses -bit positive integers. h(1) = 01, h() = 11, h(3) = 10, h(4) = 11 s(1) = 11, s() = 00, s(3) = 10, s(4) = 01 The multiplication and addition for the vector multiplier are shown in Figure 3. Altera Corporation 3 s(n) 1 Note (1) P1 Result 0000 0 00 + 00 + 00 + 00 = 0000 0001 h(1) 00 + 00 + 00 + 01 = 0001 0010 h() 00 + 00 + 11 + 00 = 0011 0011 h() + h(1) 00 + 00 + 11 + 01 = 0100 0100 h(3) 00 + 10 + 00 + 00 = 0010 0101 h(3) + h(1) 00 + 10 + 00 + 01 = 0011 0110 h(3) + h() 00 + 10 + 11 + 00 = 0101 0111 h(3) + h() + h(1) 00 + 10 + 11 + 01 = 0110 1000 h(4) 11 + 00 + 00 + 00 = 0011 1001 h(4) + h(1) 11 + 00 + 00 + 01 = 0100 1010 h(4) + h() 11 + 00 + 11 + 00 = 0110 1011 h(4) + h() + h(1) 11 + 00 + 11 + 01 = 0111 1100 h(4) + h(3) 11 + 10 + 00 + 00 = 0101 1101 h(4) + h(3) + h(1) 11 + 10 + 00 + 01 = 0110 1110 h(4) + h(3) + h() 11 + 10 + 11 + 00 = 1000 1111 h(4) + h(3) + h() + h(1) 11 + 10 + 11 + 01 = 1001 Note: (1) s(n) 1 refers to the LSB of each multiplier s(n). In Figure 3, the LSBs are denoted by the four digits shown in bold, blue text. 4 Altera Corporation

Figure 4. Four -Bit Input Vector Multiplier The partial product P can be calculated in the same manner, except the result must be shifted left by one bit before adding P1 and P. In this example, the result is four bits wide. Therefore, the adders must be four bits wide. The partial products (P1 and P) can be calculated by 4-input s in a FLEX device. All computations occur in parallel. The partial products can be fed into a tree of adders to calculate the final product called as shown in Figure 4. This multiplier performs the function [s(4) h(4)] + [s(3) h(3)] + [s() h()] + [s(1) h(1)]. Both s consist of 4 FLEX 16 1 s. s(1) s() s(3) s(4) Black lines denote s(n). Blue lines denote s(n) 1. Figure 5. Four -Bit Input Vector Multiplier The multipliers increase by a power of for each level, which maintains the correct precision for each -bit input. s(4) LSB s(3) LSB s() LSB s(1) LSB 16 16 16 16 16 16 16 16 LE LE LE LE LE LE LE LE 16 4 16 4 1 4 4 P P1 by 4 by 10 by 10 by by 10 10 6 by 4 10 by 4 10 1 1 Only one adder is used in Figure 4 because the function has only two bits of precision. If more bits of precision are used, additional adders are required. See Figure 5. The vector multiplier can be used in a 7-bit input FIR filter. The eighth bit comes from adding the two 7-bit symmetric taps. by 16 1 16 Altera Corporation 5 6 Altera Corporation

Implementing FIR Filters The filter in Figure 5 can be pipelined by placing registers at the outputs of each adder and. Because FLEX devices have registers at the output of every logic cell, adding pipeline registers to the filter does not require additional device resources. Pipelining introduces a 5-Clock latency for this design. This section discusses the issues that must be resolved when implementing FIR filters in FLEX devices, including: Filter architecture Pipelining Scaling Symmetrical and antisymmetrical filters Filter Architecture The conventional FIR filter architecture described in the previous section is a fully parallel architecture, designed for maximum speed and size. However, you can create a smaller, slower filter by serializing the multiplications and additions. This section describes the size and speed tradeoffs of each architecture. Table summarizes the FIR filter architectures. Serial FIR Filters Figure 6 shows a fully serial FIR filter. This architecture is similar to the fully parallel FIR filter, i.e., it uses the FLEX to store the precomputed partial products P1, P... Pn, where n = <data width> + 1. The serial filter in Figure 6 performs the same computation as the parallel filter, but it only processes one bit of the input data at a time. The serial filter first computes P1, which is a function of the four bits s(1) 1 through s(4) 1. On each successive cycle the serial filter computes the next partial product Pn from inputs s(1) n through s(4) n. The partial products are summed in the scaling accumulator, which shifts the previous data right by one bit, i.e., during each cycle it divides the previous result by. This produces a result after <data width> + 1 Clock cycles because when the data passes though the symmetric tap adders (at the top of Figure 6) the data is <data width> + 1 bits wide (the fully parallel version has <data width> + 1 s for the same reason). The serial FIR filter reuses the same, rather than using extra circuitry. Table. Comparison of FIR Filter Architectures in FLEX 000A Devices Filter Name Input Precision (Bits) Taps Size (Logic Cells) Device Clock Rate (MHz) Clock Cycles per Result Speed (MSPS) Parallel 16 46 EPF0A 101 1 101 1,616 Serial 16 7 EPF45A 63 9 7.0 11 MIPS f Go to the FIR Filter Functional Specification for more information on parallel and serial FIR filters. Parallel FIR Filters The conventional FIR filter described in Conventional FIR Filter Design is a fully parallel architecture. The output is a combinatorial function of the current and past data values. The that corresponds to the MSB actually contains the two s complement of all the other s to implement two s complement arithmetic. This filter can be pipelined for greater efficiency. 1 For an explanation of two s complement arithmetic, refer to Two s Complement Arithmetic on page of this application note. Altera Corporation 7 Altera Corporation

Figure 6. Fully Serial FIR Filter Schematic Serial/Parallel FIR Filters plsr_load Parallel-to-Serial The combined serial/parallel architecture has features from both the serial and parallel architectures. See Figure 7. The data shift registers at the top of Figure 7 are both serial and parallel. The parallelism in this case is two, i.e., two parallel computational chains exist. In contrast, the fully serial architecture has only one computational path. The serial/parallel filter requires only four Clock cycles to complete the computation. The filter in Figure 7 is a 7-bit filter because of possible carry into the eighth bit in the symmetric-tap adders. To obtain eight bits of precision on the incoming data, you must add another stage to each of the data shift registers. Serial Adder CIN COUT D Q SUM Serial Adder SUM Serial Adder SUM Serial Adder 16 Scaling Accumulator carry_clear accum_clr plsr_load add_sub latch_result Control Result Because the serial filter contains one, it can contain only one set of data. Therefore, the accumulator must perform a subtraction when calculating the MSB of the data, i.e., the accumulator must have an add_sub port. The controller deasserts the add_sub signal when the filter computes the MSB. Altera Corporation 9 10 Altera Corporation

Figure 7. Combined Serial/Parallel FIR Filter Schematic Figure shows the 4 shift register in Figure 7. See Figure for details. 4 4 4 4 Figure. 4 Data In Data Out plsr_load Parallel-to-Serial 4 4 4 4 Data In Data Out Serial Adder CIN COUT D Q SUM Serial Adder SUM Serial Adder SUM Serial Adder To implement two s complement arithmetic, for the MSB of the computation must contain the two s complement of the value. The adder at the bottom of Figure 7, which can be an adder or subtractor depending on the control signal add_sub, performs this operation. Every fourth cycle add_sub is de-asserted, complementing the output of. The accumulator at the bottom of Figure 7 adds and shifts the data by two bits every cycle. Pipelining MSB 1 LSB Pipelining increases the performance of a FIR filter with little or no impact on the size of the design. The FLEX architecture has a flipflop in each logic cell. Therefore, an adder and a register require only one logic cell per bit. If the width of s(n) is not a power of two, extra pipeline registers are required to maintain synchronization, which makes the pipelined filter less efficient. See Figure 9. by ± Scaling Accumulator add_sub carry_clear plsr_load accum_clr latch_result Control Result Altera Corporation 11 1 Altera Corporation

Figure 9. Pipelined vs. Non-Pipelined FIR Filter Figure 10. 16-Tap Parallel FIR Filter Pipelined s(4) s(3) s() s(1) Non-Pipelined s(4) s(3) s() s(1) -Tap Filter -Tap Filter D Q D Q Pipelining To create a serial filter with more than taps, implement or more -tap filters with 1 accumulator at the bottom of all the filters. Figure 11 shows a 3-tap filter. Extra Synchronizing Figure 11. 3-Tap Serial FIR Filter Serial Filter XOUTL XOUTR XINL XINR CARRY_CLEAR Serial Filter XOUTL XOUTR XINL XINR CARRY_CLEAR Serial Filter XOUTL XOUTR XINL XINR CARRY_CLEAR Serial Filter XOUTL XOUTR XINL XINR CARRY_CLEAR D Q ADD_SUB ADD_SUB ADD_SUB ADD_SUB Pipelining Scaling This section discusses how to adjust the number of taps or the bits of precision for a FIR filter. Adjusting the Number of Taps You can easily create a parallel filter with more than taps by implementing or more parallel -tap filters described previously in this application note and assigning different coefficients to each filter. Then, add the outputs of each -tap filter. See Figure 10. Scaling Accumulator Adjusting the Bits of Precision w To add more bits of precision on the input, add additional s to each block. For parallel designs, each extra bit of precision requires one additional. In serial designs, the computation will take one more Clock cycle. Altera Corporation 13 14 Altera Corporation

Figure 1. Symmetric vs. Antisymmetric Filters Symmetric Impulse Response Symmetric & Antisymmetric Filters Symmetric filters that implement even functions are created with symmetric tap adders. You can create an antisymmetric FIR filter that implements an odd function by using symmetric tap subtractors. See Figure 1. Truncation & Rounding Truncation and rounding can be important in a design. Many existing FIR filters are not flexible enough to allow you to specify the amount of truncation or rounding, potentially wasting device resources. In contrast, FLEX devices permit you to specify how many bits of precision to use when calculating the result of a FIR filter. For an -bit 3- tap filter, keeping every possible bit of precision requires an output word 19 bits wide. Most applications do not require 19 bits of precision for a function with an -bit wide input. You should keep only the bits of precision necessary for your design to minimize the design size. Odd-Length Filters To implement an odd-length filter, simply remove one of the shift register stages. See Figure 13. Figure 13. 7-Tap Odd-Length Filter s(1) s() s(3) s(4) Antisymmetric Impulse Response + + + + Vector Multiplier n s(1) s() s(3) s(4) Altera Corporation 15 16 Altera Corporation

Decimating Filter for Sample Rate Reduction Figure 15. FLEX Decimating Filter A decimating filter only computes every nth result, where n is the decimation factor. You can create a decimating filter by simply discarding any unwanted results from a regular FIR filter. For example, if the input data rate is 100 MHz, and you want to decimate the data rate by, the output data rate is only 50 MHz. See Figure 14. However, this implementation is not very efficient. The low-pass FIR filter must run at the XIN data rate (i.e., 100 MHz), which wastes half of the computations performed by the FIR filter. Figure 14. Typical Decimating Filter XIN = 100 MHz Keep Only Low-Pass 100 MHz 50 MHz Every Other FIR Filter Sample Figure 15 shows the shift register section of a 16-tap, decimate-by- FIR filter. This filter only computes every other result (i.e., the data skips every other register). Therefore, most of the filter runs at the output rate rather than the input rate, saving roughly 50% of the power consumed by the full-speed filter. The filter in Figure 15 also permits a faster input sample rate. For example, if the input data rate is 100 MHz, only the T flipflop must run at the 100-MHz rate the rest of the FIR filter runs at 50 MHz. To create a filter that decimates by more than two, simply reroute the data through the shift register. D Q EN D Q EN TFF VCC D Q 100 MHz 50 MHz Repeating Decimating Filter s(1) s() s(3) s(4) s(5) s(6) s(7) s() Interpolating Filter Repeating Decimating Filter Repeating Decimating Filter Repeating Decimating Filter An interpolating filter (i.e., an up-sampling filter) performs the opposite function of a decimating filter it increases the sample rate by a factor of n. One way to perform interpolation is to add extra samples between each input data sample, where the added samples are zero. See Figure 16. The data stream (with the zeros) is sent through a low-pass filter; the output data from the low-pass filter is at a higher sample rate than the input data. Figure 16. Stuffing Zeros into the Data Stream T Input Data Stream (Period = T) T Sampling Period Divided by Two Figure 17 shows the interpolating filter block diagram. Altera Corporation 17 1 Altera Corporation

Figure 17. Interpolating Filter Figure 19 shows a graphical representation of how s(t) evolves over time. T Zero Stuffer T Low-Pass Filter T Figure 19. s(t) over Time x(1) x() x() x(7) x(3) x(6) x(4) x(5) T = 1 Figure 1. Up-Sampling Data by Two Because much of the input data to the low-pass filter is zero, the shift register is always sparsely populated. Figure 1 shows an example of an interpolating filter where the data is up-sampled by two. One input to each of the symmetric tap adders is always zero. Therefore, the adder is not necessary. x(1) 0 x() 0 x(3) 0 x(4) 0 x(9) x() x(10) x() x(9) x(3) x() x(3) x(9) x(3) x() x(4) The data flow switches every other Clock cycle. Figure 0 shows the structure that would implement this shift register. You can implement the shift register in Figure 0 in a FLEX device using one logic cell per bit. Using a regular FIR filter with a zero-stuffed data stream requires three logic cells per bit: one to store the data, one to store a zero, and one to implement the adder. In a regular 16-tap, -bit FIR filter, the shift register section requires the following number of logic cells: x(7) x(4) x() x(4) x(7) x(5) x(6) x(5) x(7) x(5) x(6) x(6) T = T = 3 T = 4 0 x() 0 x(7) 0 x(6) 0 x(5) Taps ( Taps Width) + ------------- ( Width + 1) = ( 16 ) + ( 9) = 00 The more efficient shift register structure shown in Figure 0 would require only 64 logic cells, which saves significant resources. s(1) = x(1) s() = x() s(3) = x() s(4) = x(7) s(5) = x(3) s(6) = x(6) s(7) = x(4) s() = x(5) Figure 0. 64-Logic Cell Structure Table 3 shows how s(t) evolves over time when the input data is x(10)x(9)x()x(7)x(6)x(5)x(4)x(3)x()x(1). Each time snapshot represents the value of s(t) at a given time. Table 3. Values of s(t) over Time TFF VCC D Q Interpolating Filter x(1) 0 Interpolating Filter Interpolating Filter Interpolating Filter s(t) Time X(1) X() X() X(7) X(3) X(6) X(4) x(5) T = 1 X(9) X() X() X(3) X(7) X(4) X(6) x(5) T = X() X(9) X(3) X() X(4) X(7) X(5) x(6) T = 3 X(10) X(3) X(9) X(4) X() X(5) X(7) x(6) T = 4 s(1) s() s(3) s(4) s(5) s(6) s(7) s () Two-Dimensional Video Convolution Filter You can create a two-dimentional convolution filter using the techniques described above. Using a symmetric convolution window, you can extend the one-dimensional filter to a two-dimensional filter. Figure 1 shows a symmetric two-dimensional convolution window. Altera Corporation 19 0 Altera Corporation

Figure 1. Symmetric Two-Dimensional Convolution Window The coefficients C1, C, and C3 are constants. Figure shows the architecture that implements this convolution filter. The twodimensional filter uses the same vector multiplier as the one-dimensional filter, except only three inputs are used instead of four. Figure. Convolution FIR Filter C3 C C3 C C1 C C3 C C3 You can implement the two-dimensional filter using the same procedure as the one-dimensional filter, but this implementation creates an inefficiency because one input from each is not used. The twodimensional video convolution filter can run at about 100 MSPS in a FLEX 000A (- speed grade) device. Two s Complement Arithmetic Two s complement arithmetic is a system of representing numbers in which the negative of a number is equal to its inverse plus one. The most significant bit (MSB) requires special treatment in two s complement arithmetic. One option involves sign-extending each number by one bit, adding these sign-extended numbers with a regular adder, and discarding the carry-out. For example, for -bit two s complement numbers, the range of possible values are through 1. The binary equivalents are summarized in Table 4. Table 4. Binary Equivalents for -Bit Two s Complement Numbers Binary Decimal 00 0 01 1 10 11 1 When adding positive and negative numbers in two s complement arithmetic, a special procedure must be used. For example, 1 + 1 should equal 0 in decimal arithmetic. However, using a regular adder, the binary equivalent is 11 + 01 = 100 (i.e., 4). To obtain the correct result, the binary numbers must be sign-extended to 3-bit numbers and added, then the carry out must be discarded: 111 +001 = 1000 (i.e., 1 + 1 = 0). s (3) s () Vector Multiplier s (1) GND All adders in this application note use two s complement arithmetic, with an adder that is n + 1 bits wide, where n is the width of the input. The FLEX architecture implements very fast adders e.g., carry-chains for the MSB and does not require more logic to implement an adder than any other 4-input logic function. Therefore, using a full adder in a FLEX device to manipulate the MSB is faster than using an XOR gate. Altera Corporation 1 Altera Corporation

Conclusion Revision History There are several ways to implement FIR filters in FLEX devices, depending on speed and device resource constraints. The fastest, largest filter is a fully parallel pipelined version, which can operate as fast as 105 MSPS. The fully serial filter is the slowest and smallest and can sample at rates of 5.7 MSPS for an -bit input width, which is adequate for many medium speed applications. The combined serial/parallel filter is capable of rates between these two extremes, depending on how much of the design is in parallel. For high-speed FIR filter applications, Altera FLEX devices provide the most flexibility and best performance. The information contained in Application Note 73 (Implementing FIR Filters in FLEX Devices) version 1.01 supersedes information published in Application Note 73 (Implementing FIR Filters in FLEX Devices) version 1.0. Version 1.01 includes a corrected multiplier equation in Figure 4. 101 Innovation Drive San Jose, CA 95134 (40) 544-7000 Applications Hotline: (00) 00-EPLD Customer Marketing: (40) 544-7104 Literature Services: () 3-ALTERA lit_req@altera.com Altera, MAX, MAX+PLUS, FLEX, MAX+PLUS II, FLEX 000, EPF0A, EPF45A, and FLEX 10K are trademarks and/or service marks of Altera Corporation in the United States and other countries. Altera acknowledges the trademarks of other organizations for their respective products or services mentioned in this document. Altera products are protected under numerous U.S. and foreign patents and pending applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera s standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Copyright 199 Altera Corporation. All rights reserved.. Altera Corporation 3 4 Altera Corporation Printed on Recycled Paper.