|
|||||||||||
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.Virtex.Modules.delay
Generic 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.
For Virtex, the SRL16E shift registers are used. Each register
can delay the signal for 1-16 cycles. The four-bit address determines
the delay: delay = addr+1. For instance, an address of 5 delays the
signal for 6 cycles. For delays greater than 16, the registers are
simply cascaded. All of them have an address of 15 except for the
last one, which has an address corresponding to the remaining delay.
As an example, a delay of 35 would have three registers, of addresses
15, 15, and 2.
Note: If you need to clear your delay, the SRL's will
not clear their data! Take that into account in your design.
Slice count: The above CLB count generator for XC4000 is still pretty accurate for counting slices in Virtex. If the delay is for less than 64 cycles, then there will be either 2 or 4 more slices than the above counter generates. If the delay is for more than 64 cycles, then divide the number of delay cycles by 64, round up to the nearest integer, multiply this number by 2, and that is the number of slices to add to what the CLB count generator above gives you.
Slice 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. |
long |
getSize()
|
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 long getSize()
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 |