logic - LinuxCNC HAL component providing configurable logic functions
loadrt logic [count=N|names=name1[,name2...]]
personality=0xXXXX[,0xXXXX...]
-
count The number of logical gates.
-
names The named logical gates to create.
-
personality Comma separated list of hexadecimal
number.
- Each number defines the behaviour of the individual logic
gate. The list must have the same number of personalities as the N count.
General `logic function' component. Can perform `and', `or', `nand', `nor' and
`xor' of up to 16 inputs.
Determine the proper value for `personality' by adding the inputs and outputs
then convert to hex:
- •
- The number of input pins, usually from 2 to 16
- •
- 256 (0x100) if the `and' output is desired
- •
- 512 (0x200) if the `or' output is desired
- •
- 1024 (0x400) if the `xor' (exclusive or) output is
desired
- •
- 2048 (0x800) if the `nand' output is desired
- •
- 4096 (0x1000) if the `nor' output is desired
Outputs can be combined, for example 2 + 256 + 1024 = 1282 converted to hex
would be 0x502 and would have two inputs and have both `xor' and `and'
outputs.
-
logic.N
- Read the inputs and toggle the output bit.
- logic.N.in-MM bit in
(MM=00..personality & 0xff)
-
- logic.N.and bit out [if personality &
0x100]
-
- logic.N.or bit out [if personality &
0x200]
-
- logic.N.xor bit out [if personality &
0x400]
-
- logic.N.nand bit out [if personality &
0x800]
-
- logic.N.nor bit out [if personality &
0x1000]
This is an OR circuit connected to three different signals, two inputs named
sig-in-0 and sig-in-1, and one output named sig-out. First the circuit is
defined, then its function is connected to the servo real time thread, last,
its pins are connected to the wanted signals.
-
loadrt logic count=1 personality=0x202
addf logic.0 servo-thread
net sig-in-0 => logic.0.in-00
net sig-in-1 => logic.0.in-01
net sig-out <= logic.0.or
This is a named AND circuit with two inputs and one output.
-
loadrt logic names=both personality=0x102
addf both servo-thread
net sig-in-0 => both.in-00
net sig-in-1 => both.in-01
net sig-out <= both.and
and2(9),
lut5(9),
not(9),
or2(9),
xor2(9)
Jeff Epler
GPL