Logic Optimization Techniques for Multiplexers
|
|
- Brianna Howard
- 6 years ago
- Views:
Transcription
1 Logic Optimiation Techniques for Multiplexers Jennifer Stephenson, Applications Engineering Paul Metgen, Software Engineering Altera Corporation 1 Abstract To drive down the cost of today s highly complex FPGA designs, designers are looking to fit the most logic and features into the smallest FPGA device. A study of 100 designs showed that multiplexers accounted for 26% of the logic element utiliation. This paper explores how synthesis tools such as Mentor Graphics Precision RTL Synthesis can infer different types of multiplexers from different styles of HDL code, and how these structures can be mapped into FPGA devices. Inefficient multiplexers can greatly increase the logic required to implement your design. This paper discusses some common pitfalls and provides design guidelines to achieve optimal resource utiliation for multiplexer designs in 4-input look-up table (LUT) based architectures such as Altera s Stratix TM device family. 2 Motivation for Multiplexer Optimiation Altera analyed the synthesis results for 100 customer benchmark designs and found that multiplexers (muxes) accounted for an average of 26% of the logic element utiliation. This result indicates that focusing on multiplexer optimiation could significantly affect the overall logic utiliation for many designs. By optimiing muxes, designers may be able to reduce cost by using a smaller device. Synthesis tools such as Precision RTL Synthesis optimie the designer s source Verilog or VHDL code for both logic utiliation and performance. However, sometimes the best optimiations require human knowledge of the design, and synthesis tools cannot always know the design intent. Designers are often in the best position to improve their quality of results. 3 Types of Multiplexers This section discussed how multiplexers are created from various types of HDL code. Case statements, if statements and state machines are all common sources of multiplexing logic in designs. These HDL structures can create different types of multiplexers: binary multiplexers, selector multiplexers and priority multiplexers. Understanding how multiplexers arise from HDL code and how they might be implemented during synthesis is the first step towards optimiing the structures for best results. 3.1 Binary Multiplexers Binary multiplexers select inputs based on binaryencoded section bits. Figure 1 shows a Verilog example that describes a simple 4:1 binary mux. case (sel) 2'b00: = a; 2'b01: = b; 2'b10: = c; 2'b11: = d; endcase Figure 1: Simple Binary-Encoded Case Statement The select bits do not have to be encoded in full binary notation like the previous example. Synthesis tools might choose to implement more complicated structures using binary multiplexers. The VHDL example in Figure 2 is illustrated schematically as a binary mux in Figure 3. CASE sel[3:0] IS WHEN 0101 => <= a; WHEN 0111 => <= b; WHEN 1010 => <= c; WHEN OTHERS => <= d; END CASE; Figure 2: Case Statement with More Complex Encoding sel[1:0] sel[3:2] 00xx 01xx a b c d 10xx 11xx Binary mux Figure 3: Binary Multiplexer Implementation of the Case Statement in Figure 2 1
2 3.2 Selector Multiplexers Selector multiplexers have a separate select line for each of their data inputs. The select lines for the mux are essentially one-hot encoded. Figure 4 shows a simple Verilog example that describes a one-hot selector mux. case (sel) 4'b0001: = a; 4'b0010: = b; 4'b0100: = c; 4'b1000: = d; default: = "X"; endcase Figure 4: Simple One-Hot-Encoded Case Statement Synthesis tools can also choose to implement case statements using selector multiplexers. For example, the schematic in Figure 5 shows how the VHDL code in Figure 2 is can be implemented as a selector multiplexer instead of a binary multiplexer. The AND gate on the right-hand side of the figure is used to implement the others or default case (d input), detecting the situation when all the other cases are false, or inactive. Synthesis tools decide which type of multiplexer to implement based on their own algorithms, and different tools may provide different solutions for different types of HDL source code. sel[3:0] == == == a b c d Figure 5: Selector Multiplexer Implementation of the Case Statement in Figure Priority Multiplexers Selector mux In priority multiplexers, the select logic implies a priority, so the options to select the correct item must be checked in order. These structures commonly arise from if-else, "when-select", or "? :" statements in VHDL or Verilog. The example VHDL code in Figure 6 is likely to result in the implementation illustrated schematically in Figure 7. IF cond1 THEN <= a; ELSIF cond2 THEN <= b; ELSIF cond3 THEN <= c; ELSE <= d; Figure 6: If Statement Implying Priority Notice that the multiplexers form a chain, evaluating each condition, or select bit, one at a time. cond1 cond2 a cond3 b c Figure 7: Priority Multiplexer Implementation of the If Statement in Figure 6 4 Implementing Multiplexers in 4-Input Look-Up Tables This section discusses how the three styles of multiplexers described in the previous section can be implemented in the 4-input look-up tables (LUTs) found in many FPGA architectures, such as Altera s Stratix devices. Synthesis tools perform this mapping automatically, but understanding it enables you to use a coding style that may be mapped more efficiently. 4.1 Binary Multiplexers A 4:1 binary multiplexer can be implemented very efficiently using just two 4-input LUTs, and larger multiplexers can be built using this structure Efficient 4:1 Binary Multiplexers A 4:1 multiplexer can be implemented in two 4-input LUTs, as illustrated in the figures below. Figure 8 shows the configuration when the most significant select line S1 is set to 0. In this case, the select line S0 controls the d 2
3 right-hand LUT in the figure, and chooses either the C or D input to feed through both LUTs to the output. Figure 9 shows the configuration n when S1 is set to 1. In this case, S0 is fed through to control the left-hand LUT, so S0 chooses between the A and B inputs. S1 = 0 S0 A B C D Figure 8: 4:1 Binary Multiplexer in two LUTs, S1=0 S1 = 1 A B C D S0 scheme, two inputs can be selected, using two select lines, in a single LUT using two AND gates and an OR gate. The outputs of these LUTs can be combined using a wide OR gate. An N-input selector multiplexer of this structure requires at least 0.66*(N-0.5), which is slightly worse than the best binary multiplexer. 4.3 Priority Multiplexers Large priority multiplexers look like a chain of 2:1 muxes, like the example in Figure 7. An N-input priority mux uses a LUT for every 2:1 mux in the chain, requiring N-1 LUTs, or roughly N. In addition, this chain of multiplexers is generally bad for delay, since the critical path through the logic traverses through every multiplexer in the chain. Avoid priority muxes where priority is not required. If the order of the choices is not important to the design, use a case statement to implement a binary or selector mux instead of the priority mux. If priority is required, there are alternate implementations of priority multiplexers that may improve the delay through the logic. The logic structure in Figure 10 uses just slightly more LUTs than the standard priority mux scheme, but significantly improves the delay through the logic. sel0 sel2 sel4 sel6 d0 d1 d2 d3 d4 d5 d6 d7 sel1 sel5 sel1 sel2 sel3 Figure 9: 4:1 Binary Multiplexer in two LUTs, S1= Building Larger Binary Multiplexers One technique for building mux trees is to use a basic 2:1 mux as a building block. However, in such a scheme, each 2:1 MUX requires a separate LUT. Implementing an N-input multiplexer (N:1 mux) using this scheme requires at least N - 1 LUTs. Larger binary muxes can be constructed more efficiently using the 4:1 mux presented in section Constructing an N:1 mux from a tree of 4:1 muxes results in a structure that uses as little as 0.66*(N - 1) LUTs. 4.2 Selector Multiplexers Selector multiplexers are commonly built as a tree of AND and OR gates, as shown in Figure 5. Using this Figure 10: Priority Multiplexer Optimied for Delay In this structure, if any of the select lines sel0-sel4 are high, then the 4-input AND gate chooses the left-hand half of the logic, otherwise it chooses the left-hand side. The 2-input AND gates perform a similar function to choose one of the first level of muxes, then sel0, sel2, sel4, or sel6 makes the final choice of inputs. The signal sel0 has the highest priority in the figure, meaning it represents the first If statement in the HDL source code. 3
4 The delay optimiations that synthesis tools perform on priority multiplexers vary by tool and depend on the structure of the design. If delay is important in a priority multiplexing design, consider recoding the design to ensure a scheme that reduces the number of levels of logic. 5 Design Guidelines to Avoid Common Pitfalls This section investigates several common pitfalls in multiplexer design, and provides design guidelines to avoid these pitfalls. By taking care when coding your design, you can achieve better logic utiliation efficiency. 5.1 Default or Others Case Assignment To fully specify the cases in a case statement, you need to include a default (Verilog) or others (VHDL) assignment. This assignment is especially important in one-hot encoding schemes where many combinations of the select lines are not used. Specifying a case for the unused select line combinations directs the synthesis tool on how to deal with these cases, and is required by the Verilog and VHDL language specifications. Some designs do not have a requirement for the unused cases, often because it is assumed that these cases will not arise. In these situations, you can choose any value for the default or others assignment. However, be aware that the assignment value you choose can have a large effect on the logic utiliation required to implement the design, due to the different ways synthesis tools treat difference values for the assignment Example: Precision RTL Synthesis Results for a 4:1 Selector Mux The effect that the default or others case assignment can have on synthesis results is best illustrated with an example. The results in this section were generated for Altera s Stratix architecture using Precision RTL Synthesis version , but most synthesis tools will show a similar difference in results. In the simple 4:1 selector multiplexer design shown in Figure 4, the designer has created a default assignment to X, or don t care. Note that in the Stratix architecture, this 4:1 mux design could be implemented in three LEs, but that optimiation is not currently available in this version of Precision RTL. Compiled in Precision RTL, this design requires four LUTs and thus uses four logic elements (LEs) in the Stratix device. Figure 11 shows a modified version of the code, where the designer has assigned cases for inputs a, b, and c, but then made the default assignment to choose input d in all other cases, since the only other case of interest should choose input d. This design actually requires seven LEs when compiled in Precision RTL! This is 75% more LEs than the example where X was assigned as the default value. case (sel) 4'b0001: = a; 4'b0010: = b; 4'b0100: = c; default: = d; endcase Figure 11: One-Hot-Encoded Case Statement with d as Default Case Assigning case d separately as in Figure 4, but assigning the default case to input d gives the same result as the code in Figure 11. Choosing any of the other inputs as the default would also give the same utiliation result. Since there is no valid assignment for the invalid cases, some designers may set the default case to be unchanged, or for the output to keep the same value, as shown in Figure 12. This type of assignment requires more logic, because the synthesis tool has to implement feedback from the output back into the multiplexer. This design takes eight LEs to implement in Precision RTL. case (sel) 4'b0001: = a; 4'b0010: = b; 4'b0100: = c; 4'b1000: = d; default: = ; endcase Figure 12: One-Hot-Encoded Case Statement with as Default Case These three pieces of code perform the same function for the valid combinations of the select lines, yet the difference in logic utiliation is huge! To obtain best results, explicitly define your invalid case selections with a separate default or others statement, instead of combining the invalid cases with one of the defined cases. If you do not care about the value in the invalid cases, explicitly say so by assigning the X logic value for these cases instead of choosing another value. The difference in logic utiliation in these different cases is due either to the decode logic, or to inefficiencies in the per-bit multiplexing cost. Synthesis tools may give more efficient results when the multiplexers select bus inputs. In this example, if a, b, c, d, and are each 32- bit buses, each coding style results in approximately the 4
5 same number of LEs (101, 100, and 105 LEs respectively) in Precision RTL. These results are much better optimied than the single-bit result, using as little as Stratix LEs per bit of the bus, much closer to the optimal result of three LEs for a 4:1 binary mux. This result indicates that the per-bit cost is the same for all three schemes (three LEs/bit) and the differences in logic utiliation are due to the decoding logic. If you are concerned about area utiliation for your multiplexers, examine your synthesis results to ensure you are getting the expected logic utiliation. Different synthesis tools (and versions) may give different results due to various speed and area optimiations in the tools, so knowledge of the optimal result for a given design can be very powerful. 5.2 Implicit Defaults The If statements in Verilog and VHDL are a convenient way of specifying conditions that don t easily lend themselves to a case type approach. However, these statements can result in complicated multiplexer trees that are not easy for synthesis tools to optimie. In particular, every If statement has an implicit Else case, even if it is not specified. These implicit defaults can cause additional complexity in a multiplexing design. The code sample in Figure 13 appears to represent a 4:1 multiplexer; there are four inputs (a, b, c, d) and one output (). IF cond1 THEN IF cond2 THEN <= a; ELSIF cond3 THEN IF cond4 THEN <= b; ELSIF cond5 THEN <= c; ELSIF cond6 THEN <= d; Figure 13: If Statement with Implicit Defaults However, each of the three separate If statements in the code has an implicit Else condition that is not specified. Since the output values for the Else cases are not specified, the synthesis tool has to assume the intent is to maintain the same output value for these cases. Figure 14 shows code with the same functionality as Figure 13 but specifies the Else cases explicitly. IF cond1 THEN IF cond2 THEN <= a; ELSE <= ; ELSIF cond3 THEN IF cond4 THEN <= b; ELSIF cond5 THEN <= c; ELSE <= ; ELSIF cond6 THEN <= d; ELSE <= ; Figure 14: If Statement with Default Conditions Explicitly Specified Figure 15 is a schematic representation of the above code illustrating that although there are only four inputs, the multiplexing logic is significantly more complicated than a basic 4:1 mux. cond5 cond2 0 1 cond4 0 1 cond1 a c 0 1 Figure 15: Multiplexer Implementation of the If Statement in Figure 13 and Figure 14 b cond3 cond6 You can do several things in these cases to simplify the multiplexing logic and remove the unneeded defaults. The most optimal way may be to recode the design so it takes the structure of a 4:1 case statement. Alternately, or if the priority is important, you can restructure the code to deduce default cases and flatten the multiplexer. In this example, instead of IF cond1 THEN IF cond2, use IF (cond1 AND cond2) which performs the same function. In addition, question whether the defaults are don t care cases. In this example, you can promote the last ELSIF cond6 statement to an ELSE statement if no other valid cases can occur. Avoid unnecessary default conditions in your multiplexer logic to reduce the complexity and the logic utiliation required to implement your design. d 5
6 5.3 Degenerate Multiplexers CASE sel[3:0] IS A degenerate multiplexer is one in which not all of the possible cases are used for unique data inputs. The unneeded cases tend to contribute to inefficiency in the logic utiliation for these multiplexers. You can recode degenerate muxes so that they take advantage of the efficient logic utiliation possible with full binary muxes. The number of select lines in a binary multiplexer normally dictates how big a mux is needed to implement the desired function. For example, the mux structure represented in Figure 3 has four select lines and could implement a binary multiplexer with 16 inputs. However, the figure does not use all 16 inputs and thus is considered a degenerate 16:1 mux. According to the results in section 4.1.2, a 16:1 binary mux can be implemented in ten 4-input LUTs. Most synthesis tools, though, can perform local optimiations on degenerate muxes that look at each mux individually and improve the logic utiliation. In this example, the first and fourth muxes in the top level can easily be eliminated since all four inputs to each mux are the same value, and the number of inputs to the other multiplexers can be reduced, as shown in Figure 16. a b c d WHEN 0101 => _sel <= 00 ; WHEN 0111 => _sel <= 01 ; WHEN 1010 => _sel <= 10 ; WHEN OTHERS => _sel <= 11 ; END CASE; Figure 17: Recoder Design for Degenerate Binary Multiplexer CASE _sel[1:0] IS WHEN 00 => <= a; WHEN 01 => <= b; WHEN 10 => <= c; WHEN 11 => <= d; END CASE; Figure 18: 4:1 Binary Multiplexer Design You can use the new _sel control signal from the recoder to control the 4:1 binary multiplexer that chooses between the four inputs a, b, c, and d, as illustrated in Figure 19. The complexity of the select lines is handled in the recoder, and the data multiplexing is performed with simple binary select lines to enable the most efficient implementation. sel[3:0] Recoder a b c d sel[1:0] 3:1 2:1 _sel[1:0] 01xx 00xx sel[3:2] 3:1 10xx Figure 16: Optimied Version of the Degenerate Binary Multiplexer from Figure 3 Implementing this version of the multiplexer still requires at least 5 LUTs in total, two for each of the 3:1 muxes one for the 2:1 mux. This design selects an output from only four inputs, and from section a 4:1 binary mux can be implemented optimally in 2 LUTs, so this degenerate multiplexer tree is reducing the efficiency of the logic. You can improve the logic utiliation of this type of structure by recoding the select lines to implement a full 4:1 binary mux. Figure 17 provides code for a recoder design that translates the original select lines into a signal _sel with binary encoding, and Figure 18 provides code to implement the full binary mux. 11xx 4:1 Figure 19: 4:1 Binary Multiplexer with Recoder The recoder design can be implemented in two LUTs and the efficient 4:1 binary mux uses two LUTs, for a total of four LUTs. The original degenerate mux required five LUTs, so the recoded version uses 20% less logic than the original. You can often improve the logic utiliation of multiplexers by recoding the select lines into full binary cases. Although logic is required to do the encoding, more logic may be saved performing the data multiplexing. 5.4 Buses of Multiplexers The inputs to multiplexers are often buses of data inputs, where the same multiplexing function is performed on a set of data inputs in the form of buses. In these cases, any inefficiency in the multiplexer is multiplied across every bit of the bus. The issues described in the previous sections become even more important for wide mux buses. 6
7 For example, the recoding technique discussed in the previous section can often be used in buses that involve multiplexing. Recoding the select lines may only need to be done once for all the multiplexers in the bus. By sharing the recoder logic among all the bits in the bus, you can greatly improve the logic efficiency of a bus of muxes. The degenerate multiplexer in section 5.3 requires five LUTs to implement. If the inputs and output are 32 bits wide, the function could require 32x5 or 160 LUTs for the whole bus. The recoded design uses only two LUTs, and the select lines only need to be recoded once for the entire bus. The binary 4:1 mux requires two LEs per bit of the bus. The total logic utiliation for the recoded version could be 2 + 2x32 or 66 LUTs for the whole bus, as compared to 160 LUTs for the original version! The savings in logic become much more obvious when the mux works across wide buses. Using techniques to optimie degenerate muxes, removing unneeded implicit defaults, and choosing the optimal default or others case can play an important role when optimiing buses of multiplexers. 7 References [1] Mentor Graphics Precision RTL Synthesis Support, Quartus II Development Software Handbook, [2] Stratix Architecture, Stratix Device Handbook, 6 Conclusion Logic utiliation is an important cost factor in FPGA designs, and designers can use logic optimiation to reduce the logic required to implement their designs. Synthesis tools optimie Verilog or VHDL code for both logic utiliation and performance, but in some cases, the designers with knowledge of the original design intent are in the best position to improve their quality of results. Multiplexing logic takes up a large portion of the typical FPGA design, and inefficient multiplexers can greatly increase the logic required to implement your design. To optimie the resource utiliation for mux structures, it is important to understand how multiplexers arise from HDL code, and how they might be implemented in the target device. Use the techniques discussed in this paper to choose the optimal default or others case for your case statements, avoid unnecessary default conditions in your if statements, and optimie degenerate muxes to allow the most efficient multiplexer implementation. If your design multiplexes buses of data, these techniques are even more important. Armed with an in-depth knowledge of multiplexer implementation, you can optimie your design to ensure that it achieves the optimal logic utiliation. 7
8 101 Innovation Drive San Jose, CA (408) Copyright 2006 Altera Corporation. All rights reserved. Altera, The Programmable Solutions Company, the stylied Altera logo, specific device designations, and all other words and logos that are identified as trademarks and/or service marks are, unless noted otherwise, the trademarks and service marks of Altera Corporation in the U.S. and other countries. All other product or service names are the property of their respective holders. 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.
Stratix II vs. Virtex-4 Performance Comparison
White Paper Stratix II vs. Virtex-4 Performance Comparison Altera Stratix II devices use a new and innovative logic structure called the adaptive logic module () to make Stratix II devices the industry
More informationIntroduction. Design Hierarchy. FPGA Compiler II BLIS & the Quartus II LogicLock Design Flow
FPGA Compiler II BLIS & the Quartus II LogicLock Design Flow February 2002, ver. 2.0 Application Note 171 Introduction To maximize the benefits of the LogicLock TM block-based design methodology in the
More informationFPGAs Provide Reconfigurable DSP Solutions
FPGAs Provide Reconfigurable DSP Solutions Razak Mohammedali Product Marketing Engineer Altera Corporation DSP processors are widely used for implementing many DSP applications. Although DSP processors
More informationBenefits of Embedded RAM in FLEX 10K Devices
Benefits of Embedded RAM in FLEX 1K Devices January 1996, ver. 1 Product Information Bulletin 2 Introduction Driven by the demand to integrate many more digital functions in a single device, custom logic
More informationStratix vs. Virtex-II Pro FPGA Performance Analysis
White Paper Stratix vs. Virtex-II Pro FPGA Performance Analysis The Stratix TM and Stratix II architecture provides outstanding performance for the high performance design segment, providing clear performance
More informationWhite Paper Performing Equivalent Timing Analysis Between Altera Classic Timing Analyzer and Xilinx Trace
Introduction White Paper Between Altera Classic Timing Analyzer and Xilinx Trace Most hardware designers who are qualifying FPGA performance normally run bake-off -style software benchmark comparisons
More informationPractical Hardware Debugging: Quick Notes On How to Simulate Altera s Nios II Multiprocessor Systems Using Mentor Graphics ModelSim
Practical Hardware Debugging: Quick Notes On How to Simulate Altera s Nios II Multiprocessor Systems Using Mentor Graphics ModelSim Ray Duran Staff Design Specialist FAE, Altera Corporation 408-544-7937
More informationTable 1 shows the issues that affect the FIR Compiler v7.1.
May 2007, Version 7.1 Errata Sheet This document addresses known errata and documentation issues for the Altera, v7.1. Errata are functional defects or errors, which may cause an Altera MegaCore function
More informationSimulating the PCI MegaCore Function Behavioral Models
Simulating the PCI MegaCore Function Behavioral Models August 2001, ver. 1.0 Application Note 169 Introduction Altera intellectual property (IP) MegaCore functions are developed and pre-tested by Altera,
More informationNios II Embedded Design Suite 7.1 Release Notes
Nios II Embedded Design Suite 7.1 Release Notes May 2007, Version 7.1 Release Notes This document contains release notes for the Nios II Embedded Design Suite (EDS) version 7.1. Table of Contents: New
More informationDesign Guidelines for Optimal Results in High-Density FPGAs
White Paper Introduction Design Guidelines for Optimal Results in High-Density FPGAs Today s FPGA applications are approaching the complexity and performance requirements of ASICs. In some cases, FPGAs
More informationError Correction Code (ALTECC_ENCODER and ALTECC_DECODER) Megafunctions User Guide
Error Correction Code (ALTECC_ENCODER and ALTECC_DECODER) Megafunctions User Guide 11 Innovation Drive San Jose, CA 95134 www.altera.com Software Version 8. Document Version: 2. Document Date: June 28
More informationLow Power Design Techniques
Low Power Design Techniques August 2005, ver 1.0 Application Note 401 Introduction This application note provides low-power logic design techniques for Stratix II and Cyclone II devices. These devices
More informationFPGA Design Security Solution Using MAX II Devices
White Paper FPGA Solution Using MAX II Devices Introduction SRAM-based FPGAs are volatile devices. They require external memory to store the configuration data that is sent to them at power up. It is possible
More informationDSP Builder. DSP Builder v6.1 Issues. Error When Directory Pathname is a Network UNC Path
March 2007, Version 6.1 Errata Sheet This document addresses known errata and documentation changes for DSP Builder version 6.1. Errata are functional defects or errors which may cause DSP Builder to deviate
More informationSimulating the Reed-Solomon Model
July 2000, ver. 1 Simulating the Reed-Solomon Model with the Visual IP Software User Guide Introduction Altera intellectual property (IP) MegaCore functions are developed and pre-tested by Altera, and
More informationMatrices in MAX II & MAX 3000A Devices
Crosspoint Switch Matrices in MAX II & MAX 3000A Devices March 200, ver. 2.0 Application Note 29 Introduction With a high level of flexibility, performance, and programmability, you can use crosspoint
More informationCyclone II FPGA Family
ES-030405-1.3 Errata Sheet Introduction This errata sheet provides updated information on Cyclone II devices. This document addresses known device issues and includes methods to work around the issues.
More informationDSP Development Kit, Stratix II Edition
DSP Development Kit, Stratix II Edition August 2005, Development Kit version 1.1.0 Errata Sheet This document addresses known errata and documentation changes the DSP Development Kit, Stratix II Edition
More informationSimulating the PCI MegaCore Function Behavioral Models
Simulating the PCI MegaCore Function Behavioral Models February 2003, ver. 1.2 Application Note 169 Introduction Altera intellectual property (IP) MegaCore functions are developed and pre-tested by Altera,
More informationUsing Verplex Conformal LEC for Formal Verification of Design Functionality
Using Verplex Conformal LEC for Formal Verification of Design Functionality January 2003, ver. 1.0 Application Note 296 Introduction The Altera Quartus II software, version 2.2, easily interfaces with
More informationActive Serial Memory Interface
Active Serial Memory Interface October 2002, Version 1.0 Data Sheet Introduction Altera Cyclone TM devices can be configured in active serial configuration mode. This mode reads a configuration bitstream
More informationUTOPIA Level 2 Slave MegaCore Function
UTOPIA Level 2 Slave MegaCore Function October 2005, Version 2.5.0 Release Notes These release notes for the UTOPIA Level 2 Slave MegaCore function contain the following information: System Requirements
More informationDesign Guidelines for Using DSP Blocks
Design Guidelines for Using DSP Blocks in the Synplify Software April 2002, ver. 1.0 Application Note 193 Introduction Altera R Stratix TM devices have dedicated digital signal processing (DSP) blocks
More informationVideo and Image Processing Suite
Video and Image Processing Suite December 2006, Version 7.0 Errata Sheet This document addresses known errata and documentation issues for the MegaCore functions in the Video and Image Processing Suite,
More informationUsing Library Modules in Verilog Designs
Using Library Modules in Verilog Designs This tutorial explains how Altera s library modules can be included in Verilog-based designs, which are implemented by using the Quartus R II software. Contents:
More informationNios II Embedded Design Suite 6.1 Release Notes
December 2006, Version 6.1 Release Notes This document lists the release notes for the Nios II Embedded Design Suite (EDS) version 6.1. Table of Contents: New Features & Enhancements...2 Device & Host
More informationDesign Verification Using the SignalTap II Embedded
Design Verification Using the SignalTap II Embedded Logic Analyzer January 2003, ver. 1.0 Application Note 280 Introduction The SignalTap II embedded logic analyzer, available exclusively in the Altera
More informationNios II Performance Benchmarks
Subscribe Performance Benchmarks Overview This datasheet lists the performance and logic element (LE) usage for the Nios II Classic and Nios II Gen2 soft processor, and peripherals. Nios II is configurable
More informationFFT/IFFT Block Floating Point Scaling
FFT/IFFT Block Floating Point Scaling October 2005, ver. 1.0 Application Note 404 Introduction The Altera FFT MegaCore function uses block-floating-point (BFP) arithmetic internally to perform calculations.
More informationDesign Guidelines for Using DSP Blocks
Design Guidelines for Using DSP Blocks in the LeonardoSpectrum Software April 2002, ver. 1.0 Application Note 194 Introduction Altera R Stratix TM devices have dedicated digital signal processing (DSP)
More informationSimulating the ASMI Block in Your Design
2015.08.03 AN-720 Subscribe Supported Devices Overview You can simulate the ASMI block in your design for the following devices: Arria V, Arria V GZ, Arria 10 Cyclone V Stratix V In the Quartus II software,
More informationVHDL for Synthesis. Course Description. Course Duration. Goals
VHDL for Synthesis Course Description This course provides all necessary theoretical and practical know how to write an efficient synthesizable HDL code through VHDL standard language. The course goes
More informationRLDRAM II Controller MegaCore Function
RLDRAM II Controller MegaCore Function November 2006, MegaCore Version 1.0.0 Errata Sheet This document addresses known errata and documentation issues for the RLDRAM II Controller MegaCore function version
More informationZBT SRAM Controller Reference Design
ZBT SRAM Controller Reference Design for APEX II Devices December 2001, ver. 1.0 Application Note 183 Introduction As communication systems require more low-latency, high-bandwidth interfaces for peripheral
More informationWhite Paper Using the MAX II altufm Megafunction I 2 C Interface
White Paper Using the MAX II altufm Megafunction I 2 C Interface Introduction Inter-Integrated Circuit (I 2 C) is a bidirectional two-wire interface protocol, requiring only two bus lines; a serial data/address
More informationToolflow for ARM-Based Embedded Processor PLDs
Toolflow for ARM-Based Embedded Processor PLDs December 2000, ver. 1 Application Note Introduction The Excalibur embedded processor devices achieve a new level of system integration from the inclusion
More informationWhite Paper Configuring the MicroBlaster Passive Serial Software Driver
White Paper Configuring the MicroBlaster Passive Serial Software Driver Introduction The MicroBlaster TM software driver is designed to configure Altera programmable logic devices (PLDs) through the ByteBlasterMV
More informationImplementing LED Drivers in MAX Devices
Implementing LE rivers in MAX evices ecember 2002, ver. 1.0 Application Note 286 Introduction Commercial LE river Chips iscrete light-emitting diode (LE) driver chips are common on many system boards.
More informationEstimating Nios Resource Usage & Performance
Estimating Nios Resource Usage & Performance in Altera Devices September 2001, ver. 1.0 Application Note 178 Introduction The Excalibur Development Kit, featuring the Nios embedded processor, includes
More informationCORDIC Reference Design. Introduction. Background
CORDIC Reference Design June 2005, ver. 1.4 Application Note 263 Introduction The co-ordinate rotation digital computer (CORDIC) reference design implements the CORDIC algorithm, which converts cartesian
More informationAN 547: Putting the MAX II CPLD in Hibernation Mode to Achieve Zero Standby Current
AN 547: Putting the MAX II CPLD in Hibernation Mode to Achieve Zero Standby Current January 2009 AN-547-10 Introduction To save power, the MAX II CPLD can be completely powered down into hibernation mode
More informationVerilog for High Performance
Verilog for High Performance Course Description This course provides all necessary theoretical and practical know-how to write synthesizable HDL code through Verilog standard language. The course goes
More informationByteBlaster II Parallel Port Download Cable
ByteBlaster II Parallel Port Download Cable December 2002, Version 1.0 Data Sheet Features Allows PC users to perform the following functions: Program MAX 9000, MAX 7000S, MAX 7000AE, MAX 7000B, MAX 3000A,
More informationPower Optimization in FPGA Designs
Mouzam Khan Altera Corporation mkhan@altera.com ABSTRACT IC designers today are facing continuous challenges in balancing design performance and power consumption. This task is becoming more critical as
More informationDDR and DDR2 SDRAM Controller Compiler User Guide
DDR and DDR2 SDRAM Controller Compiler User Guide 101 Innovation Drive San Jose, CA 95134 www.altera.com Operations Part Number Compiler Version: 8.1 Document Date: November 2008 Copyright 2008 Altera
More informationStratix FPGA Family. Table 1 shows these issues and which Stratix devices each issue affects. Table 1. Stratix Family Issues (Part 1 of 2)
January 2007, ver. 3.1 Errata Sheet This errata sheet provides updated information on Stratix devices. This document addresses known issues and includes methods to work around the issues. Table 1 shows
More informationAN 549: Managing Designs with Multiple FPGAs
AN 549: Managing Designs with Multiple FPGAs October 2008 AN-549-1.0 Introduction Managing designs that incorporate multiple FPGAs raises new challenges that are unique compared to designs using only one
More informationFPGA Power Management and Modeling Techniques
FPGA Power Management and Modeling Techniques WP-01044-2.0 White Paper This white paper discusses the major challenges associated with accurately predicting power consumption in FPGAs, namely, obtaining
More informationUsing Library Modules in Verilog Designs. 1 Introduction. For Quartus II 13.0
Using Library Modules in Verilog Designs For Quartus II 13.0 1 Introduction This tutorial explains how Altera s library modules can be included in Verilog-based designs, which are implemented by using
More informationImplementing Bus LVDS Interface in Cyclone III, Stratix III, and Stratix IV Devices
Implementing Bus LVDS Interface in Cyclone III, Stratix III, and Stratix IV Devices November 2008, ver. 1.1 Introduction LVDS is becoming the most popular differential I/O standard for high-speed transmission
More informationUsing the Serial FlashLoader With the Quartus II Software
Using the Serial FlashLoader With the Quartus II Software July 2006, ver. 3.0 Application Note 370 Introduction Using the Joint Test Action Group () interface, the Altera Serial FlashLoader (SFL) is the
More informationImplementing LED Drivers in MAX and MAX II Devices. Introduction. Commercial LED Driver Chips
Implementing LE rivers in MAX and MAX II evices October 2008 AN-286-2.3 Introduction iscrete LE driver chips are common on many system boards. Altera MAX II, MAX 7000B, MAX 7000A, MAX 3000A, and MAX 7000S
More informationWhite Paper AHB to Avalon & Avalon to AHB Bridges
White Paper AHB to & to AHB s Introduction For years, system designers have been manually connecting IP peripheral functions to embedded processors, taking anywhere from weeks to months to accomplish.
More informationFFT MegaCore Function User Guide
FFT MegaCore Function User Guide 101 Innovation Drive San Jose, CA 95134 www.altera.com MegaCore Version: 11.0 Document Date: May 2011 Copyright 2011 Altera Corporation. All rights reserved. Altera, The
More informationAIRbus Interface. Features Fixed width (8-, 16-, or 32-bit) data transfers (dependent on the width. Functional Description. General Arrangement
AIRbus Interface December 22, 2000; ver. 1.00 Functional Specification 9 Features Fixed width (8-, 16-, or 32-bit) data transfers (dependent on the width of the data bus) Read and write access Four-way
More informationUsing Library Modules in VHDL Designs
Using Library Modules in VHDL Designs This tutorial explains how Altera s library modules can be included in VHDL-based designs, which are implemented by using the Quartus R II software. Contents: Example
More informationSimultaneous Multi-Mastering with the Avalon Bus
Simultaneous Multi-Mastering with the Avalon Bus April 2002, ver. 1.1 Application Note 184 Introduction The Excalibur Development Kit, featuring the Nios embedded processor version 2.1 supports an enhanced
More informationDebugging Nios II Systems with the SignalTap II Logic Analyzer
Debugging Nios II Systems with the SignalTap II Logic Analyzer May 2007, ver. 1.0 Application Note 446 Introduction As FPGA system designs become more sophisticated and system focused, with increasing
More informationTable 1 shows the issues that affect the FIR Compiler, v6.1. Table 1. FIR Compiler, v6.1 Issues.
December 2006, Version 6.1 Errata Sheet This document addresses known errata and documentation issues for the Altera FIR Compiler, v6.1. Errata are functional defects or errors, which may cause an Altera
More informationNios Soft Core Embedded Processor
Nios Soft Core Embedded Processor June 2000, ver. 1 Data Sheet Features... Preliminary Information Part of Altera s Excalibur TM embedded processor solutions, the Nios TM soft core embedded processor is
More informationSignalTap II with Verilog Designs. 1 Introduction. For Quartus II 13.1
SignalTap II with Verilog Designs For Quartus II 13.1 1 Introduction This tutorial explains how to use the SignalTap II feature within Altera s Quartus II software. The SignalTap II Embedded Logic Analyzer
More informationUsing MAX 3000A Devices as a Microcontroller I/O Expander
Using MAX 3000A Devices as a Microcontroller I/O Expander August 2003, Ver 1.0 Application Note 265 Introduction Advantages of Using MAX 3000A Devices Many microcontrollers and microprocessors limit I/O
More informationUsing Library Modules in VHDL Designs
Using Library Modules in VHDL Designs This tutorial explains how Altera s library modules can be included in VHDL-based designs, which are implemented by using the Quartus R II software. Contents: Example
More informationDesign Tools for 100,000 Gate Programmable Logic Devices
esign Tools for 100,000 Gate Programmable Logic evices March 1996, ver. 1 Product Information Bulletin 22 Introduction The capacity of programmable logic devices (PLs) has risen dramatically to meet the
More informationFFT MegaCore Function
FFT MegaCore Function March 2007, MegaCore Version 6.1 Errata Sheet This document addresses known errata and documentation issues for the FFT MegaCore function version 6.1. Errata are functional defects
More informationPOS-PHY Level 4 MegaCore Function
POS-PHY Level 4 MegaCore Function November 2004, MegaCore Version 2.2.2 Errata Sheet Introduction This document addresses known errata and documentation changes for version v2.2.2 of the POS-PHY Level
More informationUsing MAX II & MAX 3000A Devices as a Microcontroller I/O Expander
Using MAX II & MAX 3000A Devices as a Microcontroller I/O Expander March 2004, ver 2.0 Application Note 265 Introduction Advantages of Using MAX II & MAX 3000A Devices Many microcontroller and microprocessors
More informationIncreasing Productivity with Altera Quartus II to I/O Designer/DxDesigner Interface
Increasing Productivity with Altera Quartus II to I/O Designer/DxDesigner Interface Steven Strell Senior Applications Engineer, Altera Corporation (408) 544-7624 sstrell@altera.com 1 Abstract Today s high-speed,
More informationLeonardoSpectrum & Quartus II Design Methodology
LeonardoSpectrum & Quartus II Design Methodology September 2002, ver. 1.2 Application Note 225 Introduction As programmable logic device (PLD) designs become more complex and require increased performance,
More informationDecember 2002, ver. 1.3 Application Note 191. Six individual interrupts Six-bit priority scheme Five-bit priority scheme plus one individual interrupt
Excalibur Solutions Using the Interrupt Controller December 22, ver..3 Application Note 9 Introduction This document describes the operation of the interrupt controller for the Excalibur devices, particularly
More informationWhite Paper The Need for a High-Bandwidth Memory Architecture in Programmable Logic Devices
Introduction White Paper The Need for a High-Bandwidth Memory Architecture in Programmable Logic Devices One of the challenges faced by engineers designing communications equipment is that memory devices
More informationMixed Signal Verification of an FPGA-Embedded DDR3 SDRAM Memory Controller using ADMS
Mixed Signal Verification of an FPGA-Embedded DDR3 SDRAM Memory Controller using ADMS Arch Zaliznyak 1, Malik Kabani 1, John Lam 1, Chong Lee 1, Jay Madiraju 2 1. Altera Corporation 2. Mentor Graphics
More informationExcalibur Solutions DPRAM Reference Design
Excalibur Solutions DPRAM Reference Design August 22, ver. 2.3 Application Note 173 Introduction The Excalibur devices are excellent system development platforms, offering flexibility, performance, and
More informationFPGA Co-Processing Architectures for Video Compression
Co-Processing Architectures for Compression Overview Alex Soohoo Altera Corporation 101 Innovation Drive San Jose, CA 95054, USA (408) 544-8063 asoohoo@altera.com The push to roll out high definition video
More informationSimple Excalibur System
Excalibur Solutions Simple Excalibur System August 2002, ver. 1.0 Application Note 242 Introduction This application note describes a simple Excalibur system design that consists of software running on
More informationQuartus II Introduction Using Verilog Design
Quartus II Introduction Using Verilog Design This tutorial presents an introduction to the Quartus R II CAD system. It gives a general overview of a typical CAD flow for designing circuits that are implemented
More informationDDR & DDR2 SDRAM Controller Compiler
DDR & DDR2 SDRAM Controller Compiler march 2007, Compiler Version 7.0 Errata Sheet This document addresses known errata and documentation issues for the DDR and DDR2 SDRAM Controller Compiler version 7.0.
More informationPCI Express Multi-Channel DMA Interface
2014.12.15 UG-01160 Subscribe The PCI Express DMA Multi-Channel Controller Example Design provides multi-channel support for the Stratix V Avalon Memory-Mapped (Avalon-MM) DMA for PCI Express IP Core.
More informationUsing Flexible-LVDS Circuitry in Mercury Devices
Using Flexible-LVDS Circuitry in Mercury Devices November 2002, ver. 1.1 Application Note 186 Introduction With the ever increasing demand for high bandwidth and low power consumption in the telecommunications
More informationUsing the Nios Development Board Configuration Controller Reference Designs
Using the Nios Development Board Controller Reference Designs July 2006 - ver 1.1 Application Note 346 Introduction Many modern embedded systems utilize flash memory to store processor configuration information
More informationUsing Library Modules in VHDL Designs. 1 Introduction. For Quartus II 12.1
Using Library Modules in VHDL Designs For Quartus II 12.1 1 Introduction This tutorial explains how Altera s library modules can be included in VHDL-based designs, which are implemented by using the Quartus
More informationWhite Paper. Floating-Point FFT Processor (IEEE 754 Single Precision) Radix 2 Core. Introduction. Parameters & Ports
White Paper Introduction Floating-Point FFT Processor (IEEE 754 Single Precision) Radix 2 Core The floating-point fast fourier transform (FFT) processor calculates FFTs with IEEE 754 single precision (1
More informationDDR & DDR2 SDRAM Controller Compiler
DDR & DDR2 SDRAM Controller Compiler May 2006, Compiler Version 3.3.1 Errata Sheet This document addresses known errata and documentation issues for the DDR and DDR2 SDRAM Controller Compiler version 3.3.1.
More informationImplementing the Top Five Control-Path Applications with Low-Cost, Low-Power CPLDs
Implementing the Top Five Control-Path Applications with Low-Cost, Low-Power CPLDs WP-01146-1.2 White Paper Since their introduction in the mid-1980s and across all end markets, CPLDs have been design
More informationaltshift_taps Megafunction User Guide
altshift_taps Megafunction User Guide 101 Innovation Drive San Jose, CA 95134 (408) 544-7000 www.altera.com Document Version: 1.0 Document Date: September 2004 Copyright 2004 Altera Corporation. All rights
More informationDDR & DDR2 SDRAM Controller Compiler
DDR & DDR2 SDRAM Controller Compiler August 2007, Compiler Version 7.1 Errata Sheet This document addresses known errata and documentation issues for the DDR and DDR2 SDRAM Controller Compiler version
More informationRapidIO MegaCore Function
March 2007, MegaCore Function Version 3.1.1 Errata Sheet This document addresses known errata and documentation issues for the Altera RapidIO MegaCore function version 3.1.1. Errata are functional defects
More informationSERDES Transmitter/Receiver (ALTLVDS) Megafunction User Guide
SERDES Transmitter/Receiver (ALTLVDS) Megafunction User Guide 101 Innovation Drive San Jose, CA 95134 www.altera.com Software Version: 8.1 Document Version: 4.0 Document Date: November 2008 UG-MF9504-4.0
More informationIntel Stratix 10 Logic Array Blocks and Adaptive Logic Modules User Guide
Intel Stratix 10 Logic Array Blocks and Adaptive Logic Modules User Guide Subscribe Send Feedback Latest document on the web: PDF HTML Contents Contents 1 Intel Stratix 10 LAB and Overview... 3 2 HyperFlex
More informationExercise 1 In this exercise you will review the DSSS modem design using the Quartus II software.
White Paper DSSS Modem Lab Background The direct sequence spread spectrum (DSSS) digital modem reference design is a hardware design that has been optimized for the Altera APEX DSP development board (starter
More informationWhite Paper Assessing FPGA DSP Benchmarks at 40 nm
White Paper Assessing FPGA DSP Benchmarks at 40 nm Introduction Benchmarking the performance of algorithms, devices, and programming methodologies is a well-worn topic among developers and research of
More informationFor Quartus II Software. This Quick Start Guide will show you how to set up a Quartus
Quick Start Guide For Quartus II Software This Quick Start Guide will show you how to set up a Quartus II project, enter timing requirements, and compile the design into an Altera device. 1 Three-Step
More informationNios DMA. General Description. Functional Description
Nios DMA January 2003, Version 1.1 Data Sheet General Functional The Nios DMA module is an Altera SOPC Builder library component included in the Nios development kit. The DMA module allows for efficient
More informationIntel Stratix 10 H-tile Hard IP for Ethernet Design Example User Guide
Intel Stratix 10 H-tile Hard IP for Ethernet Design Example User Guide Updated for Intel Quartus Prime Design Suite: 17.1 Subscribe Send Feedback Latest document on the web: PDF HTML Contents Contents
More informationE3 Mapper MegaCore Function (E3MAP)
MegaCore Function (E3MAP) March 9, 2001; ver. 1.0 Data Sheet Features Easy-to-use MegaWizard Plug-In generates MegaCore variants Quartus TM II software and OpenCore TM feature allow place-androute, and
More informationUsing DCFIFO for Data Transfer between Asynchronous Clock Domains
Using DCFIFO for Data Transfer between Asynchronous Clock Domains, version 1.0 Application Note 473 Introduction In the design world, there are very few designs with a single clock domain. With increasingly
More informationSONET/SDH Compiler. Introduction. SONET/SDH Compiler v2.3.0 Issues
January 2005, Compiler Version 2.3.0 Errata Sheet Introduction This document addresses known errata and documentation changes for version 2.3.0 of the SONET/SDH Compiler. Errata are design functional defects
More informationWhite Paper Taking Advantage of Advances in FPGA Floating-Point IP Cores
White Paper Recently available FPGA design tools and IP provide a substantial reduction in computational resources, as well as greatly easing the implementation effort in a floating-point datapath. Moreover,
More informationQuartus II Introduction Using Schematic Design
Quartus II Introduction Using Schematic Design This tutorial presents an introduction to the Quartus R II CAD system. It gives a general overview of a typical CAD flow for designing circuits that are implemented
More information