hwtLib.logic package

Submodules

hwtLib.logic.binToOneHot module

class hwtLib.logic.binToOneHot.BinToOneHot[source]

Bases: hwt.synthesizer.unit.Unit

Little endian encoded number to number in one-hot encoding

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

static _serializeDecision(parentUnit, priv)

Decide to serialize only objs with uniq parameters and class

Parameters

priv – private data for this function ({frozen_params: obj})

Returns

tuple (do serialize this object, next priv, replacement unit)

class hwtLib.logic.binToOneHot.BinToOneHotTC(methodName='runTest')[source]

Bases: hwt.simulator.simTestCase.SingleUnitSimTestCase

classmethod getUnit() → hwt.synthesizer.unit.Unit[source]
test_basic()[source]
hwtLib.logic.binToOneHot.binToOneHot(sig, en=1)[source]

hwtLib.logic.bitonicSorter module

class hwtLib.logic.bitonicSorter.BitonicSorter(cmpFn=<function BitonicSorter.<lambda>>)[source]

Bases: hwt.synthesizer.unit.Unit

Bitonic sorter of arbitrary data

schematic
__init__(cmpFn=<function BitonicSorter.<lambda>>)[source]
Parameters

cmpFn – function (item0, item1) if returns true, items are not swaped

_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

bitonic_compare(cmpFn, x, layer, offset)[source]
bitonic_merge(cmpFn, x, layer, offset)[source]
bitonic_sort(cmpFn, x, layer=0, offset=0)[source]
class hwtLib.logic.bitonicSorter.BitonicSorterTC(methodName='runTest')[source]

Bases: hwt.simulator.simTestCase.SingleUnitSimTestCase

SIM_TIME = 40000
getOutputs()[source]
classmethod getUnit()[source]
setInputs(values)[source]
test_reversed()[source]
test_sorted()[source]

hwtLib.logic.cntrGray module

class hwtLib.logic.cntrGray.GrayCntr[source]

Bases: hwt.synthesizer.unit.Unit

Counter for gray code

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

static _serializeDecision(parentUnit, priv)

Decide to serialize only objs with uniq parameters and class

Parameters

priv – private data for this function ({frozen_params: obj})

Returns

tuple (do serialize this object, next priv, replacement unit)

class hwtLib.logic.cntrGray.GrayCntrTC(methodName='runTest')[source]

Bases: hwt.simulator.simTestCase.SingleUnitSimTestCase

classmethod getUnit() → hwt.synthesizer.unit.Unit[source]
test_count()[source]
hwtLib.logic.cntrGray.binToGray(sigOrVal) → hwt.synthesizer.rtlLevel.mainBases.RtlSignalBase[source]

Convert value or signal from binary encoding to gray encoding

hwtLib.logic.count_leading module

class hwtLib.logic.count_leading.CountLeadingOnes[source]

Bases: hwtLib.logic.count_leading._CountLeading

Count leading zeros in bit vector

schematic
_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

class hwtLib.logic.count_leading.CountLeadingZeros[source]

Bases: hwtLib.logic.count_leading._CountLeading

Count leading zeros in bit vector

schematic
_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

class hwtLib.logic.count_leading._CountLeading[source]

Bases: hwt.synthesizer.unit.Unit

Count leading zeros/ones in bit vector

_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

classmethod count_leading_recurse(data_in: hwt.synthesizer.rtlLevel.rtlSignal.RtlSignal, bit_to_count: int)[source]

hwtLib.logic.crc module

class hwtLib.logic.crc.Crc[source]

Bases: hwt.synthesizer.unit.Unit

Crc generator for any crc, polynome can be string in usual format or integer (“x^3+x+1” or 0b1011)

Note

See hwtLib.logic.crcComb.CrcComb

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

build_crc_xor_matrix(state_in_bits, poly_bits, data_in_bits) → List[hwt.synthesizer.rtlLevel.rtlSignal.RtlSignal][source]

build xor tree for CRC computation

setConfig(crcConfigCls)[source]

Apply configuration from CRC configuration class

hwtLib.logic.crcComb module

class hwtLib.logic.crcComb.CrcComb[source]

Bases: hwt.synthesizer.unit.Unit

CRC generator, polynomial can be string in usual format or integer (“x^3+x+1” or 0b1011)

