Packages

object pla

Source
pla.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. pla
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. 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 to 1 and a 0 or ? means this product term make the function value to 0

    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, a 0 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 to 1 is purely composed by ?. In a real pla, this will result in no connection to the gates in the AND Plane (verilog z on gate inputs), which in turn makes the outputs of the AND Plane undetermined (verilog x 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 verilog x. To ease the generation of minimized truth tables, this pla generation api will hard wire outputs to a 1 on this special case. This behavior is formally described as: if product terms that make one function value to 1 is solely consisted of don't-cares (?s), then this function is implemented as a constant 1.

  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped