Supported Bit Rates
Both the High Speed (100kb) and low-speed (12.5KB) are supported.
Channel Usage
Each eTPU has 32-channels, and two eTPU channels are required per
transmitter. Two eTPU channels are also required per receiver. These
channel pairs must occupy adjacently numbered channels as follows.
The channel number (e.g. channel '4') must be paired with channel
'5'. Specifically, the channel numbers can only differ by the least
significant bit. For instance, channels 4 could be paired with channel
5 could be used, but channels 5 and 6 could not be paired.
Typical Configuration
A typical configuration could be 2 drivers and 14 receivers. The
drivers would be located on channels pairs 0+1, 2+3, ... 26,27.
The receivers would be located on channel pairs 28+29, 30+31. All
Receivers would be set to medium priority and all drivers would
be set to high priority. This is just an example configuration as
other configurations are possible.
Hardware Interface
A device external to the microcontroller is required to perform
the conversion to/from digital as shown below. A number of commercially
available devices are available including Holt Integrated Circuits,
Inc.'s HI 3282. It is also possible to design your own driver receiver
from discrete parts (op-amps, comparators) and an example design
is available upon request. An important aspect of the design is
hysteresis on the receiver such that there is no glitch on the receiver.
Such a glitch can cause reception errors.

Receiver Waveforms
The following is and example of a receiver waveform
at the input pins of the eTPU.

eTPU Memory Usage
| |
Receiver (Bytes)
|
Transmitter (Bytes)
|
| Code - Instructions |
540
|
576
|
| Code - Event Vector Table(s) |
64
|
128
|
| Code - Total |
604
|
704
|
| |
|
|
Data - Function Frame
|
72
|
64
|
| Data - Global |
0 + Circular Buffer
|
0 + Circular Buffer
|
Each receiver requires 72 bytes (60-used, 12) of function frame
data. This does not include circular buffer space.
Each transmitter requires 64 bytes (48-used, 16) of function frame
data. This does not include circular buffer space.
Each transmitter and each receiver needs its own circular buffer.
The used code space is 604 bytes total for the receiver and 704
bytes total for the transmitter which includes both code and event
vector (entry) tables. No spare space is inlcuding in these code
space requirement numbers.
Circular Buffers
The driver and receiver use circular buffers to hold the received/transmitted
data. The buffer has no size limitation, except that the total amount
of buffering cannot exceed the total amount of DATA MEMORY on the
eTPU.
The access coherency routine uses one of the circular buffer locations
as a scratch-pad, and it is effectively not available for storage.
The driver continues to transmit at its programmed rate until the
buffer is empty.
The receiver continues to receive until the buffer is full. Once
the buffer is full, overflowed received words are rejected. Note
that a double-buffering assures that faulty words, or words causing
overflow do not cause corrupted words. Instead, the overflowing
or corrupted word is rejected.
Buffer Update Requirements
The size of the circular buffers are set at initialization and
once set, cannot be resized. Each receiver and each transmitter
must have its own buffer. The driver/receivers share the same total
memory space as global variables, and the function frame. Assume
that a system has 3072 bytes of DATA memory and contains 10 ARINC429
receivers. Each receiver's function frame contains 16 (32-bit) words
for a total function frame usage of 10 (receivers) * 4 (bytes/word)
* 16 (words/receiver) = 640 bytes of function frame. No global variables
are used by the receiver function. The leftover PRAM available for
the circular buffers is therefore 3072 (total available bytes) -
640 (bytes for function frames) = 2432 bytes. That means that each
receiver channel's circular buffer could be 243 bytes or could contain
60 (32-bit) locations, and the access coherency limitation effectively
reduces the buffer size to 59 locations. A word can arrive or be
transmitted once every 360 microseconds. This means that an entire
buffers worth of words can be received or transmitted in 21 milliseconds.
Parity Calculation
Transmitter parity is generated on the portion of the driver located
in the host. Receiver parity is checked on the host side of the
driver. The eTPU code neither calculates nor verifies parity.
Fault Detection
The following receiver faults are detected:
- Buffer Overflow Fault
- Too Many Bits in Word Fault
- Line Went Idle Fault (too few bits)
- Invalid State Fault (detection of an unknown internal software
fault)
All receive faults result in rejection of received word.
The following transmit fault sources are detected.
- Buffer Overflow Fault (detected in host interface)
- Invalid State Fault (detection of an unknown internal software
fault)
Each fault is reported individually, affording full observability
of fault source.
Receiver Worst Case Thread Length
The receiver's worst case thread length is 22 instructions not
including data access collisions and 6-system clock time slot transition
time. Under normal operation of High-Speed, this would occur once
every 10 micro-seconds. See below.

