Digital∫Features (read as "Digital Integration Features") are a new family of features available for applicable models of ACCES' PCI Express (PCIe) and PCI Express Mini Card (mPCIe) Digital I/O product lines.
Features include both new functionality for Input and Output digital bits, as well as general performance optimizations and advanced IRQ functionality.
- Features common to all Digital∫Features devices
- Memory-Mapped registers: All registers are implemented using "memory" instead of "ports" leading to a massive (~10x!) performance improvement.
- Advanced IRQ generation (Change-of-State++)
- Multiple selectable IRQ sources per input pin, and several per output
Digital Output Features
- One-Shot: Generate a pulse of configurable duration and direction
- Pulse-Train: Generate a sequence of n such pulses, with a configurable delay between
- PWM: Generate a fully-configurable PWM signal, with flexible base frequency and high precision
- Quadrature: Generate a stepper-motor "quadrature output" pair, with "increment n" and "decrement n" commands at register-level for low-latency performance
Digital Input Features
- Debounce: Configurable lowpass/debounce digital filtering, per-bit, to eliminate transitions associated with mechanical contacts
- All additional input features operate on the debounced data
- Event Detection: Various signal conditions can be selected to generate "Events"; Events can be configured to generate IRQs and/or increment the associated per-input Counter.
- Counters: One counter per input increments when selected signal conditions ("Events") are detected
- Threshold Exceeded: Each input counter has an associated threshold with an optional "count threshold exceeded" IRQ
- Pulse Measurement: Measure pulse duration, both high-side and low, with resolution as low as 16ns
- Frequency Measurement: Measure frequencies as fast as ~30MHz
- Quadrature: 32-bit Quadrature counter supports A/B [and optional Index] quadrature signal input, counting in "x4" mode at up to 125MHz
IRQ: Advanced IRQ generation
Rather than being limited to "any change of the input generates an IRQ" you can now enable any combination of Rising Edge, Falling Edge, High-going pulse, Low-going pulse, and Event Counter Threshold Exceeded for input bits, and Pulse- or Pulse-Train Generation Complete IRQ sources for output bits.
One-Shot, Pulse-Train, PWM
A flexible direction-and-duration engine allows precise control (8ns resolution) selection of pulse and inter-pulse durations for generating anything from 1 to 255 sequential pulses — or the same engine can be used for PWM generation by setting the pulse count to free-run mode. An IRQ can be generated whenever a pulse or train generation has finished.
DEB: Debounced Digital Inputs
Debouncing provides a way to avoid mechanical contact bounce from confusing your software and users, and can greatly reduce spurious "edge" or "change-of-state" IRQs. By commanding the onboard intelligence to monitor the inputs and filter out contact bounce you can avoid adding low-pass filters to your digital inputs. Digital∫Features' implementation of this lowpass filtering includes per-bit selection of "debounce" or "raw" data, and the debounce time constant can be selected globally. All Digital∫Features work with the "debounced" data, if it is enabled for the bit in use.
A major upgrade from the simple Change-of-State IRQs common decades ago, Event Detection (CoS++) allows per-input-bit selection of as little as a single edge, or any combination of falling/rising edges and/or pulses, or even the occurrence of up to 255 of these Events, to generate an IRQ. To qualify as a Pulse the signal must go active for less than 216-1 * 8ns.
Each input pin can count various events: falling edges, or rising edges, or pulses - up to 255 Events, with optional target-count-exceeded IRQ. Instead of being interrupted on every pulse, choose to count them instead, and you can get interrupted as rarely as every 10th, 100th, or 255th pulse — or anywhere in between — using these 8-bit Event Counters
Both pulse and frequency measurements are available, able to measure pulses (both rising and falling) from 16ns to ~8ms.
Quadrature signals (A/B [and optional Index]) can be fed to a 32-bit quadrature counter at up to 125MHz. A/B pairs can be generated as well, and the hardware interface registers include "increment by n" and "decrement by n" — as well as "IRQ on completion", for efficient motor-control algorithms