Documentation
¶
Overview ¶
Package hwlib provides a library of reusable parts for hwsim.
Copyright 2018 Denis Bernard <db047h@gmail.com>
This package is licensed under the MIT license. See license text in the LICENSE file.
Index ¶
- func And(w string) hwsim.Part
- func AndN(bits int) hwsim.NewPartFn
- func AndNWay(ways int) hwsim.NewPartFn
- func DFF(c string) hwsim.Part
- func DFFN(bits int) hwsim.NewPartFn
- func DMux(w string) hwsim.Part
- func DMuxMWayN(ways int, bits int) hwsim.NewPartFn
- func DMuxN(bits int) hwsim.NewPartFn
- func DMuxNWay(ways int) hwsim.NewPartFn
- func GateN(name string, bits int, f func(bool, bool) bool) hwsim.NewPartFn
- func Input(i *bool) hw.NewPartFn
- func Input16(i *uint16) hw.NewPartFn
- func Input32(i *uint32) hw.NewPartFn
- func Input64(i *uint64) hw.NewPartFn
- func Mux(w string) hwsim.Part
- func MuxMWayN(ways int, bits int) hwsim.NewPartFn
- func MuxN(bits int) hwsim.NewPartFn
- func Nand(w string) hwsim.Part
- func NandN(bits int) hwsim.NewPartFn
- func Nor(w string) hwsim.Part
- func NorN(bits int) hwsim.NewPartFn
- func Not(w string) hwsim.Part
- func NotN(bits int) hwsim.NewPartFn
- func Or(w string) hwsim.Part
- func OrN(bits int) hwsim.NewPartFn
- func OrNWay(ways int) hwsim.NewPartFn
- func Output(o *bool) hw.NewPartFn
- func Output16(o *uint16) hw.NewPartFn
- func Output32(o *uint32) hw.NewPartFn
- func Output64(o *uint64) hw.NewPartFn
- func Xnor(w string) hwsim.Part
- func Xor(w string) hwsim.Part
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AndN ¶
AndN returns a N-bits AND gate.
Inputs: a[N], b[N] Outputs: out[N] Function: for i := range out { out[i] = a[i] && b[i] }
func AndNWay ¶
AndNWay returns a N-Way OR gate.
Inputs: in[n] Outputs: out Function: out = in[0] && in[1] && in[2] || ... && in[n-1]
func DFF ¶
DFF returns a clocked data flip flop.
Works like a gated D latch where E is the inverted clock signal and D the input.
Inputs: in Outputs: out Function: out(t) = in(t-1) // where t is the current clock cycle.
func DMux ¶
DMux returns a demultiplexer.
Inputs: in, sel Outputs: a, b Function: if sel == 0 { a = in; b = 0 } else { a = 0; b = in }
func DMuxMWayN ¶
DMuxMWayN returns a N-Way demuxer.
Inputs: in[bits], sel[selBits] Outputs: a, b, ... , z, A, ... Function: if sel[0..selBits] == 0 { a == in; b,c,d... = 0 } else if sel == 1 { a = 0; b == in; c,d = 0... } ...
func DMuxN ¶
DMuxN returns a N-bits demultiplexer.
Inputs: in[bits], sel Outputs: a[bits], b[bits] Function: if sel == 0 { a = in; b = 0 } else { a = 0; b = in }
func DMuxNWay ¶
DMuxNWay returns a N-Way demuxer.
Inputs: in, sel[selBits] Outputs: a, b, ... , z, A, ... Function: if sel[0..selBits] == 0 { a == in } else if sel == 1 { b == in } ...
func GateN ¶
GateN returns a N-bits logic gate.
Inputs: a[bits], b[bits] Outouts: out[bits] Function: for i := range out { out[i] = f(a[i], b[i]) }
func Mux ¶
Mux returns a multiplexer.
Inputs: a, b, sel Outputs: out Function: if sel == 0 { out = a } else { out = b }
func MuxMWayN ¶
MuxMWayN returns a M-Way N-bits Mux
Inputs: a[bits], b[bits], ... , z[bits], A[bits], ..., sel[selBits] Outputs: out[bits] Function: for i := range out { if sel == 0 { out[i] = a[i] } else { out[i] = b[i] }... }
func MuxN ¶
MuxN returns a N-bits Mux
Inputs: a[bits], b[bits], sel Outputs: out[bits] Function: for i := range out { if sel == 0 { out[i] = a[i] } else { out[i] = b[i] } }
func NandN ¶
NandN returns a N-bits NAND gate.
Inputs: a[N], b[N] Outputs: out[N] Function: for i := range out { out[i] = !(a[i] && b[i]) }
func NorN ¶
NorN returns a N-bits NOR gate.
Inputs: a[N], b[N] Outputs: out[N] Function: for i := range out { out[i] = !(a[i] || b[i]) }
func NotN ¶
NotN returns a N-bits NOT gate.
Inputs: in[bits] Outputs: out[bits] Function: for i := range out { out[i] = !in[i] }
func OrN ¶
OrN returns a N-bits OR gate.
Inputs: a[N], b[N] Outputs: out[N] Function: for i := range out { out[i] = (a[i] || b[i]) }
func OrNWay ¶
OrNWay returns a N-Way OR gate.
Inputs: in[n] Outputs: out Function: out = in[0] || in[1] || in[2] || ... || in[n-1]
Types ¶
This section is empty.