Variables
  • DATA_WIDTH – width of data in signal

  • POLY – specified CRC polynome, str, int or Bits value

  • POLY_WIDTH – width of POLY

  • REFIN – This is a boolean parameter. If it is FALSE, input bytes are processed with bit 7 being treated as the most significant bit (MSB) and bit 0 being treated as the least significant bit. If this parameter is FALSE, each byte is reflected before being processed.

  • REFOUT – Same as REFIN except for output

  • XOROUT – value to xor result with

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

classmethod applyCrcXorMatrix(crcMatrix: List, inBits: List, stateBits: List, refin: bool) → List[source]
static buildCrcXorMatrix(data_width: int, polyBits: List[bool]) → List[Tuple[List[bool], List[bool]]][source]
Parameters
  • data_width – number of bits in input (excluding bits of signal wit current crc state)

  • polyBits – list of bits in specified polynome

Note

all bits are in format LSB downto MSB

Returns

crc_mask contains rows where each row describes which bits should be XORed to get bit of resut row is [mask_for_state_reg, mask_for_data]

static parsePoly(POLY, POLY_WIDTH) → List[int][source]
Returns

list of bits from polynome, extra MSB 1 is added len of this list is POLY_WIDTH + 1

setConfig(crcConfigCls)[source]

Apply configuration from CRC configuration class

hwtLib.logic.crcPoly module

Library of common CRC configurations

note

POLY is the polynome of CRC and specifies which bits should be xored together.

note

WIDTH - specifies the width of CRC state/value

note

REFIN - If it is True the bits in each byte are reversed before processing.

note

REFOUT If it is set to FALSE, the final value in the register is fed into the XOROUT stage directly, otherwise, if this parameter is TRUE, the final register value is reflected first.

note

XOROUT This is an WIDTH-bit value. It is XORed to the final register value (after the REFOUT) stage before the value is returned as the official checksum.

note

http://reveng.sourceforge.net/crc-catalogue/all.htm

class hwtLib.logic.crcPoly.CRC3_ROHC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

CRC-3/ROHC (Robust header compression rfc3095)

