|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectbyucc.jhdl.base.Nameable
byucc.jhdl.base.Node
byucc.jhdl.base.Cell
byucc.jhdl.base.Structural
byucc.jhdl.Logic.LogicGates
byucc.jhdl.Logic.LogicStatic
byucc.jhdl.Logic.Logic
byucc.jhdl.Xilinx.XC4000.Modules.delay
XC4000 Delay Line
This delays a data word for a given number of cycles. The delay line can be stalled by setting clk_en=0. The delay can be for any number of cycles, and is specified at construction time. The input and output can each be up to 64 bits wide and must be the same width.
If the delay line is directly driven by a ConstantSource, the delay line is internally optimized away.
This module uses rams to store the data and a 4-bit downcounter to access the various addresses on the rams. To get more than 16 delay cycles, the number of delay cycles needed is divided as evenly as possible into blocks of <= 16 cycles. These blocks are placed into cascading 16x1 rams. If each block is exactly the same size, a single downcounter is used to control the rams. If the blocks can't be divided evenly, some of the rams will store the information for one more cycle than the others and 2 downcounterss are used. To get more than 64 cycles of delay, this class recursively stacks 64-cycle versions of itself together and then has a delay line taking care of the remaining cycles at the end.
CLB count:
CLB placement:
Field Summary | |
static CellInterface[] |
cell_interface
|
static java.lang.String |
cellname
The input is a generic width |
Fields inherited from class byucc.jhdl.Logic.Logic |
ABOVE, ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_LEFT, ALIGN_LSB, ALIGN_MSB, ALIGN_RIGHT, ALIGN_TOP, BELOW, DOWN, EAST_OF, LEFT_OF, MAX_PACK, NORTH_OF, ON, ONTOP, ONTOP_OF, RIGHT_OF, SOUTH_OF, TOLEFT, TORIGHT, UNCONSTRAINED, UP, WEST_OF |
Fields inherited from class byucc.jhdl.Logic.LogicGates |
tech_mapper |
Constructor Summary | |
delay(Node parent,
int num_of_cyc,
Wire in,
Wire clk_en,
Wire out)
|
|
delay(Node parent,
int num_of_cyc,
Wire in,
Wire clk_en,
Wire out,
java.lang.String name)
|
|
delay(Node parent,
int num_of_cyc,
Wire clk,
Wire in,
Wire clk_en,
Wire out)
|
|
delay(Node parent,
int num_of_cyc,
Wire clk,
Wire in,
Wire clk_en,
Wire out,
java.lang.String name)
|
Method Summary | |
void |
clock()
Clock is used in the behavioral model and is called once per clock cycle |
static int |
compute()
No computation necessary in this class, so compute always returns a zero |
void |
connectImplicitPort()
|
protected boolean |
defaultSimulationModelIsBehavioral()
Default simulation model is behavioral |
java.lang.String |
getCellName()
Access the cell name associated with a derived class. |
BV |
getMemoryElement(int addr)
Return the given memory position |
BV[] |
getMemoryRange(int sIndex,
int elements)
Return the given memory range |
int |
getMemoryWidth()
Returns the memory width |
long |
getSize()
Returns the memory size |
void |
propagate()
Propagate is used only if the number of delay cycles = 0 |
void |
reset()
Resets the output to zero |
Methods inherited from class byucc.jhdl.base.Node |
addObservable, addSimulatorCallback, checkAll, delete, getBuildingFlag, getChildren, getChildrenEnumeration, getInstanceName, getParent, getParentCell, getRelatives, getSystem, getWires, optimize, orphanAllowed, printAllChildren, printTree, removeSimulatorCallback, setDefaultClock |
Methods inherited from class byucc.jhdl.base.Nameable |
caseSensitivity, caseSensitivity, disableNameClashChecking, getFullName, getFullNameNoTestBench, getHierNameNoTestBench, getInstanceNo, getInstanceNumber, getLeafName, getLeafName, getRelativeName, getUserName, getUserName, hasUserSpecifiedName, isDescendantOf, setInstanceNumber |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static CellInterface[] cell_interface
public static final java.lang.String cellname
Constructor Detail |
public delay(Node parent, int num_of_cyc, Wire in, Wire clk_en, Wire out)
public delay(Node parent, int num_of_cyc, Wire clk, Wire in, Wire clk_en, Wire out)
public delay(Node parent, int num_of_cyc, Wire in, Wire clk_en, Wire out, java.lang.String name)
public delay(Node parent, int num_of_cyc, Wire clk, Wire in, Wire clk_en, Wire out, java.lang.String name)
Method Detail |
public java.lang.String getCellName()
Cell
getCellName
in class Cell
public BV[] getMemoryRange(int sIndex, int elements)
MemoryInterface
getMemoryRange
in interface MemoryInterface
sIndex
- the starting indexelements
- how many entries to get
public BV getMemoryElement(int addr)
MemoryInterface
getMemoryElement
in interface MemoryInterface
addr
- the memory address to get
public long getSize()
MemoryInterface
getSize
in interface MemoryInterface
public int getMemoryWidth()
MemoryInterface
getMemoryWidth
in interface MemoryInterface
public void reset()
reset
in interface Clockable
reset
in class Structural
public void clock()
clock
in interface Clockable
clock
in class Structural
public void propagate()
propagate
in interface byucc.jhdl.base.Propagateable
propagate
in class Structural
protected boolean defaultSimulationModelIsBehavioral()
defaultSimulationModelIsBehavioral
in class Structural
public void connectImplicitPort()
public static int compute()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |