object pla
- Source
- pla.scala
- Alphabetic
- By Inheritance
- pla
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(table: Seq[(BitPat, BitPat)], invert: BitPat = BitPat("b0")): (UInt, UInt)
Construct a https://en.wikipedia.org/wiki/Programmable_logic_array from specified table.
Construct a https://en.wikipedia.org/wiki/Programmable_logic_array from specified table.
Each position in the input matrix corresponds to an input variable where
0
implies the corresponding input literal appears complemented in the product term.1
implies the input literal appears uncomplemented in the product term?
implies the input literal does not appear in the product term.For each output a
1
means this product term makes the function value to1
and a0
or?
means this product term make the function value to0
- table
A
Seq
of inputs -> outputs mapping- invert
A BitPat specify which bit of the output should be inverted.
1
means the correspond position of the output should be inverted in the PLA, a0
or a?
means direct output from the OR matrix.- returns
the (input, output) Wire of UInt of the constructed pla.
// A 1-of-8 decoder (like the 74xx138) can be constructed as follow val (inputs, outputs) = pla(Seq( (BitPat("b000"), BitPat("b00000001")), (BitPat("b001"), BitPat("b00000010")), (BitPat("b010"), BitPat("b00000100")), (BitPat("b011"), BitPat("b00001000")), (BitPat("b100"), BitPat("b00010000")), (BitPat("b101"), BitPat("b00100000")), (BitPat("b110"), BitPat("b01000000")), (BitPat("b111"), BitPat("b10000000")), ))
- Note
There is one special case which we call it
? -> 1
. In this scenario, for some of the output functions (bits), all input terms that make this function value to1
is purely composed by?
. In a real pla, this will result in no connection to the gates in the AND Plane (verilogz
on gate inputs), which in turn makes the outputs of the AND Plane undetermined (verilogx
on outputs). This is not desired behavior in most cases, for example the minimization result of following truth table: 0 -> 1 1 -> 1 which is: ? -> 1 actually means something other than a verilogx
. To ease the generation of minimized truth tables, this pla generation api will hard wire outputs to a1
on this special case. This behavior is formally described as: if product terms that make one function value to1
is solely consisted of don't-cares (?
s), then this function is implemented as a constant1
.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()