Receiver Latency Requirement
The system must be designed such that the receiver function is
serviced once every 10 microseconds. In other words, the net latency
imposed by a combination of all functions, on all channels, worst
case latencies, priorities, and thread activation rates must be
such that the receiver is serviced at this worst case rate.
The system must be designed that the transmit function is serviced
twice every 10 microseconds.
Transmitter Worst Case Thread Length
The Transmitter's worst case thread length is 18 instructions not
including data access collisions and 6-system clock time slot transition
time. This worst case thread will only occur once every 10 Microseconds.
A second worst case situation is that there can be two sequential
threads every 10 microseconds. These sequential threads are the
slave's threads "DataBits31_24" and the slave's "GenerateTrailingEdges"
which are 18 instructions, and 7 instructions, respectively.


Transmitter Latency Requirement
The system must be designed such that the transmitter function
is executed twice every 10 micro-seconds. Specifically, the "DataBits31_24"
and the slave's "GenerateTrailingEdges" threads need to
be serviced this often.
Compatibility with other eTPU functions
The eTPU drivers are written in eTPU_C using the Byte Craft Limited
compiler. The .OBJ file is supplied such that other eTPU functions
can be mixed in with the eTPU functions assuming the servicing requirements
are met. Note that these drivers are well behaved in that they can
coexist with other drivers.
It is the user's responsibility to verify that worst case latency
requirements are met for a the customer's set of eTPU functions
running on channels and priority levels.
Receiver Address Filtering
Address filtering can easilly be ncorporated into the host-side
drivers.
Interrupts
The host interface can be programmed to interrupt on a programmable
number of received or transmitted words. Alternatively, the driver
can be polled. The polling rate depends on the size of the programmable
circular buffer, the bit rate, and the activity rate.
DO178B
The delivered items can be used as certification artifacts, though
you will need to do your own certification.
Testing
Testing includes 100 % code coverage, 100% jump coverage, and 100%
entry coverage. All features described in the User Manual have been
tested.
Guarantees
All requirements derived from the User Manual are guaranteed to
be met. No other guarantees are made or implied. Specifically, determination
of suitability for a particular application is the responsibility
of the purchaser. If not fully satisfied, delete and return all
materials within 60 days of purchase for a full refund.
Deliverables
- User Manual
- ARINC429 Receiver and Transmitter eTPU source code files; Arinc429Receive.c
and Arinc429Transmit.c that implement the ARINC429 functionality
in the eTPU.
- All other files required to build a stand-alone executable. These
include header fileETpuC.H, ETpuC_Common.h, ETpuC_AshWare.h, and
files All.c and Tester.C. Note that these files follow the standard
eTPU format and can be mixed and matched with Freescale and other
third party eTPU code.
- ETPU C Compiler-generated header files, etpu_Arinc429Receive_auto.h
and etpu_Arinc429Transmit_auto.h which describe the interface to
the transmitter and receiver functions. These files are used by
the host-side compiler.
- Test cases that verify that all requirements have been met and
that acheive 100% instruction, jump, and entry table coverage.
- Example host-side "C" drivers (files cpu_arinc429_receive.c,
cpu_arinc429_receive.h, cpu_arinc429_transmit.c, and cpu_arinc429_transmit.h)
that conform to the Freescale eTPU driver API. Note that this host-side
example has not been fully tested, and is provided "as-is."
- Example host-side application file arinc429_example_mpc5500.c.
- All other files required to build the host-side application with
a GNU "C" compiler. This includes Freescale files that
describe the eTPU and MPC5554 (files config.h, etpu_struct.h, etpu_util.c,
etpu_util.h, mpc5554.h, mpc5554_vars.h, and typedefs.h) misceleanous
source files for building the GNU example (crt0.S, isrLib.c, isrLib.h,
and vector.S) miscelaneous GNU build files (Mk.bat, makefile.gnu,
and link_sys_sim.ld) and miscelaneous files for running the example
in the ASH WARE eTPU/CPU System Simulator Environment (files eTPUInit.ETpuCommand,
RcvOneChanYesDrive.Vector, RunScript.Cpu32Command, StartupScript.Cpu32Command,
and SystemTest.ETpuSysSimProject)
Licensing
Purchase of a license entitles the purchaser to use the eTPU drivers
on a single product. If the driver were to be used on another product,
a second license would need to be purchased. ASH WARE receives no
royalties.
A Licensing Agreement must be in place.
Consulting
With the purchase of the initial license comes 4 hours of consulting.
Additional hours are billed at an hourly rate of $125 U.S.
Price
$8,900 US for the first license
$4,900 US each subsequent licenses
Royalties
Each license is royalty free. ASH WARE receives no per unit royalty.
|