CHECK = 6
INIT = 7
POLY = 3
REFIN = True
REFOUT = True
RESIDUE = 0
WIDTH = 3
class hwtLib.logic.crcPoly.CRC_1[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

also known as parity bit

POLY = 1
WIDTH = 1
class hwtLib.logic.crcPoly.CRC_10[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in ATM; I.610

POLY = 563
WIDTH = 10
class hwtLib.logic.crcPoly.CRC_10_CDMA2000[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 985
WIDTH = 10
class hwtLib.logic.crcPoly.CRC_10_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 373
WIDTH = 10
class hwtLib.logic.crcPoly.CRC_11[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in FlexRay

POLY = 901
WIDTH = 11
class hwtLib.logic.crcPoly.CRC_12[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in telecom systems

POLY = 2063
WIDTH = 12
class hwtLib.logic.crcPoly.CRC_12_CDMA2000[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 3859
WIDTH = 12
class hwtLib.logic.crcPoly.CRC_12_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 3377
WIDTH = 12
class hwtLib.logic.crcPoly.CRC_13_BBC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Time signal, Radio teleswitch

POLY = 7413
WIDTH = 13
class hwtLib.logic.crcPoly.CRC_14_DARC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Data Radio Channel[19]

POLY = 2053
WIDTH = 14
class hwtLib.logic.crcPoly.CRC_14_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 8237
WIDTH = 14
class hwtLib.logic.crcPoly.CRC_15_CAN[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

POLY = 17817
WIDTH = 15
class hwtLib.logic.crcPoly.CRC_15_MPT1327[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

POLY = 26645
WIDTH = 15
class hwtLib.logic.crcPoly.CRC_16_ARINC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in ACARS applications

POLY = 41003
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_CCITT[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in X.25, V.41, HDLC FCS, XMODEM, Bluetooth, PACTOR, SD, DigRF, many others; Also known as CRC_CCITT

INIT = 65535
POLY = 4129
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_CDMA2000[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 51303
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_Chakravarty[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Optimal for payloads ≤64 bits

POLY = 12053
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_DECT[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in cordless telephones

POLY = 1417
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_DNP[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in DNP, IEC 870, M-Bus

POLY = 15717
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_IBM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Bisync, Modbus, USB, ANSI X3.28, SIA DC-07, many others; Also known as CRC_16 and CRC_16-ANSI

POLY = 32773
REFIN = True
REFOUT = True
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_OpenSafety_A[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in safety fieldbus

POLY = 22837
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_OpenSafety_B[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in safety fieldbus

POLY = 30043
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_Profibus[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in fieldbus networks

POLY = 7631
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_16_T10_DIF[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in SCSI DIF

POLY = 35767
WIDTH = 16
class hwtLib.logic.crcPoly.CRC_17_CAN[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in CAN FD

POLY = 92251
WIDTH = 17
class hwtLib.logic.crcPoly.CRC_21_CAN[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in CAN FD

POLY = 1058969
WIDTH = 21
class hwtLib.logic.crcPoly.CRC_24[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in FlexRay

POLY = 6122955
WIDTH = 24
class hwtLib.logic.crcPoly.CRC_24_Radix_64[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in OpenPGP, RTCM104v3

POLY = 8801531
WIDTH = 24
class hwtLib.logic.crcPoly.CRC_30[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in CDMA

POLY = 540064199
WIDTH = 30
class hwtLib.logic.crcPoly.CRC_32[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in HDLC, ANSI X3.66, ITU-T V.42, Ethernet, Serial ATA, MPEG-2, PKZIP, Gzip, Bzip2, PNG, many others

INIT = 4294967295
POLY = 79764919
REFIN = True
REFOUT = True
RESIDUE = 3338984827
WIDTH = 32
XOROUT = 4294967295
class hwtLib.logic.crcPoly.CRC_32C[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in (Castagnoli), iSCSI, SCTP, G.hn payload, SSE4.2, Btrfs, ext4, Ceph

CHECK = 3808858755
INIT = 4294967295
POLY = 517762881
REFIN = True
REFOUT = True
RESIDUE = 3080238136
WIDTH = 32
XOROUT = 4294967295
class hwtLib.logic.crcPoly.CRC_32K[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Koopman {1,3,28}

POLY = 1947962583
WIDTH = 32
class hwtLib.logic.crcPoly.CRC_32K_2[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Koopman {1,1,30}

POLY = 844641433
WIDTH = 32
class hwtLib.logic.crcPoly.CRC_32Q[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in aviation; AIXM

POLY = 2168537515
WIDTH = 32
class hwtLib.logic.crcPoly.CRC_3_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

INIT = 0
POLY = 3
WIDTH = 3
XOROUT = 7
class hwtLib.logic.crcPoly.CRC_40_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in GSM control channel[40][41]

POLY = 75628553
WIDTH = 40
class hwtLib.logic.crcPoly.CRC_4_ITU[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

G.704

CHECK = 7
POLY = 3
REFIN = True
REFOUT = True
RESIDUE = 0
WIDTH = 4
class hwtLib.logic.crcPoly.CRC_5_EPC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Gen 2 RFID EPC-C1G2

CHECK = 0
POLY = 9
RESIDUE = 0
WIDTH = 5
class hwtLib.logic.crcPoly.CRC_5_ITU[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

G.704

POLY = 21
WIDTH = 5
class hwtLib.logic.crcPoly.CRC_5_USB[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

USB token packets

CHECK = 25
INIT = 31
POLY = 5
REFIN = True
REFOUT = True
RESIDUE = 12
WIDTH = 5
XOROUT = 31
class hwtLib.logic.crcPoly.CRC_64_ECMA[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in ECMA-182, XZ Utils

POLY = 4823603603198064275
WIDTH = 64
class hwtLib.logic.crcPoly.CRC_64_ISO[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in HDLC, Swiss-Prot/TrEMBL; considered weak for hashing

POLY = 27
WIDTH = 64
class hwtLib.logic.crcPoly.CRC_6_CDMA2000_A[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 39
WIDTH = 6
class hwtLib.logic.crcPoly.CRC_6_CDMA2000_B[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 7
WIDTH = 6
class hwtLib.logic.crcPoly.CRC_6_DARC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Data Radio Channel

POLY = 25
WIDTH = 6
class hwtLib.logic.crcPoly.CRC_6_GSM[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 47
WIDTH = 6
class hwtLib.logic.crcPoly.CRC_6_ITU[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in G.704

POLY = 3
WIDTH = 6
class hwtLib.logic.crcPoly.CRC_7[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in telecom systems, G.707,G.832, MMC, SD

POLY = 9
WIDTH = 7
class hwtLib.logic.crcPoly.CRC_7_MVB[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Train Communication Network, IEC 60870-5

POLY = 101
WIDTH = 7
class hwtLib.logic.crcPoly.CRC_8[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in DVB-S2

POLY = 213
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_AUTOSAR[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in automotive integration, OpenSafety

POLY = 47
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_Bluetooth[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in wireless connectivity

POLY = 167
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_CCITT[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in I.432.1; ATM HEC, ISDN HEC and cell delineation

CHECK = 244
POLY = 7
RESIDUE = 0
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_DARC[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in Data Radio Channel

POLY = 57
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_Dallas_Maxim[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in 1-Wire bus

POLY = 49
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_GSM_B[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

POLY = 73
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_SAE_J1850[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in AES3

POLY = 29
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_8_WCDMA[source]

Bases: hwtLib.logic.crcPoly.CRC_POLY

Used in mobile networks

CHECK = 37
INIT = 0
POLY = 155
REFIN = True
REFOUT = True
RESIDUE = 0
WIDTH = 8
class hwtLib.logic.crcPoly.CRC_POLY[source]

Bases: object

Base class for crc configuration specifications

INIT = 0
POLY = None
REFIN = False
REFOUT = False
WIDTH = None
XOROUT = 0

hwtLib.logic.crcUtils module

hwtLib.logic.crcUtils.parsePolyStr(polyStr, width)[source]
hwtLib.logic.crcUtils.parsePolyStr_parse_n(string)[source]

Parse the number part of a polynomial string term

hwtLib.logic.crcUtils.parsePolyStr_parse_p(string)[source]

Parse the power part of a polynomial string term

hwtLib.logic.lsfr module

class hwtLib.logic.lsfr.Lsfr[source]

Bases: hwt.synthesizer.unit.Unit

Linear shift feedback register generator, form of hardware pseudorandom generator.

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

class hwtLib.logic.lsfr.LsfrTC(methodName='runTest')[source]

Bases: hwt.simulator.simTestCase.SingleUnitSimTestCase

classmethod getUnit()[source]
test_simple()[source]

hwtLib.logic.oneHotToBin module

class hwtLib.logic.oneHotToBin.OneHotToBin[source]

Bases: hwt.synthesizer.unit.Unit

Converts one hot signal to binary, bin.vld is high when oneHot != 0

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr

static _serializeDecision(parentUnit, priv)

Decide to serialize only objs with uniq parameters and class

Parameters

priv – private data for this function ({frozen_params: obj})

Returns

tuple (do serialize this object, next priv, replacement unit)

hwtLib.logic.oneHotToBin.oneHotToBin(parent, signals: Union[hwt.synthesizer.rtlLevel.rtlSignal.RtlSignal, hwt.interfaces.std.Signal, List[Union[hwt.synthesizer.rtlLevel.rtlSignal.RtlSignal, hwt.interfaces.std.Signal]]], resName='oneHotToBin')[source]

hwtLib.logic.pid module

class hwtLib.logic.pid.PidController[source]

Bases: hwt.synthesizer.unit.Unit

The PID Control block compares the input to the target and calculates an error. Based on this error, a output value is calculated that should result in a smaller error on the next iteration of the loop, assuming your parameters are tuned properly.

u(k) = u(k-1) + a0*e(k) + a1*y(k) + a2*y(k-1) + a3*y(k-2)

e(k): error in this step (= target value - input) y(k): input in step k ax: PID coeficient

The PID parameter inputs for this equation are slightly different from the traditional K_p, K_i, and K_d.

a0 = K_i * T_s a1 = -K_p - K_d / T_s a2 = K_p + 2K_d/T_s a3 = - K_d / T_s

Note

You can obtain coeficiet f.e. by Ziegler-Nichols method.

schematic
_config()[source]

Configure object parameters

  • setup all parameters on this object, use Param class instances to allow use of parameter inheritance

  • called in __init__ of class

_declr()[source]

declarations

  • do all declarations of externally accessible objects there (Interfaces)

  • _declr method is called after _config

  • if this object is Unit all interfaces are threated as externally accessible interfaces if this object is Interface instance all subinterfaces are loaded as well

_impl()[source]

implementations

  • implement functionality of componnent there

  • called after _declr