Home    --    Hierarchy    --    Packages    --    Entities    --    Instantiations    --    Sources

Architecture arch of work.XSASDRAMCntl

Customizes the generic SDRAM controller module for the XSA Board.

Defined in System09_base/xsasdramcntl.vhd

Author: Dave Vanden Bout
Version: 1.1.0 from 05/17/2005


Detailed description

The SDRAM controller and external SDRAM chip will clock on the same edge if the frequency and divided frequency are both greater than the minimum DLL lock frequency. Otherwise the DLLs cannot be used so the SDRAM controller and external SDRAM clock on opposite edges to try and mitigate the clock skew between the internal FPGA logic and the external SDRAM.

Instantiated in...

work.my_system09 (rtl)

Libraries and global use clauses

library IEEE
use IEEE.numeric_std.all
use IEEE.std_logic_1164.all
library UNISIM
use UNISIM.VComponents.all
use WORK.common.all
use WORK.sdram.all

Constants

MIN_LOCK_FREQ real := 25_000.0
IN_PHASE boolean := real(FREQ)/CLK_DIV >= MIN_LOCK_FREQ
SDRAM_FREQ natural := int_select(IN_PHASE, (FREQ*integer(2.0*CLK_DIV))/2, FREQ)
CLKDV_DIVIDE real := real_select(CLK_DIV = 1.0, 2.0, CLK_DIV)

Instantiations

clkin : IBUFG
dllint : CLKDLL
generate an internal clock sync'ed to the master clock
Generic map:
CLKDV_DIVIDE => CLKDV_DIVIDE
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
int_clk1x_buf : BUFG
sync'ed single, doubled and divided clocks for use by internal logic
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
int_clk2x_buf : BUFG
sync'ed single, doubled and divided clocks for use by internal logic
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
int_clkdv_buf : BUFG
sync'ed single, doubled and divided clocks for use by internal logic
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
SRL16_inst : SRL16
The external DLL is held in a reset state until the internal DLL locks. Then the external DLL reset is released after a delay set by this shift register. This keeps the external DLL from locking onto the internal DLL clock signal until it is stable.
Generic map:
INIT => X"0000"
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
sclkfb_buf : IBUFG
generate an external SDRAM clock sync'ed to the master clock
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
dllext : CLKDLL
sclkfb_buf : BUFGMUX port map(I => sclkfb, O => sclkfb_b); -- SDRAM clock with PCB delays
This instantiation is inside the following construct:
gen_dlls : if IN_PHASE generate
Generate the DLLs for sync'ing the clocks as long as the clocks have a frequency high enough for the DLLs to lock
u1 : sdramCntl
SDRAM memory controller module
Generic map:
FREQ => SDRAM_FREQ
IN_PHASE => IN_PHASE
PIPE_EN => PIPE_EN
MAX_NOP => MAX_NOP
MULTIPLE_ACTIVE_ROWS => MULTIPLE_ACTIVE_ROWS
DATA_WIDTH => DATA_WIDTH
NROWS => NROWS
NCOLS => NCOLS
HADDR_WIDTH => HADDR_WIDTH
SADDR_WIDTH => SADDR_WIDTH
Binding: work.sdramCntl (arch)

Generated on 1 Jan 2018 19:48:42 with VHDocL V0.2.6