The ALTDLL and ALTDQ_DQS megafunctions provide a custom external memory
interface solution to access an FPGA's architecture and allow you to build your own
custom external memory interface physical layer (PHY) blocks.
®
Altera
when implementing a specialized or customized intellectual property (IP) for an
Altera-supported external memory interface that is not supported in Altera's IP or a
proprietary interface that is not supported by Altera.
The ALTDLL and ALTDQ_DQS custom external memory interface solution offers
more efficient logic synthesis and device implementation, and saves valuable design
time if you choose to code your own logic. The ALTDLL megafunction configures the
dedicated DQS phase-shift circuitry, and the ALTDQ_DQS megafunction implements
the read and write PHY required for the interface.
While the ALTDLL and ALTDQ_DQS custom external memory interface solution is
primarily for building custom memory interface PHY blocks, you can also use this
solution to interface with any external device, such as ASIC, ASSP or another FPGA,
through the double data rate (DDR) interface.
recommends that you use the ALTDLL and ALTDQ_DQS megafunctions
1The ALTDLL and ALTDQ_DQS megafunctions are specifically for memory interfaces
that support memory burst lengths of two. For common memory interfaces that
support memory burst lengths of four, Altera recommends that you use the
ALTMEMPHY- or UniPHY-based memory controllers to take advantage of the
benefits of Altera's IP and timing closure methodologies.
fFor more information about the ALTMEMPHY- or UniPHY-based memory controllers
that Altera offers, refer to the volume 3 of the External Memory Interface Handbook.
Device Support
The ALTDLL and ALTDQ_DQS megafunctions support the following Altera device
families:
The ALTDLL and ALTDQ_DQS megafunctions offer the following features:
■ ALTDLL
■A delay-locked loop (DLL) block to center-align the read strobe with read data.
■Phase offset control blocks to fine-tune the delay time on the read strobe using
static or dynamic offset.
■ ALTDQ_DQS
■Supports RLDRAM II memory interface.
■DDR registers on the input and output paths to read or write to an external
DDR interface.
■Half-rate registers to enable successful data transfers between the I/O registers
and the core logic.
■Access to dynamic on-chip termination (OCT) controls to switch between
parallel termination during reads to series termination during writes.
■Access to I/O delay chains to fine-tune delays on the data or strobe signals
statically or dynamically.
Figure 1–1 shows a high-level overview of how you can connect the ALTDQ_DQS
megafunction with other megafunctions such as ALTPLL, ALTDLL, and ALTIOBUF,
to create a full custom external memory interface. Figure 1–1 shows a 36-bit interface
created with ALTDQ_DQS instantiations, where each instantiation is configured in
the ×9 mode.
This chapter describes the FPGA design flow to implement a custom memory
interface datapath using the ALTDLL and ALTDQ_DQS megafunctions and Altera’s
FPGA hardware features.
Figure 2–1 shows the design flow for creating a custom memory datapath system
with the ALTDLL and ALTDQ_DQS megafunctions and the Quartus
After you identify the requirements for your custom external memory interface, the
first stage is to build a datapath to interface with the memory blocks.
To build the datapath, you must perform the following steps:
1. Create a project in the Quartus II software that targets the preferred Altera device.
2. Instantiate the ALTPLL megafunction to provide the required clocking scheme for
the custom PHY.
fFor more information about instantiating megafunctions and the clocking
scheme, refer to Instantiate the ALTPLL Megafunction section in volume 5 of
the External Memory Interface Handbook. For more information about using
PLLs, refer to theALTPLL Megafunction User Guide.
3. Instantiate the ALTDLL megafunction to implement the DLL.
Chapter 2: Getting Started2–2
Design Flow
4. Instantiate the ALTDQ_DQS megafunction to implement the read and write PHY
required for the interface.
5. Integrate the custom PHY with user logic, and a custom or third party memory
controller if needed.
6. Instantiate the ALTIOBUF megafunction to use the I/O buffers for pin
connections. This megafunction enables dynamic OCT capabilities for the
respective interface pins.
fFor more information about the pin connections, refer to “ALTIOBUF
Megafunction and Delay Chains Integration” on page 4–18. For more
information about the ALTIOBUF megafunction, refer to I/O Buffer
(ALTIOBUF) Megafunction User Guide.
7. Connect all the instances of ALTPLL, ALTDLL, ALTDQ_DQS, ALTIOBUF, and
other custom memory controllers in the Quartus II software.
The following sections discuss other megafunctions or customized controller logic
that are used in some cases.
ALTOCT Megafunction
If you use the OCT capabilities in the targeted devices, you eliminate the need for
external series or parallel termination resistors, and you simplify the design of a PCB.
If the I/O in your design uses calibrated series, parallel, or dynamic termination, your
design requires a calibration block. This block requires a pair of R
located in a bank that shares the same V
voltage as your memory interface. This
CCIO
calibration block is not required to be in the same bank or side of the device as the I/O
elements it is serving. To use these capabilities in the FPGA, you must turn on the Use dynamic OCT path option when parameterizing the ALTDQ_DQS megafunction,
and instantiate the ALTOCT megafunction.
and RDN pins
UP
fFor more information about the OCT capabilities in the DQ/DQS path, refer to
“DQ/DQS OCT Path” on page 4–14.
Customized Controller Logic
In some cases, you require a customized controller logic to control the PHY created
with the ALTDLL and ALTDQ_DQS instances. You must create a controller logic for
the following instances:
■Controller logic for data, data_valid, and strobe pins for the custom external
memory interface.
■If you use calibrated termination, controller logic for all pins in the ALTOCT
instances associated with the custom external memory interface.
fFor more information about calibrated termination, refer to Dynamic
Calibrated On-Chip Termination (ALTOCT) Megafunction User Guide.
After instantiating the megafunctions, the Quartus II software generates design
source files and Verilog or VHDL simulation model files. Simulate these files in
Modelsim-AE, Modelsim SE, or other third-party functional simulator tools.
fFor information about functional and gate-level timing simulations, refer to
Simulating Altera Designs chapter in volume 3 of the Quartus II Handbook.
Create Timing Constraints
The ALTDLL and ALTDQ_DQS megafunctions do not provide automatic timing
scripts for custom external memory interfaces. You must create your own timing
constraints for the following paths and clocks:
■ Timing paths from FPGA I/O to external device.
■ Timing paths from I/O registers to core logic.
■ PLL and other clock constraints.
After creating your constraints, perform the timing analysis using the TimeQuest
timing analyzer in the Quartus II software.
fBecause the timing analysis for custom external memory interfaces are the same as the
timing analysis for source-synchronous interfaces, refer to the Timing Analysis section
in volume 3 of the Quartus II Handbook andAN 433: Constraining and Analyzing
Source-Synchronous Interfaces.
The ALTDLL and ALTDQ_DQS custom PHY solution supports timing analysis using
the TimeQuest timing analyzer with Synopsys Design Constraints (SDC)
assignments. You can derive the timing constraints from the external device data
sheet and tolerances from the board layout.
fFor more information about timing constraints, refer to “Appendix D: Interface
Timing Analysis” section in AN 328: Interfacing DDR2 SDRAM with Stratix II, Stratix II
GX, and Arria GX Devices.
For more information about creating timing constraints in SDC format for the
TimeQuest timing analyzer, refer to the The Quartus II TimeQuest Timing Analyzer
chapter of the Quartus II Handbook. Depending on which simulation tool you are
using, refer to the appropriate chapter in the Simulation section in volume 3 of the
Quartus II Handbook.
Compile the Design and Verify Timing
After constraining your design, compile your design in the Quartus II software to
generate timing reports to verify whether timing has been met.
After compiling your design in the Quartus II software, run the verifying timing
script to produce the timing report for different paths, such as write data, read data,
address and command, and core (entire interface) timing paths in your design.
Design Example: Implementing Read Paths Using Stratix III Devices
The timing analyzer reports margins on the following paths:
■ Address and command setup and hold margin
■ Half-rate address and command setup and hold margin
■ Core setup and hold margin
■ Core reset and removal setup and hold margin
■ Write setup and hold margin
■ Read capture setup and hold margin
fFor more information about timing analysis and reporting using the ALTDLL and
ALTDQ_DQS external memory solution, refer to the Analyzing Timing of Memory IP
chapter in volume 2 of the External Memory Interface Handbook.
Adjust Constraints
The timing report shows the worst case setup and hold margin for the different paths
in your design. If the setup and hold margin do not meet timing requirements, adjust
the phase setting of the clocks that latch the data.
For example, the address and command outputs are clocked by an address and
command clock that may be different than the system clock, which is 0°. The system
clock clocks the clock outputs going to the memory. If the report timing script
indicates that using the default phase setting for the address and command clock
results in more hold time than setup time, adjust the address and command clock to
be less negative than the default phase setting to ensure that there is less hold margin.
Similarly, adjust the address and command clock to be more negative than the default
phase setting if there is more setup margin.
Design Example: Implementing Read Paths Using Stratix III Devices
This section provides a walkthrough of a simple design example. The design example
demonstrates a Stratix III device reading from an external DDR2 SDRAM. The DDR2
external memory interface is implemented using the ALTDLL and ALTDQ_DQS
megafunctions. This design requires 1 DQS and 8 DQ input pins. The DQS frequency
for the design is 150 MHz and the data rate is 300 Mbps.
1For a more complex design example, refer to “Design Example: Implementing
Half-Rate DDR2 Interface in Stratix III Devices” on page 4–49.
fThe design examples are available next to the ALTDLL and ALTDQ_DQS
Megafunctions User Guide on the Documentation: User Guides page of the Altera
Design Example: Implementing Read Paths Using Stratix III Devices
Generate the Megafunctions
Create a Quartus II project and generate the following megafunctions:
■ ALTPLL megafunction
■ ALTDLL megafunction
■ ALTDQ_DQS megafunction
■ ALTIOBUF megafunction
Create a Quartus II Project
Create a project in the Quartus II software that targets the EP3SL150F1152-C2 device
for the DDR2 SDRAM by performing the following steps:
1. Open the altdll_altdq_dqs_DesignExample_ex1.zip file and extract the
altdll_altdq_dqs_design_ex1.qar file.
2. In the Quartus II software, restore the altdll_altdq_dqs_design_ex1.qar file into
your working directory.
3. Open the altdll_altdq_dqs_design_ex1.bdf file.
Generate the ALTPLL Megafunction
Before generating the ALTDLL and ALTDQ_DQS megafunctions, you must generate
the ALTPLL megafunction first by performing the following steps:
1. Double-click anywhere on the Block Editor window. The Symbol window appears.
2. Click MegaWizard Plug-In Manager. Page 1 of the MegaWizard
Manager appears.
3. Select Create a new custom megafunction variation.
4. Click Next. Page 2a of the MegaWizard Plug-In Manager appears.
5. Select Create a new custom megafunction variation.
6. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select ALTPLL,
and Ver ilo g HD L, and type the file name as PLL_50MHz.v.
7. On the Parameter Settings tab, on the General/Modes page, specify the
parameters as shown in Tab le 2 –1 . These parameters configure the general
settings for the ALTPLL instance.
Table 2–1. ALTPLL Parameter Settings
SettingsValue
Currently selected device familyStratix III
Match project/defaultTurned on.
What is the frequency of the inclock0 input?50 MHz
How will the PLL outputs be generated?With no compensation
This option is selected because the PLL is
used to clock the ALTDLL instance only.
Design Example: Implementing Read Paths Using Stratix III Devices
8. On the Output Clocks tab, on the clk c0 page, specify the parameters as shown in
Tab le 2 –2 . You don’t have to parameterize the other pages on the Output Clocks
tab because you only use one clock for this design.
Table 2–2. ALTPLL Output Clocks/clk c0 Settings
SettingsValue
Use this clockTurned on
Enter output clock frequency150 Mhz
Clock phase shift0 deg
Clock duty cycle (%)50
9. Click Finish.
10. Click Finish. The ALTPLL instance is generated.
11. Click OK to close the Symbol window.
12. Place the instance on the altdll_altdq_dqs_design_ex1.bdf Block Editor.
Generate the ALTDLL Megafunction
To generate the ALTDLL megafunction, perform the following steps:
1. Double-click anywhere on the Block Editor window. The Symbol window appears.
2. Click MegaWizard Plug-In Manager. Page 1 of the MegaWizard Plug-In Manager
appears.
3. Select Create a new custom megafunction variation.
4. Click Next. Page 2a of the MegaWizard Plug-In Manager appears.
5. Select Create a new custom megafunction variation.
6. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select ALTDLL,
and Ver ilo g HD L, and type the file name as dll_150MHz.v.
7. On the Parameter Settings tab, on the General page, specify the parameters as
shown in Tabl e 2– 3. These parameters configure the general settings for the
ALTDLL instance.
Table 2–3. ALTDLL GeneraL Settings
SettingsValue
Currently selected device familyStratix III
Match project/defaultTurned on.
Number of Delay Chains12
Refer to Stratix III Device Datasheet: DC and
Switching Characteristics of Stratix III Devices
chapter in the Stratix III Device Handbook, and
pick a DLL mode that supports 150 MHz and
find the DLL setting.
The design is intended to run slow, so you do
not need to select this parameter. However, if
the read timing is unbalanced, you can
fine-tune the DQS phase shift using this
parameter.
Turned off.
Turned off.
Turned off.
9. Click Finish.
10. Click Finish. The ALTDLL instance is generated.
11. Click OK to close the Symbol window.
12. Place the instance on the Block Editor.
Generate the ALTDQ_DQS Megafunction
To generate the ALTDQ_DQS megafunction, perform the following steps:
1. Double-click anywhere on the Block Editor window. The Symbol window appears.
2. Click MegaWizard Plug-In Manager. Page 1 of the MegaWizard Plug-In Manager
appears.
3. Select Create a new custom megafunction variation.
4. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select
ALTDQ_DQS, and Verilog HDL, and type the file name as dq_dqs_input_path.v.
5. On the Parameter Settings page, specify the parameters as shown in Ta bl e 2– 5.
These parameters configure the general settings for the ALTDQ_DQS instance.
Design Example: Implementing Read Paths Using Stratix III Devices
.
Table 2–5. Parameter Settings
ParameterValue
RLDRAMII ModeNONE
Number of bidirectional DQ0
Number of input DQ8
Number of output DQ0
Number of stages in dqs_delay_chain3
DQS input frequency150 MHz
Use half-rate componentsTurned off.
The design uses full-rate
memory components, so
you do not select this
option.
Use Dynamic OCTTurned off.
Dynamic OCT is not used for
input paths.
Add memory interface specific fitter grouping assignmentsTurned on.
6. On the Advanced Options tab, on the DQS IN page, specify the parameters as
shown in Tabl e 2– 6. These parameters configure the DQS input path of the
ALTDQ_DQS instance.
Table 2–6. Advance Options (DQS IN)
ParameterSub-optionsValue
Enable DQS Input Path—Turned on.
Enable dqs_delay_chain—Selected.
Advanced delay chain optionsSelect dynamically using
Turned off.
configuration registers
DQS delay chain
‘delayctrlin’ port source
DLL
The DQS delay-chain settings
is based on the DLL.
DQS Delay Buffer ModeLow
Use the same mode selected
in the DLL settings.
DQS Phase Shift9000..
Specify a 90° DQS phase shift.
The phase-shift value must
inter-relate with the selected
dqs_delay_chain stage.
Enable DQS offset controlTurned off.
Disable DQS delay fine-tuning
using offset feature.
Design Example: Implementing Read Paths Using Stratix III Devices
7. On the DQS OUT/OE page, turn off the Enable DQS output path option. When
you deselect the Enable DQS output path option, the other options on this page
are disabled.
8. On the DQ IN page, specify the parameters as shown in Tabl e 2– 7. These
parameters configure the DQ input path of the ALTDQ_DQS instance.
Table 2–7. Advance Options (DQ IN)
OptionsValue
DQ input register modeDDIO
Select DDIO to enable double data rate capture for
DQ.
DQ input register clock sourcedqs_bus_out port and turn off Connect DDIO clkn to
DQS_BUS from complementary DQSn
Use DQ input phase alignmentTurned off.
The feature is for half-rate components; the design
uses full-rate memory components.
Use DQ input delay chainTurned on.
9. On the DQ OUT/OE page, all the options are automatically disabled because the
design is not using output DQ. The parameters on this page configure the DQ
output and OE paths of the ALTDQ_DQS instance.
10. On the Half-rate page, for the IO Clock Divider Invert Phase parameter, turn on
Never because the design requires full-rate components. The other options are
automatically disabled. The parameters on this page configure the half-rate
settings of the ALTDQ_DQS instance.
11. On the OCT Path page, all the options are automatically disabled because the
design is not using input and output DQS or bidirectional DQ. The parameters on
this page configure the OCT path of the ALTDQ_DQS instance.
12. On the DQSn I/O page, turn off the Use DQSn I/O option because the design is
not using DQSn. When you turn off the Use DQSn I/O option, the other options
on this page are disabled.
13. In the Reset/Config Ports tab, tun off all the parameters.
14. Click Finish.
15. Click Finish. The ALTDQ_DQS instance is generated.
Design Example: Implementing Read Paths Using Stratix III Devices
Generate the ALTIOBUF Megafunction
You must generate the ALTIOBUF megafunction to set the following I/O buffer
settings:
■ 1 input buffer for input DQS pin
■ 8 input buffers for input DQ pins
To generate the ALTIOBUF megafunction, perform the following steps:
1. Double-click anywhere on the Block Editor window. The Symbol window appears.
2. Click MegaWizard Plug-In Manager. Page 1 of the MegaWizard Plug-In Manager
appears.
3. Select Create a new custom megafunction variation.
4. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select
ALTIOBUF, and Ver ilo g HD L, and type the file name as ibuf_input_dqs.v (for
DQS pin) or ibuf_input_dq.v (for DQ pins).
5. On the Parameter Settings page, specify the parameters as shown in Ta bl e 2– 8.
These parameters configure the general settings for the ALTIOBUF instance.
Table 2–8. ALTIOBUF General Settings
Value
Settings
1 input buffer for the
input DQS pins
8 input buffer for the
input DQ pins
Currently selected device familyStratix IIIStratix III
How do you want to configure this module?As an input bufferAs an input buffer
What is the number of buffers to be
18
instantiated?
Use bus hold circuitryTurned off.Turned off.
Use differential modeTurned off.Turned on.
Use open drain outputTurned off.Turned off.
Use output enable portTurned off.Turned off.
Use dynamic termination controlTurned off.Turned off.
Use series and parallel termination controlTurned off.Turned off.
6. On the Dynamic Delay Chains page, specify the parameters as shown in
Design Example: Implementing Read Paths Using Stratix III Devices
8. Click Finish. The ALTIOBUF instance is generated.
9. Click OK to close the Symbol window.
10. Place the instance on the Block Editor.
fFor more information about connecting all the instances, refer to “Integrate the I/O Buffer Modules with the
ALTDQ_DQS modules” on page 4–55.
11. On the Block Editor, connect all the instances as shown in Figure 2–2 on page 2–11.
Figure 2–2. Block Diagram of the Design Example
2–12Chapter 2: Getting Started
Design Example: Implementing Read Paths Using Stratix III Devices
Compile and Simulate the Design
On the Processing menu, click Start Compilation to compile the design. After the
design is compiled, you can view the implemention in the RTL Viewer. You can also
view the resource usage in the Compilation Report.
After you compile your design, simulate the design in the ModelSim-Altera software
to generate a waveform display of the device behavior. Set up and simulate the design
in the ModelSim-Altera software by performing the following steps:
1. Unzip the altdll_altdq_dqs_ex1_msim.zip file to your preferred working
directory on your PC.
2. Start the ModelSim-Altera software.
3. On the File menu, click Change Directory.
4. Select the folder in which you unzipped the files in the
altdll_altdq_dqs_ex1_msim.zip folder.
5. Click OK.
6. On the Tools menu, point to Tc l and click Execute Macro.
7. Select the altdll_altdq_dqs_ex1_msim.do file and click Open. This is a script file
for the ModelSim-Altera software to automate all the necessary settings for the
simulation.
8. Verify the results with the simulation waveform.
1You can rearrange, remove and add signals, and change the radix by
modifying the script in the altdll_altdq_dqs_ex1_msim.do file.
The Quartus II software provides the MegaWizard Plug-In Manager that helps you
quickly customize your megafunction variation. The parameter editor provides a list
of megafunctions and available options for each variation.
Altera recommends that you use the parameter editor to instantiate the ALTDLL and
ALTDQ_DQS megafunctions. However, for advanced users, if you want to bypass the
MegaWizard Plug-In Manager and use the megafunctions as directly parameterized
instantiations in your design, you can use the clear box generator. For more
information about the clear box generator, refer to Appendix A, Clear Box Generator.
1Some advanced parameters can only be modified through the clear box parameters.
ALTDLL Parameter Editor
This section provides information about the ALTDLL MegaWizard parameters.
3. Parameter Settings
1For advanced users who may use the clearbox generator, the clearbox parameter
names are provided for the corresponding MegaWizard parameters.
The ALTDLL Parameter Settings page in the ALTDLL parameter editor allows you to
configure the parameters in the following pages:
■ General
■ DLL Offset Controls/Optional Ports
Tab le 3 –1 shows the options available on the General page.
Represents the number of delay buffers in the delay loop.
The DLL consists of 6, 8, 10, 12, or 16 DLL-controlled
delay buffers chained together. The total delay in the DLL
delay chain is computed with the following equation:
delay = delay_chain_length
x delay_buffer_delay
The DLL uses the delay chain to implement a 360° phase
shift. By comparing the incoming clock to the 360°-shifted
clock, the DLL determines the delay setting to implement
an actual 360° phase shift in its delay chain. Because each
delay buffer is identical, each buffer in the delay chain
implements a phase shift that is equal to
(360/delay_chain_length)°.
The default value is 12.
DQS Delay Buffer
Mode
Low or HighDELAY_BUFFER_
MODE
Specifies the frequency mode for the variable delay
buffers.
If you select Low, the
dll_offset_ctrl_a_offsetctrlout [5..0]
or dll_offset_ctrl_b_offsetctrlout [5..0] output is limited to a maximum value of 63.
If you select High, the output is limited to a maximum value
of 31.
The default value is Low.
Input Clock
Frequency
INPUT_FREQUENCYSpecifies the frequency of the clock (in MHz) that is
connected to the clk input port. This frequency must be
within the valid range for the device you are using. You can
specify a duration in ps. The value is in floating-point
format with no decimal point limit.
The default value is 300 MHz.
For information about the clock range for the Altera
devices, refer to the respective device handbook.
Turn on jitter
reduction
—JITTER_REDUCTIONEnables the jitter reduction circuit. Jitter affects the signal
integrity of the clock signal from a PLL clock source or an
external clock pin. If you turn on this parameter, the jitter
reduction circuit is enabled on the
dll_delayctrlout[5..0] and
dll_offset_ctrl_a_offsetctrlout [5..0],
or the dll_offset_ctrl_b_offsetctrlout
[5..0] output port.
When the jitter reduction circuit is enabled, the DLL may
require up to 1,024 clock cycles to lock. When the jitter
reduction circuit is disabled, the DLL requires only up to
256 clock cycles to lock.
The DLL Offset Controls/Optional Ports page allows you to instantiate the DLL
offset control blocks (A and B), specify whether to use static offset, and create the
dll_aload and dll_dqsupdate optional ports. Tab le 3– 2 shows the options
available on DLL Offset Controls/Optional Ports page.
.
Table 3–2. Options on DLL Offset Controls/Optional Ports Page (Part 1 of 2)
Clear Box
Parameter NameLegal Value
DLL Phase Offset
Control A
Instantiate
dll_offset_ctrl
block
Set statically
to
or
Set
dynamically
Parameter NameDescription
USE_DLL_OFFSET_
CTRL_A
Instantiates DLL_OFFSET_CTRL_A block. The block
can be placed either at the top, bottom, or side of the
FPGA device, depending on how the Quartus II Fitter
places it. If you turn on this parameter, you must
specify whether you want to set the blocks statically or
dynamically.
using offset
input port
–63 to 63DLL_OFFSET_CTRL_A_
STATIC_OFFSET
The Set statically to option is a signed integer. Turn on
this option if you want a fixed offset value, and key in
the value you want.
This fixed value is added to the DLL feedback counter
and the output is generated on the
The Set dynamically using offset input port option
determines the output of the
dll_offset_ctrl_a_offsetctrlout
[5..0] output port. Turn on this option if you want a
dynamic offset value.
If you turn on this option, depending on whether the
dll_offset_ctrl_a_addnsub signal is
asserted or not, the phase offset specified on the offset
input bus is added or subtracted from the DLL feedback
counter output to get the
Table 3–2. Options on DLL Offset Controls/Optional Ports Page (Part 2 of 2)
Clear Box
Parameter NameLegal Value
DLL Phase Offset
Control B
Instantiate dll
offset_ctrl block
Set statically
to
or
Set
dynamically
using offset
Parameter NameDescription
USE_DLL_OFFSET_
CTRL_B
Instantiates DLL_OFFSET_CTRL_B block. The block
can be placed either at the top, bottom, or side of the
FPGA device, depending on how the Quartus II Fitter
places it.
If you turn on this option, you must specify whether
you want to set the blocks statically or dynamically.
input port
–63 to 63DLL_OFFSET_CTRL_B_
STATIC_OFFSET
The Set statically to option is a signed integer.
Turn on this option if you want a fixed offset value, and
key in the value you want.
This fixed value is added to the DLL feedback counter
and the output is generated on the
The Set dynamically using offset input port option
determines the output of the
dll_offset_ctrl_b_offsetctrlout
[5..0] output bus. Turn on this option if you want a
dynamic offset value.
If you turn on this option, depending on whether the
dll_offset_ctrl_b_addnsub signal is
asserted or not, the phase offset specified on the offset
input bus is added or subtracted from the DLL feedback
counter output to get the
dll_offset_ctrl_b_offsetctrlout
[5..0]output.
Optional Ports
Create a
dll_aload
port
—DLL_ALOADEnables the asynchronous-load signal for the DLL up or
down counter. When the dll_aload signal is high,
the counter is asynchronously loaded with the initial
delay setting of 16 in low-frequency mode when you
select Low for the DQS Delay Buffer Mode parameter,
or 32 in high-frequency mode when you select High for
the DQS Delay Buffer Mode parameter. This input
defaults to GND.
Optional Ports
Create a
‘dll_dqsupdate’
port
— DLL_DQSUPDATEEnables the update-enable signal for the delay-setting
latches in the DQS pins. This signal only feeds the
dqsupdateen port of the ALTDQ_DQS
megafunction.
To use the dll_dqsupdate signal, you must turn on
the Enable DQS delay chain latches option on the
DQS IN page in the ALTDQ_DQS parameter editor.
The Simulation Model page allows you to optionally generate simulation model files.
The Summary page displays a list of the types of files to be generated. The
automatically generated variation file contains wrapper code in the language you
specified earlier. On this page, you can specify additional types of files to be
generated.
If you select Generate netlist on the Simulation Model page, the file for that netlist is
also available. A gray checkmark indicates a file that is automatically generated, and a
green checkmark indicates generation of an optional file
ALTDQ_DQS Parameter Editor
This section provides information about the ALTDQ_DQS MegaWizard parameters.
1For advanced users who may use the clearbox generator, the clearbox parameter
names are provided for the corresponding MegaWizard parameters.
The Parameter Settings page in the ALTDQ_DQS parameter editor allows you to
configure the parameters in Tab le 3 –3 .
Table 3–3. Options on Parameter Settings Page (Part 1 of 2)
Clear Box
Parameter NameLegal Value
RLDRAMII modeNONE, x9,
x18, or x36
Parameter NameDescription
RLDRAMII_MODEEnables RLDRAM II support for ALTDQ_DQS instance.
If you select x9 or x18 mode, the DK pins do not have
group assignments, but they must be placed in the same
bank or chip edge as the other pins in the interface. If you
select x36 mode, the DK/DK# pins must be placed
manually in DQS locations.
If you select x18 mode, place the DM pins in either group
0 or group 1, which forces QVLD to the other group. If you
select x36 mode, place the DM pins in group 0 or 1, and
QVLD to be in group 0 or 1.
All combinations are allowed. Not supported in Arria II GX.
Data mask pin
group
NONE,
GROUP0, or
GROUP1
DM_LOCSpecifies the group assignment for the DM pin group.
If you select NONE for the RLDRAMII mode option, then
this option defaults to NONE.
If you select x9 for the RLDRAMII mode option, then this
option defaults to NONE.
If you select x18 for the RLDRAMII mode option, then for
this option you can select either NONE, GROUP0, or
GROUP1. If you select GROUP0, then GROUP1 is used for
the Q valid signal group option, and if you select
GROUP1, then GROUP0 is used for the Q valid signal
group option.
If you select x36 for the RLDRAMII mode option, then for
this option you can select either NONE, GROUP0, or
G
ROUP1.
Not supported in Arria II GX devices.
Q valid signal
group
NONE,
GROUP0, or
GROUP1
QVLD_LOCSpecifies the group assignment for the Q valid signal
group.
If you select NONE for the RLDRAMII mode option, then
this option defaults to NONE.
If you select x9 for the RLDRAMII mode option, then this
option defaults to GROUP0.
If you select x18 for the RLDRAMII mode option, then this
option depends on the Data mask pin group option. If you
select GROUP0 for the Data mask pin group option, then
GROUP1 is defaulted for this option, and if you select
GROUP1 for the Data mask pin group option, then
GROUP0 is defaulted for this option.
If you select x36 for the RLDRAMII mode option, then for
this option you can select either NONE, GROUP0, or
GROUP1.
Not supported in Arria II GX devices.
Number of
bidirectional DQ
0–48NUMBER_OF_
BIDIR_DQ
Specifies the number of bidirectional DQ ports used in the
ALTDQ_DQS instance.
Table 3–3. Options on Parameter Settings Page (Part 2 of 2)
Clear Box
Parameter NameLegal Value
Number of input
0–48NUMBER_OF_
DQ
Number of output
0–48NUMBER_OF_
DQ
Number of stages
1, 2, 3, and 4 DQS_DELAY_CHAIN_
in
dqs_delay_chain
Parameter NameDescription
Specifies the number of input DQ ports used in the
INPUT_DQ
ALTDQ_DQS instance.
Specifies the number of output DQ ports used in the
OUTPUT_DQ
ALTDQ_DQS instance.
Specifies the stages of DQS_DELAY_CHAIN. The
PHASE_SETTING
number of stages depends on the intended phase shift
that you want to clock for <IO>_DDIO_IN block in the
DQ input path. The bigger the value you specify, the longer
the delay.
The coarse phase shift depends on this option. For
example, in Stratix IV devices, if you set the frequency
mode to 1, you will get a phase shift of 20°, 60°, 90°, or
120°. If you set Number of stages in dqs_delay_chain
value to 2, you will get 60° phase shift and if you set the
Number of stages in dqs_delay_chain value to 1, you will
get 30° phase shift.
DQS input
frequency
—DQS_INPUT_
FREQUENCY
Specifies the input frequency of the DQS strobe in MHz.
The input frequency must match the DLL (ALTDLL) input
frequency.
Use half rate
components
—USE_HALF_RATEInstantiates the half-rate blocks in the ALTDQ_DQS
instance. This parameter is used only when the external
memory interface requires half-rate mode.
Not supported in Arria II GX devices.
Use dynamic OCT
path
—USE_DYNAMIC_OCTInstantiates the dynamic OCT blocks in the ALTDQ_DQS
instance. This parameter enables access to dynamic OCT
paths on both DQ and DQS paths. The dynamic OCT
features enable parallel termination (R
the external memory and disable R
) during reads from
t
during writes to the
t
external memory.
Not supported in Arria II GX devices.
Add memory
interface specific
fitter grouping
—ADD_MEM_FITTER_
GROUP_ASSIGNMENTS
Enables the Quartus II Fitter to automatically assign the
memory interface I/O ports to the memory interface I/O
pins on the FPGA.
assignments
The Advanced Options page allows you to configure the parameters in the following
pages:
Tab le 3 –4 describes the options available on the DQS IN page. This page allows you
to configure the DQS input path. For more information about the DQS input path,
refer to “DQS Input Path” on page 4–6.
Table 3–4. Options on DQS IN Page (Part 1 of 3)
Clear Box
Parameter NameLegal Value
Enable DQS Input
—
Path
Enable DQS Input
—
Path
Delay chain
—USE_DQS_INPUT_
usage:
Enable dynamic
delay chain
Parameter NameDescription
USE_DQS_INPUT_PATH
USE_DQS_INPUT_PATH
Instantiates the DQS input path.
Instantiates the DQS input path.
Enables <IO>_INPUT_DELAY_CHAIN (D1) on the
DELAY_CHAIN
DQS input path. If you turn on this parameter,
DQS_DELAY_CHAIN block in the path is disabled. D1
is a run-time adjustable delay chain.
To configure delay chains dynamically, refer to “Delay
Chains” on page 4–15.
Delay chain
usage:
Enable
—USE_DQS_DELAY_
CHAIN
Enables DQS_DELAY_CHAIN block. The DQS delay
chain is a DLL-controlled delay chain used to phase shift
the DQS read clock.
dqs_delay_chain
Enable DQS
busout delay
chain
—USE_DQSBUSOUT_
DELAY_CHAIN
Enables DQSBUSOUT_DELAY_CHAIN (Da). This
busout delay chain fine-tunes the outputs of
DQS_DELAY_CHAIN block so that the DQS strobe
timing matches the DQS enable signal. The DQS strobe
has 15 steppable delays, with each step having 50 ps of
delay. Da is a run-time adjustable delay chain.
Enable DQS
enable block
—USE_DQS_ENABLEEnables DQS_ENABLE block. This block grounds the
DQS input strobe when the strobe goes to high
impedance state (Z) after a DDR read postamble.
Enable DQS
enable control
block
—USE_DQS_ENABLE_
CTRL
Enables DQS_ENABLE_CTRL block that controls a
DQS enable circuitry.
You must determine an efficient working
resync_postamble_clk clock phase which clocks
this block to ensure smooth data transfer. The
ALTDQ_DQS megafunction cannot determine the phase
for the data transfer.
Use round trip delay (RTD) analysis or create a custom
data training circuitry to write and read back a training
pattern to and from the memory device and then
dynamically adjust the PLL’s resyncronization clock
phase to find an efficient working phase.
Even though this block controls the DQS enable signal,
the megafunction does not consider the necessary
timing for this signal. Refer to the external memory
interface requirements for the necessary timing.
fine-tunes the outputs of DQS_ENABLE_CTRL block
so that the DQS enable signal timing matches the DQS
strobe. Db is a run-time adjustable delay chain.
Advanced Delay
Chain Options
Set dynamically
using
configuration
registers
Advanced Delay
Chain Options
DQS delay chain
delayctrlin port
source
—USE_DQS_DELAY_
CHAIN_PHASECTRLIN
DLL or Core DQS_DELAY_CHAIN_
DELAYCTRLIN_SOURCE
Determines the phasectrlin input for the phase
setting. If you turn on this option, it dynamically chooses
the phase applied to the dqsbusout output during the
FPGA run time. If you turn off this option, the phase
setting is determined by the Number of stages in dqs_delay_chain option in the Parameter Settings
page. This delay chain fine-tunes the DQS strobe signal.
Determines whether you want the delayctrlin port
to be controlled by DLL (outputs) or from the Core
(FPGA).
If you select DLL, the dll_delayctrlin[5..0]
port is connected to the
dll_delayctrlout[5..0] port of the DLL. The
DLL option adjusts the delay setting in
DQS_DELAY_CHAIN block across pressure, volume,
and temperature (PVT). Altera recommends that you
always select DLL to optimize the read capture at the DQ
input register. If you select Core, the
core_delayctrlin port is fed by the core.
Advanced Delay
Chain Options
DQS Delay Buffer
Mode
Low or HighDELAY_BUFFER_MODESpecifies whether the variable delay buffers in the
DQS_DELAY_CHAIN work in low-frequency or
high-frequency mode. The frequency mode must match
the frequency mode you select for the DQS Delay Buffer Mode parameter on the Parameter Settings page in the
ALTDLL parameter editor.
Advanced Delay
Chain Options
DQS Phase Shift
0–36,000DQS_PHASE_SHIFTSpecifies the phase shift between the delayed DQS signal
and the input DQS signal in units of hundreds of degrees,
for example, a 90° phase shift is represented as 9,000.
Use this parameter for static timing analysis only
be
cause timing analysis cannot determine the phase
shift through the delayctrlin[5..0],
phasectrlin[2..0], and
offsetctrlin[5..0] ports on the megafunction
the way a simulation can. This is an optional field and
defaults to 0.
Advanced Delay
Chain Options
Enable DQS
offset control
—DQS_OFFSETCTRL_
ENABLE
Enables offset values to be added to
DQS_DELAY_CHAIN block. If you turn on this option,
make sure that the ALTDLL instance is set to use the DLL
offset control blocks. This option connects the outputs
from the DLL offset control blocks to the DQS delay
chain block. This parameter is optional and turned off by
default.
the dqsupdateen signal. The DLL continues changing
its delay settings value due to the feedback system.
These DLL values are propagated through the
delayctrlout and offsetctrlout signals of
the DLL and DLL offset control blocks to
DQS_DELAY_CHAIN block to calibrate the necessary
delay settings. These values are updated based on the
dll_dqsupdate port from the DLL, which is
connected to the dqsupdateen port. To use this
option, you must turn on the Create a ‘use
dll_dqsupdate’ port option on the DLL Offset
Controls/Optional Ports page in the ALTDLL parameter
editor.
Advanced Enable
Control Options
DQS Enable
Control Phase
Setting
Set statically
to
or
Set
dynamically
using
configuration
DQS_ENABLE_CTRL_
PHASE_SETTING
If you turn on the Set statically to option, you can select
the phase setting for the delay chains from 0 up to 4 to
fine-tune the DQS enable signal.
If you turn on the Select dynamically using configuration registers option, the phase setting is
determined by the phasectrlin input for the delay
chains.
registers
Advanced Enable
Control Options
DQS Enable
Control Invert
Phase
Always,
Never, or
Based on
configuration
registers
DQS_ENABLE_CTRL_
INVERT_PHASE
If you turn on Always, the phase output is inverted.
If you turn on Never, the phase output is not inverted.
If you turn on Based on configuration registers, the
phaseinvertctrl input determines whether or not
the inverter is used. The inverter can be used to increase
the number of available phases. This is an optional field
and defaults to Never.
Enable DQS
enable block
delay chain
—USE_DQSENABLE_
DELAY_CHAIN
Enables DQS_ENABLE_DELAY_CHAIN
ch
ain fine-tunes the outputs of DQS_ENABLE_CTRL
block so that the DQS enable signal timing matches the
. This delay
DQS strobe. This delay chain is a run-time adjustable
delay chain.
Tab le 3 –5 describes options available on the DQS OUT/OE page. This page allows
you to configure the DQS output and output enable (OE) paths. For more information
about the DQS output and OE paths, refer to “DQS Output/OE Path” on page 4–12.
Table 3–5. Options on DQS OUT/OE Page(Part 1 of 2)
Enables DQS_OUTPUT_DELAY_CHAIN1 (D5) in the
DQS OE path. This parameter is used for deskew
purposes or SSN reduction. D6 is a run-time adjustable
delay chain.
delay chain1
DQS Output
Enable Options
Enable DQS
output enable
—USE_DQS_OE_DELAY_
CHAIN2
Enables DQS_OUTPUT_DELAY_CHAIN2 (D6) in the
DQS OE path. This parameter is used for deskew
purposes or SSN reduction. D6 is a run-time adjustable
delay chain.
delay chain2
DQS Output
Enable Options
DQS output
enable register
Not used, FF,
or DDIO
DQS_OE_REG_MODEEnables the DQS_OUTPUT_FF or
DQS_OUTPUT_DDIO_OUT output registers. Select FF
if you want flip-flop registers or DD
data rate I/O registers.
IO if you want double
mode
Tab le 3 –6 describes options available on the DQ IN page.This page allows you to
configure the DQ input path. For more information about the DQ input path, refer to
‘dqs_bus_ou
t’ port,
Inverted
‘dqs_bus_ou
t’ port, or
Core
Parameter NameDescription
Enables the DQ input registers (<IO>_INPUT_FF or
DQ_INPUT_REG_MODE
<IO>_DDIO_IN registers). Select FF if you want
flip-flop registers or DDIO if you want double data rate
I/O registers.
DQ_INPUT_REG_CLK_
SOURCE
Specifies how the DQ input registers should be clocked.
You can either clock it from the ‘dqs_bus_out’ port (DQS
input path), the Inverted ‘dqs_bus_out’ port (DQS input
path), or directly from the Core (FPGA).
Altera recommends that you turn on the ‘dqs_bus_out’ port option to clock the DQ input register. When reading
from the external memory, the DQ data that comes into
the DDIO must be center-aligned with the DQS strobe
that goes through the DQS input path and comes out the
dqs_bus_out port. By center-aligning the DDIO with
DQS strobe, you maximize the setup and hold margins at
the DQ input register.
You can also connect the dqs_bus_out port to the
full-rate DQ input register for complementary clocking
purpose as used in QDR and QDR II applications. You
can connect the dqs_bus_out port by turning on the
Connect DDIO clkn to DQS_BUS from complementary
DQSn option.
DQ Input Register
Options
Use DQ input
phase alignment
—USE_DQ_IPAEnables the input phase alignment (<IO>_IPA_LOW or
<IO>_IPA_HIGH) blocks. The input phase alignment
blocks represent the circuitry required to phase-shift the
input signal the DQ data for resynchronization and
alignment purpose. The resynchronization and alignment
are done to match the arrival delay of the DQS (triggered
by the fly-by clock on a DDR-DIMM) to the latest arrival
delay of a DQS from the DIMM.
Because this block is meant for resynchronization, the
ALTDQ_DQS megafunction does not consider the
clocking requirements of this block. You must figure the
clocking requirements using the RTD analysis or create a
custom data training circuitry to read or write back a
training pattern to and from the memory device, and
then dynamically adjust the PLL’s resyncronization clock
phase to find a good working phase.
For more component information about the available
alignment and resynchronization registers in this block,
refer to the “I/O Element (IOE) Registers” section in the
External Memory Interface chapter of the respective
device handbooks. For the available levelling delay
chains in this block, refer to the “Leveling Circuitry”
section in the External Memor
—DQ_RESYNC_REG_MODE Enables the DQ resynchronization register.
Options
Parameter NameDescription
Supported in Arria II GX devices only.
Use DQ resync
register
DQ Input Register
Options
Use DQ half rate
‘dataoutbypass’
port
—DQ_HALF_RATE_USE_
DATAOUTBYPASS
If you turn on this parameter, the dataoutbypass
input dynamically routes the directin input to the
dataout output for <IO>_HALF_RATE_INPUT
block. Using this parameter, you can bypass the half-rate
registers in <IO>_HALF_RATE_INPUT block
dynamically during the FPGA run-time.
Not supported in Arria II GX devices.
Advanced DQ IPA
Options
DQ Input Phase
Alignment Phase
Setting
Advanced DQ IPA
Options
Add DQ Input
Phase Alignment
Input Cycle Delay
Advanced DQ IPA
Options
Invert DQ Input
Phase Alignment
Phase
Advanced DQ IPA
Options
Register DQ input
phase alignment
Set statically
to
DQ_IPA_PHASE_
SETTING
or
Set
dynamically
using
configuration
registers
Always,
Never, or
DQ_IPA_ADD_INPUT_
CYCLE_DELAY
Based on
configuration
registers
Always,
Never, or
DQ_IPA_INVERT_
PHASE
Based on
configuration
re
gisters
—DQ_IPA_BYPASS_
OUTPUT_REGISTER
If you turn on the Set statically to option, the phase
setting can be selected from values 0 to 7 for the delay
chains. If you turn on the Select dynamically using configuration registers option, the phase setting is
determined by the phasectrlin input for the delay
chains. This parameter fine-tunes the resynchronization
phase for the DQ input data. The phase settings are also
called the levelling delay chains that handle the fly-by
clock topology in DDR3 interfaces.
If you turn on Always, a single cycle delay is added to
the input path. If you turn on Never, no delay is added. If
you turn on Based on configuration registers, the
enainputcycledelaysetting input controls
whether or not a single cycle delay is added to the input
path.
If you turn on Always, the phase output is inverted. If
you turn on Never, the phase output is not inverted. If
you turn on Based on configuration registers, the
phaseinvertctrl input determines whether or not
the inverter is used. The inverter is used to increase the
number of available phases.
Controls the output register in the DQ input path. If you
turn on this option, the output data bypasses the output
register. If you turn off this option, then the data goes
through the output register.
If you turn on this option, a negative edge-triggered
TRANSFER_REG
register is added in the data path for the clock phase
transfer. If you turn off this option, no register is added.
The negative-edge register is used to guarantee the
setup and hold time for a phase transfer.
transfer
Use DQ input
delay chain
—USE_DQ_INPUT_DELAY
_CHAIN
Enables <IO>_INPUT_DELAY_CHAIN (D1). This
parameter is used for deskew purposes or SSN
reduction on the DQ input path.
Not supported in Arria II GX devices.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
Tab le 3 –7 describes options available on the DQ OUT/OE page. This page allows you
to configure the DQ output and OE paths. For more information about the DQ output
and OE paths, refer to “DQ Output/OE Path” on page 4–10.
Table 3–7. Options on DQ OUT/OE Page (Part 1 of 2)
Clear Box
Parameter NameLegal Value
DQ Output Path
—USE_DQ_OUTPUT_
Options
Parameter NameDescription
DELAY_CHAIN1
Enable DQ output
delay chain1
DQ Output Path
Options
—USE_DQ_OUTPUT_
DELAY_CHAIN2
Enable DQ output
delay chain2
DQ Output Path
Options
Not used, FF,
or DDIO
DQ_OUTPUT_REG_MODE Enables the full-rate DQ output registers
DQ output
register mode
DQ Output Enable
—USE_DQ_OE_PATHInstantiates the DQ output enable path.
Options
Enable DQ output
enable
DQ Output Enable
Options
—USE_DQ_OE_DELAY_
CHAIN1
Enable DQ output
enable delay
chain1
Enables <IO>_OUTPUT_DELAY_CHAIN1 (D5) in the
DQ output path. This parameter is used for deskew
purposes or SSN reduction. D5 is a run-time adjustable
delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
Enables <IO>_OUTPUT_DELAY_CHAIN2 (D6) in the
DQ output path. This parameter is used for deskew
purposes or SSN reduction. D6 is a run-time adjustable
delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
(<IO>_OUTPUT_FF or <IO>_OUTPUT_DDIO_OUT
registers).
Enables <IO>_OE_DELAY_CHAIN1 (D5) in the DQ OE
path. This parameter is used for deskew purposes or
SSN reduction. D5 is a run-time adjustable delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
Table 3–7. Options on DQ OUT/OE Page (Part 2 of 2)
Clear Box
Parameter NameLegal Value
DQ Output Enable
—USE_DQ_OE_DELAY_
Options
Enable DQ output
enable delay
chain2
DQ Output Enable
Options
Not used, FF,
or DDIO
DQ output enable
register mode
Parameter NameDescription
Enables <IO>_OE_DELAY_CHAIN2 (D6) in the DQ OE
CHAIN2
path. This parameter is used for deskew purposes or
SSN reduction. D6 is a run-time adjustable delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
DQ_OE_REG_MODEEnables the full-rate DQ output-enable registers
(<IO>_OE_FF or <IO>_OE_DDIO_OE registers).
Select FF if you want flip-flop registers or DDIO if you
want double data rate I/O registers.
Tab le 3 –8 describes the options available on the Half-rate page.
Table 3–8. Options on Half-Rate Page (Part 1 of 2)
Clear Box
Parameter NameLegal Value
IO Clock Divider
Source
Core,
‘dqs_bus_ou
t’ port, or
Inverted
‘dqs_bus_ou
t’ port
Parameter NameDescription
IO_CLOCK_DIVIDER_
CLK_SOURCE
Specifies the I/O clock divider clock source which can be
from the Core (FPGA), the ‘dqs_bus_out’ port (DQS
input path), or the Inverted ‘dqs_bus_out’ port (DQS
input path).
Altera recommends that you turn on the ‘dqs_bus_out’ port option to clock the DQ input register. When reading
from the external memory, the DQ data that comes from
the full-rate DQ input registers must be synchronized to
the half-rate input block, if half-rate interfaces are used.
If the full-rate DQ input registers are clocked by the DQS
input path via the dqs_bus_out port, then the I/O
clock divider (and other clock source settings) must also
be clocked via the dqs_bus_out port.
Create
‘io_clock_divider
_masterin’ input
port
—USE_IO_CLOCK_
DIVIDER_MASTERIN
Enables the masterin input to synchronize this divider
with another I/O clock divider. If you turn off this option,
this divider operates independently. This mode is meant
for the master divider of a group of dividers. Turn on this
parameter when you chain the I/O clock divider blocks
from multiple ALTDQ_DQS instances.
Create
‘io_clock_divider
_clkout’ output
——Divides the clock output signal by two. The clock out
signal can be connected to the clock input of a half-rate
Input block or fed to the FPGA core.
Table 3–8. Options on Half-Rate Page (Part 2 of 2)
Clear Box
Parameter NameLegal Value
Create
—USE_IO_CLOCK_
‘io_clock_divider
_slaveout’ output
port
Parameter NameDescription
Enables the output of the divider’s D flip-flop (DFF). The
DIVIDER_SLAVEOUT
output signal can only be connected to the masterin
input of another I/O clock divider block and it cannot
have more than one fan-out. Turn on this parameter
when you chain the I/O clock divider blocks from
multiple ALTDQ_DQS instances.
IO Clock Divider
Invert Phase
Always,
Never, or
Based on
register
configuration
IO_CLOCK_DIVIDER_
INVERT_PHASE
If you turn on Always, the phase output is inverted. If
you turn on Never, the phase output is not inverted. If
you turn on Based on register configuration, the
phaseinvertctrl input determines whether or not
the inverter is used. The inverter can be used to increase
the number of available phases.
Table 3–9 on page 3–16 describes the options available on the OCT Path page. This
page allows you to configure the DQ and DQS OCT paths. For more information
about the DQ and DQS OCT paths, refer to “DQ/DQS OCT Path” on page 4–14.
Table 3–9. Options on OCT Path Page
Parameter NameLegal Value
Dynamic
—USE_OCT_DELAY_
Termination
Control Options
Enable Dynamic
Delay-chain1
Dynamic
—USE_OCT_DELAY_
Termination
Control Options
Enable Dynamic
Delay-chain2
OCT register
mode
Not used, FF,
or DDIO
Clear Box
Parameter NameDescription
Enables <IO>_OCT_DELAY_CHAIN1 (D5) on both the
CHAIN1
DQ and DQS dynamic OCT paths. The external memory
interfaces synchronize the timing of the turning on and
off of the parallel termination during reads and writes
from both the DQ and DQS pins, and to improve overall
timing margins.
D5 is a run-time adjustable delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
Enables <IO>_OCT_DELAY_CHAIN2 (D6) on both the
CHAIN2
DQ and DQS dynamic OCT paths. The external memory
interfaces synchronize the timing of turning on and off of
the parallel termination during reads and writes from
both the DQ and DQS pins, and to improve overall timing
margins.
D6 is a run-time adjustable delay chain.
For more information about configuring delay chains
dynamically, refer to “Delay Chains” on page 4–15.
OCT_REG_MODEEnables the full-rate dynamic OCT registers
(<IO>_OCT_FF or <IO>_OCT_DDIO registers) on
both the DQ and DQS dynamic OCT paths. Select FF if
you want flip-flop registers or DDIO if you want double
data rate I/O registers.
For more component information about this block, refer
to the “Dynamic On-Chip Termination Control” section in
the External Memory Interface chapter of the respective
device handbooks.
Tab le 3 –1 0 describes the options available on the DQSn I/O page. This page allows
you to configure the DQS and DQSn I/O pins for the ALTDQ_DQS instance. These
options are used for memory interfaces that need differential or complementary
strobes.
Table 3–10. Options on DQS/DQSn I/O Page
Clear Box
Parameter NameLegal Value
Parameter NameDescription
Use DQSn I/O—DQS_DQSN_MODEEnables access to the DQS I/O that is configured as
either differential or complementary. Altera recommends
that you use differential DQS for DDR3 interfaces to
improve signal integrity.
If the DQSn I/O is disabled, the value for the
DQS_DQSN_MODE parameter is none. When enabled,
the value may either Complementary pair or Differential
pair.
DQS and DQSn IO
Configuration
mode
Differential
pair or
Complement
ary pair
DQS_DQSN_MODEIf you turn on the Differential pair option, the DQSn I/O
pin is configured in a differential pair along with the DQS
I/O pin. This means that the OE and OCT paths are
configured for the DQSn I/O pin, which is similar to the
DQS I/O pin. The input and output paths are shared with
the DQS I/O pin. This mode is used mainly for DDR2 and
DDR3 SDRAM, and RLDRAM II applications.
If you turn on the Complementary pair option, the DQSn
I/O pin is configured in a complementary pair along with
the DQS I/O pin. In this mode, the DQSn I/O pin is
configured similarly to the DQS I/O pin. This mode is
used mainly for QDR/QDR II applications.
Tab le 3 –11 describes the options available on the Reset/Config Ports page. For more
information about reset and config ports, refer to “ALTDQ_DQS Megafunction Ports”
on page 4–33.
Table 3–11. Options on Reset/Config Ports Page (Part 1 of 2)
Clear Box
Parameter NameLegal Value
Reset ports
——Enables the asynchronous reset port that
Parameter NameDescription
Create
'dqs_areset'
input port
Reset ports
——Enables synchronous reset port that synchronously
Create
'dqs_sreset'
input port
Reset ports
——Enables asynchronous reset port that asynchronously
Create
'input_dq_areset'
input port
asynchronously resets all registers in the DQS output or
DQS OE path.
resets all registers in the DQS output or DQS OE path.
Table 3–11. Options on Reset/Config Ports Page (Part 2 of 2)
Clear Box
Parameter NameLegal Value
Reset ports
Create
'input_dq_sreset'
input port
Reset ports
Create
'output_dq_arese
t' input port
Reset ports
Create
'output_dq_srese
t' input port
Reset ports
Create
'bidir_dq_areset'
input port
Reset ports
Create
'bidir_dq_sreset'
input port
Config ports
Create
'config_clk' input
port
Config ports
Create
'config_datain'
input port
Config ports
Create
'config_update'
input port
——Enables synchronous reset port that synchronously
——Enables asynchronous reset port that asynchronously
——Enables synchronous reset port synchronously resets all
——Enables asynchronous reset port that asynchronously
——Enables synchronous reset port that synchronously
——Enables input clock port that feeds IO_CONFIG block
——Enables input port that feeds the input data to the serial
——Enables input port that feeds IO_CONFIG block update
Parameter NameDescription
resets all registers in the DQ input path.
resets all registers in the DQ output or DQ OE path.
registers in the DQ output or DQ OE path.
resets all registers in the bidirectional DQ I/O path.
resets all registers in the bidirectional DQ I/O path.
for user-driven dynamic delay chain. This input port is
used as the clock signal of the shift register block. The
maximum frequency for this clock is 30 MHz.
load shift register in IO_CONFIG block for user-driven
dynamic delay chain.
port for user-driven dynamic delay chain.
When asserted, the serial load shift register bits feed the
parallel load register.
ALTDQ_DQS Parameter Editor
The Simulation Model page allows you to optionally generate simulation model files.
The Summary page displays a list of the types of files to be generated. The
automatically generated variation file contains wrapper code in the language you
specified earlier. On this page, you can specify additional types of files to be
generated. Choose from the AHDL Include file (<function name>.inc), VHDL
component declaration file, <function name>.cmp), Quartus II symbol file (<function name>.bsf), Instantiation template file (<function name>.v), and Verilog HDL black box
file (<function name>_bb.v). If you select Generate netlist on the Simulation Model
page, the file for that netlist is also available. A gray checkmark indicates a file that is
automatically generated, and a red checkmark indicates generation of an optional file.
This section describes the functionality of the various blocks and ports in the ALTDLL
and ALTDQ_DQS megafunctions. This section also describes the use of delay chains
to achieve better timing margins. This section also includes an implementation
example showing these megafunctions in a custom external memory interface.
fFor more information about the blocks available in the datapaths for your target
device family, refer to the following chapters in the device handbook:
■ External Memory Interfaces in HardCopy III Devices chapter in volume 1 of the
HardCopy III Device Handbook
■ External Memory Interfaces in HardCopy IV Devices chapter in volume 1 of the
HardCopy IV Device Handbook
■ External Memory Interfaces in Arria II GX Devices chapter in volume 1 of the Arria
II GX Device Handbook
■ External Memory Interfaces in Stratix IV Devices chapter in volume 1 of the Stratix IV
Device Handbook
■ External Memory Interfaces in Stratix III Devices chapter in volume 1 of the Stratix III
Device Handbook
1The DQ/DQS read and write signals in Figure 4–1 may be bidirectional or
unidirectional, depending on the memory standard. When bidirectional, the signal is
active during both read and write operations.
Tab le 4 –2 lists the megafunction blocks in Figure 4–1:
Table 4–1. Megafunction Blocks
Megafunction Block Description
ALTDLL The ALTDLL megafunction controls the DLL and DLL offset blocks. For more
information about the DLL blocks, refer to “ALTDLL Megafunction” on
page 4–3.
ALTDQ_DQSThe ALTDQ_DQS megafunction controls the following memory interface
datapaths:
■ DQS Input Path
■ DQ Input Path
■ DQ Output/OE Path
■ DQS Output/OE Path
■ DQ/DQS OCT Path
For more information about the datapaths, refer to “ALTDQ_DQS
Megafunction” on page 4–4.
ALTPLLThe ALTPLL megafunction block provides the clocking scheme used in the
custom external memory interface for half-rate or full-rate interface. For more
information about using PLLs, refer to the ALTPLL Megafunction User Guide.
ALTIOBUFThe ALTIOBUF megafunction provides I/O buffer variations to connect the
ALTDQ_DQS instance to the FPGA pins and to support dynamic OCT feature.
This section describes the DLL block and the DLL offset control blocks associated with
the ALTDLL megafunction.
DLL block and DLL offset control block
The ALTDLL megafunction controls the DLL and its two associated phase-offset
control blocks. The ALTDLL megafunction also controls the delay-chain settings to
achieve a compensated delay for PVT. For example, a DQS read strobe/clock that is
edge-aligned to its associated read data can be used to clock the data into I/O
registers if the data is delayed before reaching the register.
The DLL consists of two phase-offset control blocks— one for each edge adjacent to
the DLL, which resides in the corner of the device. Both phase-offset control blocks
cannot feed the same edge.
The DLL block computes the necessary delay settings by comparing the period of an
input reference clock to the delay through an internal delay chain. You can then use
the DLL offset control block to fine-tune the delay setting.
At a minimum, the DLL has a single input that is connected to a dedicated PLL output
or input pin, and six gray-coded outputs that are connected to the DQS delay chain
block, which is part of the ALTDQ_DQS megafunction.
Figure 4–2 shows the components of the ALTDLL megafunction. The
DLL_OFFSET_CTRL_A block is the first phase-offset control block, and the
DLL_OFFSET_CTRL_B block is the second phase-offset control block. These two
phase-offset control blocks are connected together to form the ALTDLL megafunction.
Each offset control block can only control the DQS delay chains on one edge of the
device. To feed the same offset to the DQS delay chains on two edges, you must use
both phase-offset control blocks.
The names DLL_OFFSET_CTRL_A and DLL_OFFSET_CTRL_B are logical and do not
denote the placement of the actual phase-offset blocks. With location assignments,
you can assign these blocks to the top, bottom, or side of the FPGA, depending on
which DLL your design uses. If location assignments are not used, the Quartus II
Fitter places these blocks on the top, bottom, or side of the FPGA device.
The DLL and DLL offset blocks in the DQS phase shift circuitry generate the control
signals to shift the DQS delay chain delays to center align the DQS strobe with the
incoming DQ data at the IOE registers. This is common when reading from external
memory interfaces. For more information about the DLL offset control blocks in the
DQS phase shift circuitry, refer to the DQS Phase Shift Circuitry section in the
respective device handbooks.
For more information about the ALTDLL megafunction ports, refer to “ALTDLL
Megafunction Ports” on page 4–31.
ALTDQ_DQS Megafunction
This section describes the DQ/DQS datapaths and the associated blocks of the
ALTDQ_DQS megafunction. The figures in the subsequent sections show the
megafunction blocks used to construct the datapath and their connections of the
top-level ports with the blocks that configure the paths. You must set the appropriate
parameters using the parameter editor to enable the blocks and the desired
configurations in the paths.
Tab le 4 –2 list the common blocks that are used in the DQ/DQS input and output
paths:
1The value for <IO> depends on your selection in the parameter editor. The possible
values are BIDIR_DQ and INPUT_DQ.
Table 4–2. Common Blocks in the DQ/DQS Input and Output Paths (Part 1 of 2)
Table 4–2. Common Blocks in the DQ/DQS Input and Output Paths (Part 2 of 2)
Block NameDescription
DQS_CONFIGDQS Configuration BlockA shift register that dynamically changes the
IO_CONFIGI/O Configuration Block
settings of various device configuration bits. The
shift registers power up low.
The IO_CONFIG block is used to configure the
settings for all I/O pins. The IO_CONFIG block
cannot configure the dynamic delay chains on
the OCT path or on the DQS input path (D2,
D3_0, D3_1, D4,D5 OCT, and D6 OCT) that are
controlled by the DQS_CONFIG block.
The DQS_CONFIG block is used to configure
the settings of the DQ/DQS I/O pins.
Note that these blocks are only available for
Stratix III and Stratix IV devices.
For more information about the
DQS_CONFIG/IO_CONFIG blocks, refer to
“DQS_CONFIG / IO_CONFIG Block” on
page 4–22.
IO_CLOCK_DIVIDERI/O Clock Divider BlockRepresents a divide-by-2 clock divider for
transferring data to the core at one half the
speed of the I/O input or output clock. Each
divider feeds up to six pins (a ×4 DQS group) in
the device. To feed wider DQS groups, you need
to chain multiple clock dividers together by
feeding the slaveout output of one divider to
the masterin input of the neighboring pins'
divider.
The IO_CLOCK_DIVIDER block is used in the
DQ and DQS input paths when you enable the
Use half-rate components option in the
parameter editor.
Note that this block is only available for
Stratix III and Stratix IV devices.
For more information about this block, refer to
the I/O Element (IOE) Registers section in the
External Memory Interfaces chapter of the
respective device handbooks.
This path receives the DQS strobe signal from the external memory during read
operations.
Figure 4–3 shows the available blocks in the DQS input path.
Figure 4–3. DQS Input Path (Note 1), (2)
Notes to Figure 4–3:
(1) The dqs_input_data_in port must be connected to the output port of the input buffer.
(2) The dll_offsetctrlin, dll_delayctrlin, and dqsupdateen ports must be connected to the DLL.
The DQS input path consists of the following blocks:
Table 4–3. DQS Input Path
BlockNameDescription
DQS_ENABLE_CTRLDQS Enable
Control Block
Represents the circuitry to control the DQS enable block. Each DQS
enable block can be controlled by a DQS enable control block.
For more information about the DQS enable control, refer to the
DQS Postamble Circuitry section in the External Memory Interface
chapter of the respective device handbooks.
DQS_ENABLE_CTRL_HR_DDIO
_OUT
DQS_ENABLEDQS Enable
DQS Enable
Control Half
Rate Block
Block
Represents the circuitry to transfer input to the
DQS_ENABLE_CTRL block from a half-rate clock to a full-rate
clock.
Represents the AND-gate control on the DQS input used to ground
the DQS input strobe when the strobe goes to Z after a DDR read
postamble. The DQS_ENABLE block enables the registers to allow
enough time for the DQS delay settings to travel from the DQS
phase-shift circuitry or core logic to all the DQS logic blocks before
the next change.
For more information about the DQS enable block, refer to the
Update Enable Circuitry section in the External Memory Interfaces
chapter of the respective device handbooks.
DQS_DELAY_CHAINDQS Delay
Chain Block
For more information about these delay chains, refer to Table 4–2
on page 4–4.
DQSBUSOUT_DELAY_CHAINDQS Busout
Delay Chain
DQS_ENABLE_DELAY_CHAINDQS Enable
Delay Chain
DQS_CONFIGDQS
Configuration
For more information about DQS_CONFIG block, refer to
Table 4–2 on page 4–4.
Blocks
IO_CLOCK_DIVIDERI/O Clock
Divider Block
For more information about I/O clock divider block, refer to
This path receives the DQ signal from the external memory during read operations.
Instantiate this path for all input-only and bidirectional DQ I/O pins. Figure 4–4
shows the available blocks in the DQ input path and the connections with the
ALTDQ_DQS ports.
1The value for <IO> depends on your selection in the parameter editor. The possible
values are BIDIR_DQ and INPUT_DQ.
Figure 4–4. DQ Input Path (Note 1), (2), (3)
Notes to Figure 4–4:
(1) The <IO>_input_data_in port must be connected to the output port of the input buffer.
(2) The dll_delayctrlin port must be connected to the DLL.
(3) The IO_CLOCK_DIVIDER, <IO>_HALF_RATE_INPUT, <IO>_IPA_LOW, and <IO>_IPA_HIGH blocks are half-rate components.
The DQ input path consists of the following blocks:
Table 4–4. DQ Input Path
BlockNameDescription
<IO>_INPUT_FFDQ Input register
<IO>_DDIO_IN
blocks
Samples the DQ signal during a read operation. These blocks are
clocked by the core or by a clock pin.
The <IO>_INPUT_FF block represents a group of flip-flops registers
in the DQ input path.
The <IO>_DDIO_IN represents a group of double data rate input
registers in the DQ input path.
<IO>_IPA_LOW
and
<IO>_IPA_HIGH
Input Phase
Alignment (IPA)
Block
Represents the circuitry required to phase shift the input signal. This is
primarily used to match the arrival delay of the DQS (triggered by the
fly-by clock on a DDR3-DIMM) to the latest arrival delay of a DQS from
the DIMM. The input phase alignment block levels or aligns the DQ
group signals in the core using different phase shifts.
For more information about input phase alignment, refer to the Leveling Circuitry section in the External Memory Interface chapter of the
respective device handbooks.
<IO>_HALF_RATE_INPUTHalf-rate input
registers block
Represents the circuitry required to transfer the input signal from a
full-rate clock to a half-rate clock.
Note that this block is only available in Stratix III and Stratix IV devices.
INPUT_DELAY_CHAINInput Delay Chain For more information about the input delay chain, refer to Table 4–2 on
page 4–4.
DQS_CONFIGDQS
Configuration
For more information about the DQS_CONFIG block, refer to
Table 4–2 on page 4–4.
Block
IO_CONFIGI/O/
Configuration
For more information about the IO_CONFIG block, refer to Table 4–2
on page 4–4.
Block
IO_CLOCK_DIVIDERI/O Clock Divider
Block
For more information about I/O clock divider block, refer to Table 4–2
(1) The <IO>_output_data_out port must be connected to the input port of the output buffer.
(2) The <IO>_oe_out port must be connected to the output enable port of the output buffer.
(3) The <IO>_OE_HR_DDIO_OUT, <IO>_OUTPUT_HR_DDIO_OUT_HIGH and <IO>_OUTPUT_HR_DDIO_OUT_LOW blocks are half-rate
The DQ output and OE path consist of the following blocks:
Table 4–5. DQ Output and OE Path
BlockNameDescription
<IO>_OUTPUT_FFDQ output
<IO>_OUTPUT_DDIO_OUT
register blocks
Sends data directly to the external memory DQ pins
during a write operation through the output buffer. These
blocks are clocked by the DQ write clock.
The <IO>_OUTPUT_FF block represents a group of
flip-flop registers in the DQ output path.
The <IO>_OUTPUT_DDIO_OUT represents a group of
double data rate output registers in the DQ output path.
<IO>_OE_FFDQ output enable
<IO>_OE_DDIO_OE
register blocks
Sends output enable signal to the output buffer. These
blocks are clocked by the DQ write clock.
The <IO>_OE_FF block represents a group of flip-flop
registers in the DQ OE path.
The <IO>_OE_DDIO_OE represents a group of double
data rate registers in the DQ OE path.
<IO>_OUTPUT_HR_DDIO_OUT_HIGH
and
Half-rate output
register block
Represents the DDIO registers that are used to transfer
DQ signals from the core during half-rate write operation.
These blocks are clocked by the DQ write clock.
(1) The dqs_output_data_out port must be connected to the input port of the output buffer.
(2) The dqs_oe_out port must be connected to the output enable port of the output buffer.
(3) The DQS_OE_HR_DDIO_OUT, DQS_OUTPUT_HR_DDIO_OUT_HIGH and DQS_OUTPUT_HR_DDIO_OUT_LOW blocks are half-rate
The DQS output and OE path consist of the following blocks:
Table 4–6. DQS Output and OE Path
BlockNameDescription
DQS_OUTPUT_FFDQS output
DQS_OUTPUT_DDIO_OUT
register blocks
Sends data directly to the external memory DQs pins
during a write operation through the output buffer. These
blocks are clocked by the DQS write clock.
The DQS_OUTPUT_FF block represents a group of
flip-flop registers in the DQS output path.
The DQS_OUTPUT_DDIO_OUT represents a group of
double data rate output registers in the DQS output path.
DQS_OE_FFDQS output
DQS_OE_DDIO_OE
enable register
blocks
Sends output enable signal to the output buffer. These
blocks are clocked by the DQS write clock.
The DQS_OE_FF block represents a group of flip-flop
registers in the DQS OE path.
The DQS_OE_DDIO_OE represents a group of double
data rate registers in the DQS OE path.
Represents the DDIO registers that are used to transfer
DQS signals from the core during half-rate write operation.
These blocks are clocked by the DQS write clock.
Represents the DDIO registers that are used to transfer
half-rate DQS output enable signals to the output buffer.
For more information about the OCT output delay chain
blocks, refer to Table 4–2 on page 4–4
For more information about the DQS_CONFIG block,
refer to Table 4–2 on page 4–4.
fFor more information about using the dynamic calibration blocks for termination,
refer to Dynamic Calibrated On-Chip Termination (ALTOCT) Megafunction User Guide.
For more information about implementing calibrated dynamic OCT, refer to AN 465:
Implementing OCT Calibration in Stratix III Devices.
The ALTDQ_DQS megafunction uses various types of delay chains. You can control
delay chains dynamically to provide a better sampling window for external memory
interfaces.
Tab le 4 –8 shows the delay chain type and their respective settings.
Table 4–8. Delay Elements and Settings
Maximum
Delay Chain TypeFunctionPossible Settings
D1 Tunes the DQ delay (read calibration) in
DDR applications.
D5 and D5 OCT D5 is the output register-to-I/O buffer
delay. D5 OCT is the OCT to I/O buffer
delay. These delay chains are for write
calibration in DDR applications. D5 is
cascaded together with D6 to generate
the sum of delays.
D6 and D6 OCT D6 is the output register-to-I/O buffer
delay. D6 OCT is the OCT to I/O buffer
delay. This delay chain is used to
reduce simultaneous switching noise
SSN). These delay chains can be
(
adjusted on a group basis for
non-DDR3 applications. This delay
chain works with a write-leveling clock
to adjust the delay among groups for
DDR3 applications. D6 is cascaded
together with D5 to generate the sum
of delays.
For more information about reducing
SSN, refer to “Deskew Delay Chains”
on page 4–16.
There are 16 possible
settings for this delay
chain because the delay
control in the chain is
4bits wide.
There are 16 possible
settings for this delay
chain because the delay
control in the chain is
4 bits wide.
There are 8 possible
settings for this delay
chain because the delay
control in the chain is
3 bits wide.
Step Value
(ps)
500
500
500
Delay Value
(ps)
1Each step value is either 50 or 400 ps. Setting the number of stages in the delay chain
to 10 means 10 × 50 ps = 500 ps of delay.
1The minimum delay value factors in only variable delays, but not the intrinsic delay
present in the delay chain. For more information about intrinsic delays, refer to the
respective Arria II GX, HardCopy III, HardCopy IV, Stratix III, and Stratix IV device
handbook or data sheet.
The deskew delay chain feature in Stratix III or Stratix IV devices is useful in external
memory interfaces, such as DDR or DDR2 external memory interfaces. Refer to
Figure 4–8.
Figure 4–8. Deskew Delay Chains
This feature is useful in deskewing the DQ bus for board trace mismatches between
the FPGA and external memory interface.
The graph on the left is obtained when no deskew delay chains are used. The capture
window is small because of the board trace delays.
The graph on the right is obtained when deskew delay chains are used to deskew the
DQ bus appropriately, based on the board trace delays, to maximize the capture
window.
The deskew delay chains reduce SSN by delaying the DQ bus by small amounts of
delay compared to the period of the signal on adjacent DQ pins. Refer to Figure 4–8.
The SSN is induced when adjacent pins in a DQ bus that toggle at the same time
(especially at a high frequency) induces noise that affects signal integrity. To ensure
that the adjacent pins in a DQ bus are not toggled at the same time, deskew delay
chains are used to provide small amounts of delay. Refer to Figure 4–9.
You can access these delay chains in the ALTDQ_DQS megafunction for the DQ Input
Path (D1) and DQ Output Path (D5 and D6). These 50 ps step delay chains provide
small amounts of delay.
1You must create a custom calibration circuit to control these delay chains to reduce
ALTIOBUF Megafunction and Delay Chains Integration
ALTIOBUF Megafunction and Delay Chains Integration
You must instantiate the ALTIOBUF megafunction separately to configure the input
buffer block, output buffer block, and differential output buffer block that are used
together with the ALTDQ_DQS megafunction. These I/O buffers are used so that the
impedance between the system and the external circuitry matches. This
implementation maximizes the power transfer and minimizes reflections from the
external circuitry.
c The ALTIOBUF megafunction must not be used to configure any dynamic delay
chains. The ALTIOBUF must only be used to configure the I/O buffers to avoid
conflict between the dynamic configuration and delay chain circuitry in the
ALTDQ_DQS megafunction.
The dynamic delay chains are controlled by the configuration circuitry encapsulated
in the ALTDQ_DQS megafunction. Each instance of the I/O buffer uses the D1, D5,
and D6 delay chains. These delay chains are dynamically configured by the
IO_CONFIG and DQS_CONFIG blocks. The IO_CONFIG and DQS_CONFIG blocks are
a shift registers that change the delay settings in the I/O buffers that are connected to
the I/O pins and DQ and DQS I/O pins, respectively. The IO_CONFIG block cannot
configure the dynamic delay chains on the OCT path or the DQS input path because
these delay chains are configured by the DQS_CONFIG block.
fFor more information about the IO_CONFIG and DQS_CONFIG blocks, refer to
“DQS_CONFIG / IO_CONFIG Block” on page 4–22.
fFor more information about input buffer, output buffer, or bidirectional buffer, refer to
the I/O Buffer (ALTIOBUF) Megafunction User Guide.
Figure 4–10 through Figure 4–17 show the various configurations of the ALTDQ_DQS
megafunction when combined with the ALTIOBUF megafunction. These
configurations apply to both the DQ and DQS I/O pins. The use of the datain and datout signals in these figures are generic. These signals represent either data, clock,
or strobe in external memory interfaces.
The DQS_CONFIG and IO_CONFIG blocks dynamically change the settings of various
configuration bits. One IO_CONFIG block is configured per I/O, whereas one
DQS_CONFIG block is configured per x4 group of I/Os (similar to
IO_CLOCK_DIVIDERs). These blocks share the datain, clk, and update signals
eventhough they have individual enable signals.
When dynamic delay chains are enabled, two key blocks are used together with the
I/O buffer block (input buffer, output buffer, or bidirectional buffer), the I/O config
block and the delay chain block.
The IO_CONFIG block controls the configuration of the necessary delay settings. The
necessary delay settings are set into the respective delay chain block (D1, D5, and D6).
These delay settings delay data that passes through the delay chain before going
through the I/O buffer block.
The ALTDQ_DQS megafunction allows you to control the delay chain using the
following I/O config signals:
■ config_datain
■ config_clk
■ config_update
■ <xxx>_io_config_ena. <xxx> depends on which I/O pin is controlled—input,
output, bidirectional, DQS, or DQSn I/O.
fFor more information about the DQS block or the DQSn I/O block and the sequence
of the shift registers, refer to the I/O Configuration Block and DQS Configuration Block
section in Chapter 7: External Memory Interfaces in Stratix IV Devices of the Stratix IV Devices Handbook.
fFor more information about these ports, refer to the “DQS_CONFIG/IO_CONFIG
Megafunction Ports” on page 4–45.
Configuring Dynamic Delay Chains Using the IO_CONFIG Block
The IO_CONFIG block serially shifts the value of config_datain only when
<xxx>_io_config_ena is asserted, during which you shift in the value of
config_datain to a shift register. Because a 11-bit shift register is used in the
IO_CONFIG block, you must hold <xxx>_io_config_ena asserted for 11
configuration clock cycles (config_clk). When the shift registers are fully loaded,
the shift register has its bits arranged in correspondence with the values for datain:
■ datain values set during the first four configuration clock cycles corresponds to
the 4–bit input delay chain values (D1).
■ datain values set during the next three configuration clock cycles corresponds to
the 3–bit output delay chain values (D6).
■ datain values set during the last four configuration clock cycles corresponds to
In all cases, the most significant bit (MSB) of the delay chain values is shifted in first
and the least significant bit (LSB) is shifted in last. For example, in the first four
configuration clock cycles, the first configuration clock cycle corresponds to the MSB
of the input delay chain value and the fourth configuration clock cycle corresponds to
the LSB.
The delay only takes effect when the config_update signal is asserted for one
configuration clock cycle, in which all the bits in the serial shift register feeds an
11–bit, parallel-loaded register. Right after the signal is deasserted, you can observe
the delay from datain (of the delay chain primitive) to dataout (of the delay chain
block).
For all delay chains, each delay setting increment adds approximately 50 ps of delay
(the actual value depends on the device speed grade); therefore, the total delay value
is equal to the number of stages in the delay chain ×50 ps. For example, if you set the
number of stages in the delay chain to five, then the total delay value is five times
50 ps, which is 250 ps.
Figure 4–19 through Figure 4–23 are simulation examples that show the results of
varying the delay at the input delay chain (D1).
fFor more information about controlling these delay chains and how to vary the
output delay chains (D5 and D6), refer to the Design Example 1: Dynamically Changing
Delay Chains in Output Buffer of Stratix III section of the I/O Buffer ALTIOBUF
Megafunction User Guide.
Setting the Input Delay Chain (D1) to Zero Delay (default)
Figure 4–19 shows that there are no timing difference with the cursor at 70 ns when
D1 is set to zero delay. The cursor at 70 ns represents the path from the bidirectional
buffer (bidir_dq_input_data_in) through the input delay chain
(bidir_dq_0_input_delay_chain_inst). You can view the effects of the delay
chain by comparing the datain port and the dataout port of the
bidir_dq_0_input_delay_chain_inst.
Figure 4–19 shows the simulation results for D1 with zero delay.
DQS_CONFIG / IO_CONFIG Block
Figure 4–19. Simulation Results—D1 is Set to Zero Delay (Default)
4–25Chapter 4: Functional Description
DQS_CONFIG / IO_CONFIG Block
Setting the Input Delay Chain to 50 ps Delay
In Figure 4–20, cursor 3 (255 ns) to cursor 4 (1355 ns) show that the delay chain is
configured to 50 ps.
The config_clock takes 11 (1,100 ns) clock cycles to load the intended delay values
into the IO_CONFIG block because of the first four clock cycles (for the input delay
chain, D1), the next three clock cycles (for the output delay chain 2, D6) and the last 4
clock cycles (for the output delay chain 1, D5).
The following steps describe how the input delay chain changes:
1. Because there is a 11-bit shift register in the IO_CONFIG block,
bidir_core_dq_confiq_enable(0) is asserted for 11 clock cycles. When the
shift registers are fully loaded, the shift registers have their bits arranges to
correspond with datain values.
2. The config_datain signal is asserted at the 4th clock cycle to change the input
delay chain value.
3. The delay only takes effect when the config_update signal is asserted for one
clock cycle at 1455,000 ps (Cursor 5).
4. After the config_update signal is deasserted, the delay from
bidir_dq_0_input_delay_chain_inst/datain at 1630,000 ps (Cursor 7) to
bidir_dq_0_input_delay_chain_inst/dataout at 1630,050 ps (Cursor 8)
is noticeable, which is 50 ps. Refer to Figure 4–21.
Figure 4–21 shows the second part of the simulation results when the effects of the 50 ps delay has been propagated.
4–27Chapter 4: Functional Description
Figure 4–21. Second Part of the Simulation Results—D1 is Set to 50 ps
DQS_CONFIG / IO_CONFIG Block
Chapter 4: Functional Description4–28
DQS_CONFIG / IO_CONFIG Block
Setting the Input Delay Chain to 750 ps Delay
Cursor 9 (1,755 ns) to cursor 10 (2,855 ns) in Figure 4–22 show that the input delay
chain is configured to 750 ps.
The config_clock takes 11 (1,100 ns) clock cycles to load the intended delay values
into the IO_CONFIG block because of the first four clock cycles (for the input delay
chain, D1), the next three clock cycles (for the output delay chain 2, D6) and the last
four clock cycles (for the output delay chain 1, D5).
The following steps describe how the input delay chain changes:
1. Because there is a 11-bit shift register in the IO_CONFIG block,
bidir_core_dq_confiq_enable(0) is asserted for 11 clock cycles. When the
shift registers are fully loaded, the shift registers have their bits arranges to
correspond with datain values.
2. The config_datain signal is asserted at the next 4 clock cycles to change the
input delay chain value.
3. The delay only takes effect when the config_update signal is asserted for one
clock cycle at 2955,000 ps (Cursor 11).
4. After the config_update signal is deasserted, the delay from bidir_dq_0_input_delay_chain_inst/datain at 3230,000 ps (Cursor 13)
to bidir_dq_0_input_delay_chain_inst/dataout at 3230,750 ps (Cursor
14) is noticeable, which is 750 ps. Refer to Figure 4–23.
Figure 4–23 shows the fourth part of the simulation results when the effects of the 750 ps delay has been propagated.
DQS_CONFIG / IO_CONFIG Block
Figure 4–23. Fourth Part of the Simulation Results—D1 is Set to 750 ps Delay
4–31Chapter 4: Functional Description
ALTDLL Megafunction Ports
ALTDLL Megafunction Ports
This section describes the ports of the ALTDLL megafunction.
Tab le 4 –9 lists the input ports for the ALTDLL megafunction.
Table 4–9. ALTDLL Megafunction Input Ports
Optional/
Port Name
dll_aloadOptionalGNDAsynchronous load signal for the DLL counter. When dll_aload is
dll_clkRequiredGNDDLL reference clock that matches the frequency of the DQS clock used to
dll_offset_ctrl
_a_addnsub
dll_offset_ctrl
_a_offset[5..0]
dll_offset_ctrl
_b_addnsub
dll_offset_ctrl
_b_offset[5..0]
RequiredDefaultDescription
HIGH, the counter is asynchronously loaded with the initial delay setting
of 16 in low-frequency mode (when the parameter
DELAY_BUFFER_MODE is set to LOW), or 32 in high-frequency mode
(when the parameter DELAY_BUFFER_MODE is set to HIGH).
determine the delay for the phase shift. Feed this input by an input pin or
a PLL output. This input must match the polarity of its source and cannot
be inverted.
OptionalV
CC
Addition/subtraction control port for DLL_OFFSET_CTRL_A block.
This port controls whether the delay-offset setting A is added or
subtracted. Ignore this input if the
DLL_OFFSET_CTRL_A_USE_OFFSET parameter is set to FALSE.
If the input is V
, the offset is added; if it is GND, the offset is
CC
subtracted.
Optional0This is the offset input setting for DLL_OFFSET_CTRL_A block. This
is a Gray-coded offset added or subtracted from the current value of the
DLL's delay setting to get the
dll_offset_ctrl_a_offsetctrlout result. Ignore this input
if the DLL_OFFSET_CTRL_A_USE_OFFSET parameter is set to
FALSE. The offset is limited to a minimum value of 0 and a maximum
value of 63 in low-frequency mode, and a maximum value of 31 in
high-frequency mode.
OptionalV
CC
This is the addition/subtraction control port for
DLL_OFFSET_CTRL_B block. This port controls whether the
delay-offset setting B is added or subtracted. Ignore this input if the
DLL_OFFSET_CTRL_B_USE_OFFSET parameter is set to FALSE.
If the input is V
subtracted. This input defaults to V
, the offset is added; if it is GND, the offset is
CC
.
CC
Optional0This is the offset input setting for DLL_OFFSET_CTRL_B block. This
is a Gray-coded offset added or subtracted from the current value of the
DLL's delay setting to get the
dll_offset_ctrl_b_offsetctrlout result. Ignore this input
if the DLL_OFFSET_CTRL_B_USE_OFFSET parameter is set to
FALSE. The offset is limited to a minimum value of 0 and a maximum
value of 63 in low-frequency mode, and a maximum value of 31 in
high-frequency mode.
Tab le 4 –1 0 lists the output ports of the ALTDLL megafunction.
Table 4–10. ALTDLL Megafunction Output Ports
Optional/
Port Name
dll_delayctrlout
[5..0]
RequiredDefaultFunction
Required—This is the DLL's delay setting output. This is a
1-cycle-delayed value of the current delay chain setting of
the DLL. This signal is Gray-coded to minimize jitter due to
toggling.This signal can feed the dll_delayctrlin
input port of the ALTDQ_DQS megafunction or the core
logic. This output is available for SignalTap
®
II Embedded
Logic Analyzer.
dll_dqsupdateOptional—This is an update-enable signal for the delay-setting
latches of the DQS pins. This signal can feed the
dqsupdateen input port of the ALTDQ_DQS
megafunction. This output is not available for SignalTap II
Embedded Logic Analyzer.
dll_offset_ctrl_a_
offsetctrlout[5..0]
Optional—This is the
DLL_OFFSET_CTRL_A block. This is a registered
offsetctrlout output setting for
Gray-coded value of the delay-offset setting A. This output
can be adjusted based on the value of the
dll_offset_ctrl_a_use_offset parameter. This
signal can feed the offsetctrlin input port of the
ALTDQ_DQS megafunction. This signal is not available for
SignalTap II Embedded Logic Analyzer.
dll_offset_ctrl_b_
offsetctrlout[5..0]
Optional—This is the offsetctrlout output setting for
DLL_OFFSET_CTRL_B block. This is a registered
Gray-coded value of the delay-offset setting B. This output
can be adjusted based on the value of the
dll_offset_ctrl_b_use_offset parameter. This
signal can feed the offsetctrlin input port of the
ALTDQ_DQS megafunction. This signal is not available for
SignalTap II Embedded Logic Analyzer.
Tab le 4 –11 to Table 4–19 describes the ports of the ALTDQ_DQS megafunction that
you can use to configure the DQS input path, DQS output path, DQS OE path,
DQ/DQS OCT path, DQ input path, DQ output path, DQ OE path, DQSN IO path,
and DQS_CONFIG/IO_CONFIG path.
DQS Input Path Megafunction Ports
Tab le 4 –11 summarizes all the ports on the megafunction to configure the DQS input
path.
n
= number of bidirectional DQ
b
n
= number of output DQ
o
n
= number of input DQ
i
n
= number of clock divider
c
Table 4–11. Megafunction Ports to Configure DQS Input Path(Part 1 of 2)
Optional/
Port NameType
core_delayctrlin[5..0]InputOptionalGNDThis port receives the Gray-coded delay chain setting
dll_delayctrlin[5..0]InputOptionalGNDThis port receives the Gray-coded delay chain setting
dqs_bus_outOutputOptional—This port receives the possibly delayed DQS output
dqs_enable_ctrl_clkInputOptionalV
dqs_enable_ctrl_hr_
InputOptionalGNDThis port is connected to the
datainhi
dqs_enable_ctrl_hr_
InputOptionalGNDThis port is connected to the
datainlo
dqs_enable_ctrl_inInputOptionalV
Required DefaultDescription
for the DQS read path from the FPGA core. This port
does not need to match the polarity of its source and
can be inverted.
for the DQS read path from the
ALTDLL:delayctrlout[5..0] port. This port
must match the polarity of its source and cannot be
inverted.
signal from the DQS_ENABLE:dqsbusout,
DQSBUSOUT_DELAY_CHAIN:dataout, or
DQS_DELAY_CHAIN:dqsbusout port.
This port is connected to the
CC
DQS_ENABLE_CTRL:clk port that is used to
capture the DQS_ENABLE_CTRL:dqsenablein
signal.
DQS_ENABLE_CTRL_HR_DDIO_OUT:datainhi
port. This port receives the half-rate data for the rising
edge of the IO_CLOCK_DIVIDER:clkout signal.
DQS_ENABLE_CTRL_HR_DDIO_OUT:datainlo
port. This port receives the half-rate data for the falling
edge of the IO_CLOCK_DIVIDER:clkout signal.
This active-high port is connected to the
CC
DQS_ENABLE_CTRL:dqsenablein port that is
used to enable or disable the
DQS_ENABLE_CTRL:dqsenableout port.
Table 4–11. Megafunction Ports to Configure DQS Input Path(Part 2 of 2)
Optional/
Port NameType
dqs_enable_inInputOptionalV
Required DefaultDescription
This active-high port is connected to the
CC
DQS_ENABLE:dqsenable that is used to enable or
disable the DQS_ENABLE:dqsbusout port. When
the dqs_enable_in port is connected to GND, the
DQS_ENABLE:dqsbusout signal is GND on the
next falling edge of the DQS_ENABLE:dqsin signal.
The DQS_ENABLE:dqsbusout is connected
directly to the dqs_bus_out port.
dqs_input_data_inInputOptionalGNDThis port receives the incoming DQS signal for the DQS
input path
dqs_input_data_outOutputOptional—This port receives the outgoing DQS signal from the
DQS_INPUT_DELAY_CHAIN:busout port, or directly from the dqs_input_data_in port
dqsupdateenInputOptionalGNDThis active-high port is connected to the
DQS_DELAY_CHAIN:dqsupdateen port that is
used to latch the
DQS_DELAY_CHAIN:delayctrlin[5..0] and
DQS_DELAY_CHAIN:offsetctrlin[5..0]
signals. The dqsupdateen port is fed by the
ALTDLL:dll_dqsupdate port, or the core.
Io_clock_divider_clkInputOptionalGNDThis port is connected to the
IO_CLOCK_DIVIDER:clk port that is the clock
input port for that block.
Io_clock_divider_
clkout[n
-1..0]
c
OutputOptional—This port is connected to the
IO_CLOCK_DIVIDER:clkout port that is used to
output clock signal that is half the frequency of the
IO_CLOCK_DIVIDER:clk signal.
Io_clock_divider_
masterin
InputOptionalGNDThis port is connected to the
IO_CLOCK_DIVIDER:masterin port that is used
when you need to chain multiple clock dividers together
to feed wider DQS groups.
Io_clock_divider_
slaveout
OutputOptional—This port is connected to the
IO_CLOCK_DIVIDER:slaveout port that is used
when you need to chain multiple clock dividers together
to feed wider DQS groups. This port must not have
more than one fan-out and must only be connected to
the io_clock_divider_masterin port of
another ALTDQ_DQS megafunction.
offsetctrlin[5..0]InputOptionalGNDThis port receives the Gray-coded fine-tune delay chain
setting for the DQS output path from the
ALTDLL:dll_offset_ctrl_a_offsetctrlo
ut[5..0] port or
ALTDLL:dll_offset_ctrl_b_offsetctrlo
ut[5..0]. This port must match the polarity of its
Tab le 4 –2 0 shows the correct settings required for the ALTDLL and ALTDQ_DQS
megafunctions to work in the DDR, QDR, and RLDRAM interfaces.
fn represents the number of pins in a path. The value of n ranges from 0 to 48, but
varies according to the memory interface used. To determine the value of n for a
particular memory interface, the External Memory Interface chapter of the respective
device handbooks.
Table 4–20. Correct Settings for DDR, QDR, and RLDRAM Interfaces
ParameterDDR
RLDRAMII modeUnusedUnusedTurned on. Refer to the
Data mask pin groupUnusedUnused
Q valid signal groupUnusedUnused
Number of bidirectional DQn 00n
Number of input DQ0n 00
Number of output DQ00n 0
Enable DQ output enable pathTurned onTurned offTurned onTurned on
Use half-rate componentsFor full-rate controller: Turned offFor half-rate controller:
Use dynamic OCT pathTurned onTurned on
Enable DQS input pathTurned onTurned onTurned offTurned onTurned off
Enable DQS output pathTurned onTurned offTurned off
Tab le 4 –2 2 shows the correct OCT parameter settings for the DDR, QDR, and
RLDRAM interfaces.
Table 4–22. General OCT Parameter Settings for DDR, QDR, and RLDRAM Interfaces
Controller
Parameter
Full-RateHalf-Rate
Enable Dynamic OCTTurned onTurned on
Enable OCT delay chain 1Turned on / Turned offTurned on / Turned off
Enable OCT delay chain 2Turned on / Turned offTurned on / Turned off
OCT register modeFFFF
Tab le 4 –2 3 shows the correct OCT port use for the DDR, QDR, and RLDRAM
interfaces.
Table 4–23. General OCT Ports for DDR, QDR, and RLDRAM Interfaces
Controller
Parameter
Full-RateHalf-Rate
DQS_OCT_INUsedUsed
DQSN_OCT_INUsedUsed
BIDIR_DQ_OCT_INUsed if DQ pin is bidirectionalUsed if DQ pin is bidirectional
INPUT_OCT_INUsed for DQ pin as inputUsed for DQ pin as input
OUTPUT_OCT_INUsed for DQ pin as outputUsed for DQ pin as output
DQS_HR_OCT_INUsed Unused
DQSN_HR_OCT_INUsedUnused
BIDIR_DQ_HR_OCT_INUsedUnused
INPUT_DQ_HR_OCT_INUsed Unused
OUTPUT_DQ_HR_OCT_INUsedUnused
OCT_REG_CLKUsedUsed
HR_OCT_REG_CLKUsed if controller is at half-rateUnused
DQS_OCT_OUTUsedUsed
DQSN_OCT_OUTUsedUsed
BIDIR_DQ_OCT_OUTUsed if DQ pin is bidirectionalUsed if DQ pin is bidirectional
INPUT_DQ_OCT_OUTUsed for DQ pin as inputUsed if DQ pin is bidirectional
OUTPUT_DQ_OCT_OUTUsed for DQ pin as outputUsed if DQ pin is bidirectional
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Devices
This section describes a design example that uses the DLL and DQ/DQS circuitry
with half-rate DDR2 external memory interface in Stratix III devices. The memory
interface is running at 333.333 MHz with 8-bit bidirectional DQ pins, a 1-bit output
DQ pin, and a 1-bit differential DQS pin.
fThe design examples are available next to the ALTDLL and ALTDQ_DQS
Megafunction User Guides on the Documentation: User Guides page of the Altera
website.
Procedure
This example describes the following steps:
■ Instantiate the ALTDLL Megafunction
■ Instantiate the ALTDQ_DQS Megafunction
■ Instantiate the ALTIOBUF Megafunction
■ Simulate the Design
Instantiate the ALTDLL Megafunction
To instantiate the ALTDLL megafunction, perform the following steps:
1. Open the altdll_altdq_dqs_DesignExample_ex2.zip project and extract the
altdll_altdq_dqs_design_ex2.qar file.
2. In the Quartus II software, open the altdll_altdq_dqs_design_ex2.qar file and
restore the archived file into your working directory.
3. On the Tools menu, click MegaWizard Plug-In Manager. Page 1 of the
MegaWizard Plug-In Manager appears.
4. Select Create a new custom megafunction variation.
5. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select ALTDLL,
and Ver ilo g HD L, and type the file name as dll_inst.v.
6. On the Parameter Settings tab, on the General page, specify the parameters as
shown in Tabl e 4 –2 4. These parameters configure the general settings for the
ALTDLL instance.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Instantiate the ALTDQ_DQS Megafunction
To instantiate the ALTDQ_DQS megafunction, perform the following steps:
1. On the Tools menu, click MegaWizard Plug-In Manager. Page 1 of the
MegaWizard Plug-In Manager appears.
2. Select Create a new custom megafunction variation.
3. Click Next. Page 2a of the MegaWizard Plug-In Manager appears. Select
ALTDQ_DQS, and Verilog HDL, and type the file name as dq_dqs_inst.v.
4. On the Parameter Settings page of the ALTDQ_DQS parameter editor, specify the
parameters as shown in Table 4–26.
Table 4–26. Parameter Settings
ParameterValue
RLDRAM II ModeNONE
Data mask pin groupNONE
Q valid signal groupNONE
Number of bidirectional DQ8
Number of input DQ0
Number of output DQ1
Number of stages in dqs_delay_chain2
DQS Input Frequency333 MHz
Use half-rate componentsTurned on
Use Dynamic OCTTurned off
Add memory interface specific fitter grouping assignmentsTurned off
5. In the Advanced Options tab of the ALTDQ_DQS parameter editor, on the DQS
IN page, specify the parameters as shown in Tab le 4 –2 7. These parameters
configure the DQS input path of the ALTDQ_DQS instance.
Table 4–27. Advanced Options (DQS IN) (Part 1 of 2)
ParameterSub-optionsValue
Enable DQS Input Path—Turned on
Enable Dynamic Delay Chain—Not selected
Enable dqs_delay_chain—Selected
Advanced delay chain optionsSelect dynamically using
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III Devices
Table 4–27. Advanced Options (DQS IN) (Part 2 of 2)
ParameterSub-optionsValue
Advanced enable control optionsDQS Enable Control Phase settingSet Statically to
‘0’
DQS Enable Control Invert PhaseNever
Enable DQS enable block delay
—Turned on
chain
6. On the DQS OUT/OE page, specify the parameters as shown in Tab le 4 –2 8. These
parameters configure the DQS OUTPUT and DQS OE path of the ALTDQ_DQS
instance.
Table 4–28. Advance Options (DQS OUT/OE)
ParameterValue
Enable DQS Output PathTur n e d on
Enable DQS output delay chain1Turn e d on
Enable DQS output delay chain2Turn e d on
]DQS output register modeDDIO
Enable DQS output enableTur n e d on
Enable DQS output enable delay chain1Tur n e d on
Enable DQS output enable delay chain2Tur n e d on
DQS output enable register modeDDIO
7. On the DQ IN page, specify the parameters as shown in Table 4–29. These
parameters configure the DQ input path of the ALTDQ_DQS instance.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Table 4–29. Advance Options (DQ IN) (Part 2 of 2)
ParameterSub-optionsValue
Use DQ half rate ‘dataoutbypass’ port—Turned off
Use DQ input delay chain—Turned on
8. On the DQ OUT/OE page, specify the parameters as shown in Tabl e 4 –3 0. These
parameters configure the DQ OUTPUT and DQ OE path of the ALTDQ_DQS
instance.
Table 4–30. Advance Options (DQ OUT/OE)
ParameterValue
Enable DQ output delay chain1Tu r ned on
Enable DQ output delay chain2Tu r ned on
DQ output register modeDDIO
Enable DQ output enableTurned on
Enable DQ output enable delay chain1Turned on
Enable DQ output enable delay chain2Turned on
DQ output enable register modeDDIO
9. On the Half-rate page, specify the parameters as shown in Table 4–31. These
parameters configure the half-rate settings of the ALTDQ_DQS instance.
Table 4–31. Advance Options (Half-Rate)
ParameterValue
IO Clock Divider SourceCore
Create ‘io_clock_divider_masterin’ input portTurned off
Create ‘io_clock_divider_clkout’ output portTurned o n
Create ‘io_clock_divider_slaveout’ output portTurned off
IO Clock Divider Invert PhaseNever
10. On the DQSn I/O page, specify the parameters as shown in Table 4–32. .
Table 4–32. Advanced Options (DQS/DQSn IO)
ParameterValue
Use DQSn IOTur n e d on
DQS and DQSn IO Configuration modeDifferential Pair
11. On the Reset/Config Ports page, specify the parameters as shown in Ta bl e 4 –3 3.
Table 4–33. Advanced Options (Reset and Config Ports) (Part 1 of 2)
8 bidirectional buffers for
the bidirectional DQ pins
4. On the Parameter Settings page, specify the parameters as shown in Table 4–35.
These parameters configure the general settings for the ALTIOBUF instance.
Figure 4–24 shows a block diagram of the design example, which consists of six blocks.
4–57Chapter 4: Functional Description
Figure 4–24. Block Diagram of Design Example
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Chapter 4: Functional Description4–58
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III Devices
Tab le 4 –3 7 provides the description for each block in the design example.
Table 4–37. Blocks in Design Example
Block NameDescription
pll_inst:inst1This block represents the Stratix III PLL with the following settings:
■ inclk = 200 MHz
■ c0 = 3,000 ps, 50% duty cycle
■ c1 = 3,000 ps, 50% duty cycle
■ c2 = 3,000 ps, 50% duty cycle
■ c3 = 6,000 ps, 50% duty cycle
dll_inst:inst5This block represents the DLL circuitry used during a read from the
external memory. This block is clocked by the PLL with the following
settings:
■ delay chain length = 10
■ delay buffer mode = High
■ input frequency = 333 MHz
■ jitter reduction = Turned off
dq_dqs_inst:instThis block represents the DQ and DQS circuitry that interfaces with the
external memory. The settings are specified in the input.txt file. The block
is customized for a half-rate operation and represents the interface
between the FPGA core and the I/O buffers that are connected to the
external memory pins.
dqs_iobuf_inst:inst2This block represents the bidirectional I/O buffer that is used as the DQS
strobe/clock signal for interfacing with the external memory. This block is
in differential mode and is 1 bit wide. It is connected to the
dq_dqs_inst block.
bidir_dq_iobuf_inst:inst3This block represents the bidirectional I/O buffer that is used as the DQ
data signals for interfacing with the external memory. This block is 8 bits
wide. It is connected to the dq_dqs_inst block.
output_dq_iobuf_inst:inst4This block represents the output I/O buffer that is used as the DQ data
signals for interfacing with the external memory. This block is 1 bit wide. It
is connected to the dq_dqs_inst block.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Simulate the Design
After instantiating the megafunctions, perform the following steps to compile your
design.
1. In the Quartus II software, on the Project menu, click Add/Remove Files in Project.
2. In the Category list, select Files.
3. Next to the File name box, click ... to browse to your working directory. Select the
dll_inst.v file and click Open.
4. Click Add to add the dll_inst.v file to your project.
5. Repeat steps 3 and 4 to add the dq_dqs_inst.v and test_dq_dqs.bdf files.
6. Click OK.
7. On the File menu, click Save.
8. On the Processing menu, click Start Compilation to compile the design. After the
design is compiled, you can view implementation in the RTL Viewer. You can also
view the resource usage in the Compilation Report.
After you compile your design, simulate the design in the ModelSim-Altera software
to generate a waveform display of the device behavior. Set up and simulate the design
in the ModelSim-Altera software by performing the following steps:
1. Unzip the altdll_altdq_dqs_ex2_msim.zip file to any working directory on your
PC.
2. Start the ModelSim-Altera software.
3. On the File menu, click Change Directory.
4. Select the folder in which you unzipped the files.
5. Click OK.
6. On the Tools menu, point to TCL and click Execute Macro.
7. Select the altdll_altdq_dqs_ex2_msim.do file and click Open. This is a script file
for the ModelSim-Altera software to automate all the necessary settings for the
simulation.
8. Verify the results with the waveform.
You can rearrange signals, remove signals and add signals, and change the radix by
modifying the script in the altdll_altdq_dqs_ex2_msim.do file.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III Devices
Understanding the Simulation Results
This section describes the simulation results of “Design Example: Implementing
Half-Rate DDR2 Interface in Stratix III Devices” on page 4–49.
Writing Data to the External Memory
The following sequence describes the transferring of data from the FPGA core to the
bidirectional DQ pins with various delay chain settings (refer to Figure 4–25 on
page 4–63):
1. The simulation begins when the PLL is locked, as indicated by the assertion of the
locked signal at 225,000 ps (refer to Figure 4–25). At this point, the PLL input
frequency, as indicated by the inclk0 signal, is 200 MHz.
2. The c0, c1, and c2 ports generate a 333.333-MHz clock output while the c3 port
generates a 166.666-MHz clock output.
1This design example uses the half-rate option, which means that the FPGA
core sends and receives data from the external memory interface at a
half-rate of 166.666 MHz. The pin that interfaces with the memory toggles
at 333.333 MHz. However, because this pin is also toggled by a DDIO_OUT
signal, the data throughput is 666.666 Mbps.
3. The output path from the FPGA core to the bidirectional DQ pin is represented by
a 32-bit input, bidir_dq_hr_output_data_in[31:0]. The input path from
the bidirectional pin to the FPGA core is represented by a 32-bit output,
bidir_dq_hr_input_data_out[31:0]. The OE path from the FPGA core to
the bidirectional buffer, bidir_dq_hr_oe_in[15:0], is 16 bits wide and is
active-low.
4. For the DQ output pin, the output path in the FPGA core to the bidirectional DQ
pin is represented by a 4-bit input, output_dq_hr_output_data_in [3:0].
The OE path is 2 bits wide from the FPGA core to the bidirectional buffer,
output_dq_hr_oe_in[1:0].
1In the first part of the simulation, only output paths are used; therefore,
bidir_dq_hr_oe_in[15:0] = 16’b0 and dqs_hr_oe_in [1:0] =
2’b0.
5. For bidir_dq_hr_output_data_in[31:0], each bit is toggled with a 10-MHz
data signal from 100 ns to 300 ns. The toggling behavior of
bidir_dq_hr_output_data_in[31:0]is represented in the waveform in
groups of 4-bit signals (for example, bidir_dq_hr_output_data_in[3:0]),
as the four input paths are connected to the bidir_dq_io[0] pin.
6. The bidir_dq_hr_output_data_in[3] and bidir_dq_hr_output_data_in[2]signals go through the DDIO_OUT port,
which is clocked at 166.666 MHz by the c3 PLL clock output. At the same time, the
bidir_dq_hr_output_data_in[1] and
bidir_dq_hr_output_data_in[0] signals go through another DDIO_OUT
port, which is clocked at 166.666 MHz by the c3 PLL clock output.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
7. Both outputs (bidir_dq_0_output_hr_ddio_out_high_inst/dataout
and bidir_dq_0_output_hr_ddio_out_low_inst/dataout) of the
previous DDIO_OUT ports are channeled into another DDIO_OUT port, which is
clocked at 333.333 MHz by the c1 PLL clock output.
8. The output bidir_dq_0_output_ddio_out_inst/dataout is then
connected to the bidirectional DQ output delay chain 1.
9. The output bidir_dq_0_output_delay_chain1_inst/dataout is
connected to the bidirectional DQ output delay chain 2, and the output
bidir_dq_0_output_delay_chain2_inst/dataout is connected to the
bidir_dq_io[0] pin.
10. The same data is propagated through the other inputs of
bidir_dq_hr_output_data_in[31:4], which causes the
bidir_dq_io[7:1] pins to toggle in the same manner.
11. The throughput of data going out on each pin to the external memory is
666.666 Mbps.
12. The output delay chains are disabled. The
bidir_dq_0_output_delay_chain1_inst/datain,
bidir_dq_0_output_delay_chain2_inst/datain,
bidir_dq_0_output_delay_chain1_inst/dataout, and
bidir_dq_0_output_delay_chain2_inst/dataout signals are
aligned, which indicates that there’s no delay settings on
the two output delay chains.
The same write sequence applies to writing data with different delay chain values
activated on the two output delay chains. You can obtain the difference in the
delay chain values by analyzing the timing paths of the following signals:
■ bidir_dq_0_output_delay_chain1_inst/datain
■ bidir_dq_0_output_delay_chain2_inst/datain
■ bidir_dq_0_output_delay_chain1_inst/dataout
■ bidir_dq_0_output_delay_chain2_inst/dataout
■ bidir_dq_0_output_hr_ddio_out_high_inst/dataout
■ bidir_dq_0_output_hr_ddio_out_low_inst/dataout
■ bidir_dq_0_output_ddio_out_inst/dataout
■ bidir_dq_io[0]
1For more information about how to analyze the timing paths to obtain the
delay chain values, refer to the timing diagrams in “DQS_CONFIG /
IO_CONFIG Block” on page 4–22.
13. The output path from the FPGA core to the bidirectional DQS pin is represented
by a 4-bit input, dqs_hr_output_data_in[3:0]. The OE path is 2 bits wide
from the FPGA core to the bidirectional buffer, dqs_hr_oe_in [1:0]. The input
path of the DQS pin goes through a specialized circuitry to clock the 8-bit
bidirectional DQ pin input paths.
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III Devices
14. The dqs_hr_output_data_in[3:0], dqs_hr_output_data_in[3] and
dqs_hr_output_data_in[2] signals are toggled with a constant value of 1’b1. After that, the dqs_hr_output_data_in[1] and
dqs_hr_output_data_in[0] signals are toggled with a constant value of 1’b0.
The signals are toggled at a constant rate to generate the necessary DQS write
strobe/clock signals, which are sent together with the DQ write data to the external
memory.
15. As the throughput of the data is sent at 666.666 Mbps, the DQS write strobe/clock
signal is a 333.333-MHz DDR clock signal. To obtain such a signal, the
dqs_hr_output_data_in[3] and dqs_hr_output_data_in[2] signals go
through a DDIO_OUT port, which is clocked at 166.666 MHz by the c3 PLL clock
output. At the same time, the dqs_hr_output_data_in[1] and dqs_hr_output_data_in[0] signals go through another DDIO_OUT port,
which is clocked at 166.666 MHz by the c3 PLL clock output.
16. Both outputs (dqs_output_hr_ddio_out_high_inst/dataout and
dqs_output_hr_ddio_out_low_inst/dataout) of the previous DDIO_OUT
ports are channeled into another DDIO_OUT port, which is clocked at 333.333 MHz
by the c1 PLL clock output.
17. The output dqs_output_ddio_out_inst/dataout is then connected to
output_delay_chain_1. The output
dqs_output_delay_chain1_inst/dataout is connected to
output_delay_chain_2.
18. The output dqs_output_delay_chain2_inst/dataout is connected to the
dqs_io pin, which acts as a 333.333-MHz DQS write strobe/clock signal.
fFor details about changing the delay chain values dynamically, refer to the I/O Buffer
Figure 4–25. Data Transfer From the FPGA Core to the Bidirectional DQ Pin with No Delay Chains Activated
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III
Chapter 4: Functional Description4–64
Design Example: Implementing Half-Rate DDR2 Interface in Stratix III Devices
Reading Data from the External Memory
The following sequence describes the transferring of data from the bidirectional DQ
pins to the FPGA core with various delay chain settings (refer to Figure 4–26 on
page 4–65):
1The interface to the external memory has a throughput of 666.666 Mbps during the
read process.
1In Figure 4–26, only the input paths are used; therefore,
bidir_dq_hr_oe_in[15:0] =16’b1 and dqs_hr_oe_in[1:0] =2’b1 from 5µs
onwards.
1. Each bit in the bidir_dq_io[7:0] pin is toggled with a 10-MHz data signal
from 5.25 µs to 5.45 µs. The pin behavior is represented in the waveform in groups
of 4-bit signals because the bidir_dq_io[0] input is connected to the bidir_dq_hr_input_data_out[3:0] outputs.
2. The bidir_dq_io[0] pin is connected to the input delay chain.
3. The output bidir_dq_0_input_delay_chain_inst/dataout of the delay
chain is connected to the input of the DDIO_IN port, which is clocked by a
specialized DQS circuitry that uses the DLL.
4. The outputs (bidir_dq_0_ddio_in_inst/regouthi and bidir_dq_0_ddio_in_inst/regoutlo) of the previous DDIO_IN ports are
channeled to two input phase alignment blocks, respectively. These input phase
alignment blocks are clocked at 333.333 MHz by the c2 clock output of the PLL.
5. The outputs of the two IPAs, bidir_dq_0_ipa_high_inst/dataout and bidir_dq_0_ipa_low_inst/dataout, are channeled to a half-rate input
block, which is clocked by the IO_CLOCK_DIVIDER blocks.
6. The output bidir_dq_0_half_rate_input_inst/dataout[3:0] of this
block is then connected to the bidir_dq_hr_input_data_out[3:0] outputs.
7. The same data is propagated through the other bidirectional pins of
bidir_dq_io[7:1], which causes the
bidir_dq_hr_input_data_out[31:4] outputs to toggle in the same manner.
8. The throughput of the data in the output ports are at a half-rate of 166.666 MHz.
9. The input delay chain is enabled.
The bidir_dq_0_input_delay_chain_inst/datain and
bidir_dq_0_input_delay_chain_inst/dataout signals are not aligned,
which indicates that there is a delay on the input delay chain.
The same read sequence applies to reading data with different chain values
activated on the input delay chain. You can obtain the difference in the delay chain
values by analyzing the timing paths of the following signals: