If you have the document, it also has some visual aides that show the FIFO buffers are a ring that is rotating between the inputs to the EEC.Tom Cloud wrote:...The 8061 microcomputer chip features a CPU, 256 bytes of RAM, an A/D converter and independent co-processor circuitry to expedite digital signal I/O handling. There are 13 analog lines, 8 hi-speed digital inputs, 10 hi-speed digital outputs, 8 lo speed digital outputs and 2 bi-directional I/O lines, making a total of 41 I/O lines on the CPU chip. The A/D converter is a 13-channel, 10-bit successive approximation unit.
The internal 256 bytes of RAM in the 8061 can be referenced as bytes, words or double words,
allowing frequently used variables to be stored on-chip for faster access.
The two high speed co-processors on the 8061 (HSI and HSO) were implemented to reduce signal processing overhead on the CPU. An 11-deep FIFO for the high speed input (HSI) and a 12-slot content addressable memory (CAM) for the high speed output (HSO) are used. Operation of both HSI & HSO are synchronized with an internal master I/O timer which is clocked every 2.4 microseconds (15 MHz crystal).
The HSI looks for transitions on its input lines and records (1) the time, from the master I/O timer, and (2) the transition. It can be programmed to look at selected inputs for positive and negative transitions and can be programmed to generate an interrupt to the CPU
when the first entry is made into the FIFO or when the next entry would cause the FIFO to overflow.
The HSO can be programmed to generate transitions on any of its output lines at
specified times. HSO commands are stored in one of the twelve CAM registers, which
are 24 bits wide. Of the 24 bits in each register, 16 specify the time the action is to occur, and 8 specify the action(s). The CAM file rotates one position per state time, so it takes 12
state events for the holding buffer to access all 12 registers. Therefore the time resolution of the HSO unit is 12 state times or 2.4 microseconds if a 15 MHz crystal is used...
What it doesn't explain for the HSI is:
- How does the EEC read these rotating HSI registers? Which memory address or addresses are used to represent the currently queued buffer?
- How does the EEC know which physical input value is currently queued up in the buffer to be read?
- Assuming the act of reading the memory-mapped address is what triggers the HSI buffer to transition to the next buffer position, what indication does the EEC have that the buffer is empty and that everything has been fetched from the buffer?
- The EEC writes out a time and value for the HSO. But is the value an ON/OFF or is the value a duration to be ON? For instance, when the EEC is firing an injector and it needs to fire the injector for a specific duration of time. Does the EEC send a duration as the value or is the EEC literally turning the injector ON and sending another command to be executed X ms later to turn the injector OFF?
- How does the EEC know which HSO it is commanding when it sends info to the HSO? Is part of what the EEC is sending to the HSO which output channel to control? If so, what's the encoding for that?