This is a set of notes by Fred King describing portions of the APM design. It was collected after he left so is a bit disorganised but is included here for reference.
These files comprise the bulk of the departmental report "APM Working Documents"
The EUCSD bus is an interconnection system for computer components. Its design goals were those of simplicity, flexibility and performance. It was assumed that the components to be connected would fall into three categories :
1. Memories - accessible from all other devices.
2. Main processors - with no I/O capability.
3. I/O processors - providing I/O facilities for the system.
The two significant features of the system are that there are multiple processors sharing common resources and that there are no simple I/O devices connected directly to the bus.
Multiple processors imply that the bus must be shared fairly among them. To achieve this, a bus controller that gives bus arbitration facilities must be provided as part of the bus structure. This is implemented as a central facility that has separate connections to each of the potential bus masters.
As there are no simple I/O devices on the bus, it is possible to avoid providing a fixed interrupt structure. These facilities are provided by control registers associated with processors. When these control registers are accessed from the bus, the effect is to cause an interrupt request to the corresponding processor. The form and number of these registers are determined by the nature of the processor with which they are associated. As only 'intelligent' interrupting devices are attached directly to the bus, differences between the processors can be handled in software. As a result, the only transfers on the bus comprise fully addressed exchanges of data between 'active' masters and 'passive' slaves.
All boards are Double height extended depth Eurocards (233.4mm X 220mm). The Bus is connected by a single DIN41612 C 96 way connector positioned as in the following diagram :
|----------------- 220 mm ----------------|
_____ _________________________________________
| | _|
| | | |
| | | |
| | | |
| | | | Bus
| | | | Connector
| | | |
| | | |
| | | |
| | |_|
| | |
| | |
233.4 mm | Component Side. |
| | |
| | _|
| | | |
| | | |
| | | |
| | | | Unused
| | | | Connector
| | | |
| | | |
| | | |
| | |_|
_|___ |_________________________________________|
The unused connector position may be used freely to provide off-board or inter-board connections. It is intended that this facility should be used to communicate with other buses and systems.
pin no row
a b c
1 GND GND GND
2 GND GND GND
3 +12V +12V +12V
4 -12V -12V -12V
5 AD2L AD3L AD4L
6 AD5L AD6L AD7L
7 AD8L AD9L AD10L
8 AD11L AD12L AD13L
9 AD14L AD15L AD16L
10 AD17L AD18L AD19L
11 AD20L AD21L AD22L
12 AD23L AD24L AD25L
13 AD26L AD27L AD28L
14 AD29L AD30L AD31L
15 CO0L CO1L CO2L
16 CO3L reserved R/WL
17 BRQiL CBRL BGRiL
18 RSTL MCLK PFLL
19 TACL ATML TRQL
20 ERRL DA30L DA31L
21 DA32L DA33L DA34L
22 DA35L DA36L DA37L
23 DA20L DA21L DA22L
24 DA23L DA24L DA25L
25 DA26L DA27L DA10L
26 DA11L DA12L DA13L
27 DA14L DA15L DA16L
28 DA17L DA00L DA01L
29 DA02L DA03L DA04L
30 DA05L DA06L DA07L
31 -5V -5V -5V
32 +5V +5V +5V
Pin 16b is unused and reserved. Under NO
circumstance should this pin be used.
GND Common signal and supply ground. +12V Positive 12 volt supply. -12V Negative 12 Volt supply. +5V Positive 5 Volt supply. -5V Negative 5 Volt supply.
All bus signals are active low TTL level signals. Thus the Asserted (Ass) state is defined to be <=0.8V and the Negated (Neg) state to be >=2.0V.
The signal type specifies whether the signal driver is a TTL totem pole output (ttl), a TTL open collector output (o/c) or a TTL three state output (3-s).
The significance of assertion or negation of Address and Data signals on the bus is not specified as part of the bus protocol. This will be dermined by mutual aggrement of the masters and slaves in any given system. However all simple memory devices MUST present read data in the SAME state as it was written. By convention, address selection logic will assume TTL low on the bus to be binary 1 and TTL high on the bus to be binary 0, with AD2L the least significant bit and AD31L the most significant bit. In general, module address recognition logic will not decode more than the 16 most significant address lines.
Signal Type Driver Validity Description
BRQiL ttl Masters always Bus request from master to arbiter.
Asserted whenever master wishes to
NOT BUSSED use the bus and for the period while
---------- the master has control of the bus.
BGRiL ttl Controller always Bus grant from arbiter to master.
Asserted whenever master has
NOT BUSSED requested and has been granted
---------- use of the bus.
CBRL o/c Masters always Common bus request. Asserted
whenever a master has requested
but not yet been granted use of
the bus. This indicates to the
current bus master that other
potential masters are requesting
the bus.
RSTL ttl Controller Always System reset. Forces all devices
into a known initial state.
MCLK ttl Controller Always Mains derived 100Hz clock. A train
of 1ms wide low going pulses within
1ms of the zero crossing of the AC
mains.
PFLL ttl Controller Always Mains supply failure. DC supplies
should be stable while this signal
is negated and for at least 5ms
after the assertion of this signal.
ATML o/c Masters always Asserted by the current master at
the begining of an indivisible bus
transaction. Is negated only when
TRQL is negated on the last transfer
of the transaction. The transaction
may consist of a single bus transfer.
TRQL o/c Masters always Asserted by the master in control
of the bus when a transfer is
required. This must occur only
after AD2L-AD31L, R/WL, CO0L
and if R/WL is asserted,
DA00L-DA37L are valid and stable.
It is negated only after these
signals are deselected in response
to TACL being asserted.
TACL o/c Slaves Always Asserted by the slave addressed in
a transfer once the transfer is
complete. This must occur only
after ERRL and if R/WL is negated,
DA00L-DA37L are valid and stable.
It is negated only after these
signals are deselected in response
to TRQL being negated.
Controller In the event of no slave asserting
TACL within 2000ns of TRQL being
asserted the controller will assert
both TACL and ERRL to force
unsuccessful termination of the
reqested transfer.
ERRL o/c Slaves TRQL Ass Slave error response. Asserted if
TACL Ass the slave cannot succesfully
complete the transfer.
Controller In the event of no slave asserting
TACL within 2000ns of TRQL being
asserted the controller will assert
both ERRL and TACL to force
unsuccesful termination of the
R/WL 3-s Masters TRQL Ass Read/write line. Determines the
TACL Neg direction of transfer on the bus.
When asserted the direction is from
Master to Slave. When negated is
from Slave to Master.
AD2L - 3-s Masters TRQL Ass Word address signals.
AD31L TACL Neg
CO0L - 3-s Masters TRQL Ass Byte strobes. Determines which
CO3L TACL Neg data bus bytes are active in a
transfer. Used as follows :
If CO0L asserted then DA00L-DA07L are active.
If CO1L asserted then DA10L-DA17L are active.
If CO2L asserted then DA20L-DA27L are active.
If CO3L asserted then DA30L-DA37L are active.
Otherwise the corresponding data lines are held in
the high impedance state and take no part in the
transfer.
DA00L - 3-s Masters TRQL Ass byte 0 data signals.
DA07L (R/WL Ass) TACL Neg
CO0L Ass
Slaves TRQL Ass
(R/WL Neg) TACL Ass
CO0L Ass
ERRL Neg
DA10L - 3-s Masters TRQL Ass byte 1 data signals.
DA17L (R/WL Ass) TACL Neg
CO1L Ass
Slaves TRQL Ass
(R/WL Neg) TACL Ass
CO1L Ass
ERRL Neg
DA20L - 3-s Masters TRQL Ass byte 2 data signals.
DA27L (R/WL Ass) TACL Neg
CO2L Ass
Slaves TRQL Ass
(R/WL Neg) TACL Ass
CO2L Ass
ERRL Neg
DA30L - 3-s Masters TRQL Ass byte 3 data signals.
DA37L (R/WL Ass) TACL Neg
CO3L Ass
Slaves TRQL Ass
(R/WL Neg) TACL Ass
CO3L Ass
ERRL Neg
A master wishing to perform an exchange of data on the bus must obey a three level protocol. The first level deals with acquiring control of the bus. The next level deals with delimiting bus transactions, during which no information accessible from the bus can be altered other than by the current master. This is included to deal with dual-ported memories which can be changed by sources other than the bus. At the third level the master requests a data transfer and acknowledges the response of the slave. The protocol involved in each of these levels is given below.
Step Controller Action Master i Action
1 Wait until BGRiL negated.
Assert BRQiL.
Assert CBRL.
2 Wait until it is
Master i's turn to
control the bus and
previous master j
has negated BRQjL.
Negate BGRjL.
Assert BGRiL.
3 Note Assertion of BGRiL.
Negate CBRL.
4 Perform one or more
bus transactions according to
the protocol below.
5 Negate BRQiL.
Repeat Bus acquisition protocol
as required.
Step Master Action
1 Wait until TACL negated.
2 Assert ATML
3 Perform one or more bus
transfers according to
the protocol below.
4 Negate ATML
5 If CBRL is asserted
then release bus
otherwise retain control of bus
and perform further transactions
as required.
Bus Transfer Protocol
Step Current Master Action Slaves and Controller Action
1 Drive AD2L-AD31L, R/WL and CO0L-CO3L.
If R/WL is asserted
then drive DA00L-DA37L as
specified by CO0L-CO3L.
2 Assert TRQL.
3 Note TRQL asserted. Wait 25ns.
4 Decode AD2L-AD31L to see if selected.
If selected
then proceed
otherwise wait until TRQL negated.
If operation cannot be performed
successfully,
then assert ERRL,
otherwise if R/WL is asserted
then accept data on DA00L-DA37L as
specified by CO0L-CO3L.
otherwise present data on
DA00L-DA37L as specified by CO0L-CO3L.
5 Assert TACL.
If TACL not asserted by any slave
within 2000ns of TRQL asserted
then the Controller asserts TACL and ERRL.
6 Note TACL asserted. Wait 25ns.
7 If ERRL asserted
then note that transfer failed,
otherwise If R/WL negated
then accept data on DA00L-DA37L as
specified by CO0L-CO3L.
Remove AD2-AD31L, R/WL and CO0L-CO3L.
If R/WL was asserted
then remove DA00L-DA37L as specified
by CO0L-CO3L.
8 Negate TRQL.
If end of transaction
then return to complete
transaction protocol.
otherwise continue.
9 Note TRQL negated.
10 Negate ERRL.
If R/WL was negated
then remove DA00L-DA37L.
11 Negate TACL.
12 Wait until TACL negated.
Repeat bus transfer protocol.
THE CONTROL PROCESSOR BOARD
Introduction
The control processor board (CSD134) provides a fully-programmed system control
facility based on a Motorola MC68000 8 Mhz Clock rate
micro-processor. It has a system bus
interface that allows access to the complete address space of the system
(EUCSD) bus. It also has a local bus through which it may access 16k of
on board memory, an RS232 port and a programmable timer.
This bus is also taken off board to allow expansion of the local resources.
Full details of the MC68000 processor are contained in the Manufacturer's
manual [MC69000UM].
Switches and indicators
When viewed from the front, the layout of the control switches
and indicators on the control processor board is as follows: |
|----
| [| MSD Address Select Switches (4 Hex Digits).
|----
| [| These select the high order 16 address bits used to
|---- access the control processors interrupt and
| [| status registers within the system bus real
|---- address space.
| [| LSD
|----
| RS232 port baud rate select switch.
|---- Positions :
| [| 0:19200.0 4: 3600.0 8: 1200.0 C: 134.5
|---- 1: 9600.0 5: 2400.0 9: 600.0 D: 110.0
| 2: 7200.0 6: 2000.0 A: 300.0 E: 75.0
| 3: 4800.0 7: 1800.0 B: 150.0 F: 50.0
|----
| 0 | Run indicator.
| 0 | User mode indicator.
|----
|---- System manual reset switch.
| - | Normally in UP position.
|---- Depress switch and release to reset system.
| This switch is interlocked with the mains key
|---- switch. The system will not reset unless the
| | mains key switch is in the reset enable
| | position adjacent to the off position.
| | (Regardless of how hard you press the system
| | reset switch!)
| |
| |
| |
| | Control processor local bus connector.
| |
| |
| |
| |
| |
|----
|
Control Processor Address Space
The address outputs from the MC68000 on the control processor are used
to control access to the system bus, local bus and the on board memory
and I/O devices.
The 16MByte address space of the processor is split into regions.
Each region is associated with a group of devices each having a particular
set of properties.
The most significant address bit (A23) is used to distinguish between
access to local devices(A23=0) and the EUCSD system bus(A23=1). This
is the most important division and the two cases are dealt with separately.
System Bus Address Mapping Registers
There are 8 registers which supply the 12 high order address bits of the
system bus(AD31L-AD20L). These are indexed by address lines A22-A20 in
both the system bus and the local device regions of the MC68000 address
space.
They can only be written. Writes to these registers take place only in the
local device region.
Software should maintain shadow locations in RAM to record their contents.
Local Devices
When accessing the local region of the address space, A19 determines
whether the local bus or the address mapping registers are accessed.
When accessing the mapping registers, bits A22-A20 select which register
is written. Address bits A18-A1 are ignored. Only data bits 4-15 are
written to these registers. The individual bytes of the address registers
may be updated separately.
When accessing the local bus, A22 is used to determine the protocol
to be used.
Bits A18-A1 are used as the bus address lines.
Bits A21-A20 are ignored.
If A22=0 the MC68000 asynchronous handshake is used.
A one micro-second time-out is provided to ensure all transfers
complete. A M68000 bus error is generated on a local M68000 bus time-out.
If A22=1 a synchronous protocol that is compatible with Motorola
MC6800 family I/O devices is used. As A22 is used to gate the
appropriate control signals the local bus appears as two logically
distinct buses separated in time. They do, however, share both data
and address lines. The UDS and LDS control signals from the MC68000
are used to determine which bytes of the local bus are active.
Thus, they provide the least significant address line.
The on board memory and I/O devices are interfaced through these buses.
The buses are also taken off board to allow expansion of the local
address space. In particular the Ethernet local area communications
network station is connected through this local bus.
Local Bus Pin Assignment
The local bus is taken off board on a DIN41612 C 96/64 way connector.
This is positioned at the front of the board.
pin no row
a c
1 GND GND
2 GND GND
3 unused unused
4 unused unused
5 unused A1
6 A2 A3
7 A4 A5
8 A6 A7
9 A8 A9
10 A10 A11
11 A12 A13
12 A14 A15
13 A16 A17
14 A18 ADACK'
15 CLK E
16 AS' DTACK'
17 UDS' LDS'
18 IRQ7' IRQ6'
19 VMA' R/W'
20 RST' LOCK'
21 IRQ5' IRQ4'
22 unused unused
23 D0 D1
24 D2 D3
25 D4 D5
26 D6 D7
27 D8 D9
28 D10 D11
29 D12 D13
30 D14 D15
31 unused unused
32 unused unused
Local Bus Signal Description
signal input description
output
A1-A18 O MC68000 address lines A1-A18
D0-D15 I/O MC68000 data lines D0-D15
AS' O MC68000 address strobe.
Active only when M68000 bus in operation.
UDS',LDS' O MC68000 Data strobes.
Active only when M68000 bus in operation.
R/W' O MC68000 read/write line.
VMA' O MC68000 valid memory address line.
Active only when M6800 bus in operation.
CLK O MC68000 8 MHz clock.
E O MC68000 800KHz Enable clock.
RST' O MC68000 reset. Low during power-up,
manual and software resets.
DTACK' I MC68000 data transfer acknoledge.
ADACK' I Address acknowledge. A TTL low on
this line suppresses the local bus
time-out. Used to enable slow response
from slaves.
IRQ4',IRQ5', I Interrupt request lines. TTL low signals
IRQ6',IRQ7' on these lines cause an auto-vectored
interrupt at the corresponding priority
level. IRQ7' is a non maskable interrupt.
LOCK' I System bus lock. A TTL low on this
line will cause the control processor
to gain and retain control of the
system bus. For use by diagnostic
hardware.
Local Bus Timing
The timing of the signals is generally the same as an 8MHz MC68000.
However, the bus is buffered and delays of approximately 20ns should
be taken into account when analysing timing requirements.ADACK' has similar timing characteristics to DTACK', and must be
asserted within 800ns of AS' being asserted in order to suppress
the local bus time-out.
LOCK' is synchronised internally and there are few constraints
on its timing.
System Bus
When A23=1 the system EUCSD bus is accessed. Address lines A22-A20
determine which address mapping register is used to provide the high
order 12 bits of the system bus address(AD31L-AD20L). Address lines
A19-A2 form the low order 18 bits of the address.
A1 is used to determine which pair of bytes is accessed on the system
bus. When A1=0 bytes DA0XL and DA1XL are active.
When A1=1 byte DA2XL and DA3XL are active.
Note that it is not possible to access bytes within both of these pairs
simultanteously. UDS and LDS are used to determine which bytes within
the pairs are accessed. UDS controls DA0XL and DA2XL while LDS controls
DA1XL and DA3XL. Thus to the MC68000 byte DA0XL has an address with two
least significant bits on 0, DA1XL is accessed with low order address
of 1 and so on.
Control Processor Address Space Summary
A23 A22 A21 A20 A19 A18-A2 A1 (A0)
0 | 0 |---?---| 0 |----A----| 0 M68000 local space A high byte
0 | 0 |---?---| 0 |----A----| 1 M68000 local space A low byte
0 | 1 |---?---| 0 |----A----| 0 M6800 local space A high byte
0 | 1 |---?---! 0 |----A----| 1 M6800 local space A low byte
0 |-----M-----| 1 |----?----| 0 Map reg M high byte(write only)
0 |-----M-----| 1 |----?----| 1 Map reg M low byte(write only)
1 |-----M-----|-----A----| 0 0 System bus (map reg M)A DAX0L
1 |-----M-----|-----A----| 0 1 System bus (map reg M)A DAX1L
1 |-----M-----|-----A----| 1 0 System bus (map reg M)A DAX2L
1 |-----M-----|-----A----| 1 1 System bus (map reg M)A DAX3L
On board Facilities
The control processor board contains some memory and a number of
I/O devices.
These appear in the local address space of the MC68000 control processor.
Memory
The on board memory consists of 16K bytes organised as 8K of 16 bit words.
It is link selectable as EPROM(2716) or RAM in 4K byte blocks. This
occupies locations 00000-04000 of the local M68000 bus.
Normally the first block is bootstrap EPROM and the remainder is RAM.
I/O Devices
The on board I/O devices consist of a RS232 port, a programmable counter
timer and a mains key switch position sense register. They are located
at addresses 00000-001FF of the local M6800 bus.
The Key Switch Register
Located at address 00031 of the local M6800 bus this is a simple read
only register.
The 4 low-order bits of this byte reflect the position of the
mains switch. The coding is as follows:
Switch Position Code
0 (furthest anti-clockwise) Power off.
1 (Manual reset enable) 0
2 1
3 2
4 4
5 (furthest clockwise) 8
Bits 4-7 of the bus are not driven when this register is read. These bits
may contain unpredictable data. Care should be taken to mask off these
bits when using the contents of the register.
The RS232 Port
This is a Motorola MC6850 ACIA. For programming details see the appropriate
data sheet.
It appears as two low order byte locations within the M6800 bus.
Both have a different meaning depending on whether it is being read or written.
The command (write-only) and status (read-only) register is at 000C1.
The data registers are at location 000C3.
The ACIA interrupt output is connected to interrupt level 5 of the local
bus and hence uses auto-vector 5 (longword at address 000074 of the local
M68000 bus).
Both the transmit and receive data rates are determined by the setting
of a single hex coded switch visible at the front of the board.
For details of their coding refer to the section on switches and indicators.
The Programmable Timer
This is a Motorola MC6840 PTM. For programming details see the appropriate
data sheet.
It appears as 8 high order byte locations within the M6800 bus.
As with the ACIA,
each register has a different meaning depending on whether it is being read
or written.
Their addresses within the M6800 address space are as follows:
Address Read Write
00100 Undefined Control Register 1 or 3
00102 Interrupt Status Control Register 2
00104 Counter 1 high byte Constant Register 1 high byte
00106 Counter 1 low byte Constant Register 1 low byte
00108 Counter 2 high byte Constant Register 2 high byte
0010A Counter 2 low byte Constant Register 2 low byte
0010C Counter 3 high byte Constant Register 3 high byte
0010E Counter 3 low byte Constant Register 3 low byte
The PTM interrupt is connected to interrupt level 6 of the local bus and
hence uses auto-vector 6 (longword at address 000078 of the local M68000 bus).
The internal clock oscillates at 800KHz.
Counter input 1 is derived from the system bus 100Hz mains clock.
Counter input 2 is derived from counter 3's output.
Counter input 3 is derived from counter 1's output.
This allows cascading of the counter channels.
The gate inputs to all channels are permanently enabled.
Control Processor Addresss Space Index
This is a complete guide to the devices within the M68000 address space.
Addresses Device
000000---000FFF Local bootstrap EPROM
001000---003FFF Local RAM (switchable to EPROM)
004000---07FFFB Unused
(available for local M68000 bus expansion)
07FFFC---07FFFF Ethernet Station Interface (if fitted)
080000---0FFFFF Address map register 0
100000---17FFFF Same as 000000-7FFFFF
180000---1FFFFF Address map register 1
200000---27FFFF Same as 000000-7FFFFF
280000---2FFFFF Address map register 2
300000---37FFFF Same as 000000-7FFFFF
380000---3FFFFF Address map register 3
400000---400030 Unused
400030(2)40003E Unused
400031(2)40003F Mains switch register (low byte)
400040---4000BF Unsafe to access
4000C0(2)4000CE Unused
4000C1(2)4000CF ACIA (low bytes)
4000D0---4000FF Unsafe to access
400100(2)40010E PTM (high bytes)
400101(2)40010F Unused
400110---4001FF Unsafe to access
400200---47FFFF Unused
(available for local M6800 bus expainsion)
480000---4FFFFF Address map register 4
500000---57FFFF Same as 400000-47FFFF
580000---5FFFFF address map register 5
600000---67FFFF Same as 400000-47FFFF
680000---6FFFFF Address map register 6
700000---77FFFF Same as 400000-47FFFF
780000---7FFFFF Address map register 7
800000---8FFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 0
900000---9FFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 1
A00000---AFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 2
B00000---BFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 3
C00000---CFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 4
D00000---DFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 5
E00000---EFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 6
F00000---FFFFFF System Bus RRR00000-RRRFFFFF, RRR = Map Reg 7
System Bus Control and Status Registers
The control processor provides a number of registers that can be accessed
as slave devices from the system EUCSD bus.
These enable the processor to be interrupted by any master on the system
bus.
They also provide information about the current state of the control
processor.The locations they occupy within the system bus address space are determined
by 4 hex coded switches that are visible from the front of the board.
These specify the high order address bits (AD16L-AD31L) used to access the
registers.
The registers are 16 bits wide and connected to bytes DA2XL and DA3XL of
the system bus.
Bytes DA0XL and DA1XL are unconnected and access to these
bytes alone does not cause the slave logic to acknowledge an access.
The two bytes are individually accessible. The DA2XL byte is common to
each of the registers and is read only. The 8 distinct DA3XL bytes are
selected by address lines AD15L-AD13L.
Note that this allows fairly coarse segmentation to provide controlled
access to the individual registers.
At present the status bits are active high, but may be made active
low by a trivial hardware modification.
Control and Status Register Address Map
To summarise the registers appear in the system address space as follows: DA2XL byte
SSSS0002(4)SSSSFFFE Combined interrupt state register
(read only)
DA3XL bytes
SSSS0003(4)SSSS1FFF Processor State register
(read only)
SSSS2003(4)SSSS3FFF Level 1 interrupt register
SSSS4003(4)SSSS5FFF Level 2 interrupt register
SSSS6003(4)SSSS7FFF Level 3 interrupt register
SSSS8003(4)SSSS9FFF Level 4 interrupt register
SSSSA003(4)SSSSBFFF Level 5 interrupt register
SSSSC003(4)SSSSDFFF Level 6 interrupt register
SSSSE003(4)SSSSFFFF Level 7 interrupt Register
(SSSS is the setting if the address select switches)
Note that the binary encoding of bits AD15L-AD13L give the level of the
interrupt register.
Register Bit Encodings>
The meaning of each of the register bits when read are as follows:Combined Interrupt State Register
bit
7 Priority level 7 interrupt pending
6 Priority level 6 interrupt pending
5 Priority level 5 interrupt pending
4 Priority level 4 interrupt pending
3 Priority level 3 interrupt pending
2 Priority level 2 interrupt pending
1 Priority level 1 interrupt pending
0 Always 0
Processor State Register
bit
7 Function code FC2 for last cycle
6 Function code FC1 for last cycle
5 Function code FC0 for last cycle
4 Always 0
3 Processor halted after fatal bus error.
2 Always 0
1 Always 1
0 Always 1
Interrupt Registers
bit
7 Interrupt pending at corresponding level
0-6 Always 0
Requesting Interrupts
When any data is written to an interrupt register the data is discarded
and an interrupt at the corresponding M68000 priority level is requested.
At the same time Bit 7 of the interrupt register is set, together with
the corresponding bit in the combined interrupt state register.
Once the processor has acknowledged an interrupt at that level the interrupt
request is removed. At the same time bit 7 of the interrupt register
is cleared, together with the corresponding bit in the combined interrupt
state register. During the interrupt acknowledge the processor is
forced into the auto-vector mode of operation.Note that care must be taken to ensure that system bus interrupts are not
lost.
In general, this will require that details of the interrupt request are
stored in shared system memory. These details can then be examined
by interrupt handling software on the control processor.
This is particularly true for interrupt levels 4-7 which may also be
generated by I/O devices attached to the control processor's local
bus.
The situation requires even more care when there is more than one source
of interrupts from the system bus.
Steps must be taken to ensure mutual exclusion on the interrupt information
held in shared memory.
This might consist of a semaphore that is locked prior to storing the
interrupt details and before issuing the interrupt request.
The semaphore is subsequently released by the control processor on
completion of the interrupt service routine.
LEVEL 1 GRAPHICS SYSTEM
Introduction
The level 1 graphics board (CSD154) is a simple, write only, colour
raster graphics controller and frame store.
It provides a display of up to 1024*1024 pixels of four bits each.
It can be configured to drive a large variety of monitors, both
interlaced and non-interlaced and at different data, line and frame rates.
It generates 3 TTL video outputs allowing 8 different colours
to be displayed.A further board (CSD155) can be added to give an additional four bits per
pixel and a colour map suitable for driving analogue input colour
monitors.
Together they can display up to 256 different colours at one time.
These colours can be selected from a total of 32768 shades.
Switches and indicators
When viewed from the front of the system the layout of the control switches
and indicators on the control processor board is as follows: |
|----
| [| MSD Address Select Switches (4 Hex Digits).
|----
| [| Selects the high order 14 address bits used to
|---- access the frame store and its associated control
| [| registers within the system bus real address
|---- space. The board is disabled if the LSD switch
| [| LSD is not a multiple of 4.
|----
|
|
|
|
|
|
|----
| 0 | Access indicator. On if a framestore update
|---- is in progress
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Coordinate System
The frame store is an array of 1024*1024 pixels.
Pixel (0,0) is at the bottom left of the array and pixel (1023,1023) is
at the top right of the array.
The attached monitor will display a rectangular sub-region of this array.
The size of the displayed area is determined by the Monitor specifications
and is configured by PROM's on the graphics board.
The display area for the Mitsubishi C3419E monitors is 512(V)*688(H) pixels.
The origin of the displayed region is determined by the contents of
a write only register, the START OF DISPLAY REGISTER.
The Start of Display register is a 16 bit register.
The 10 most significant bits specify the Y index of the TOPMOST
displayed pixel.
The 6 least significant bits specify the X index of the LEFTMOST displayed
pixel, DIVIDED by 16. The X index of the first displayed pixel must be
a multiple of 16. The two bytes of the register may be written separately.
If the origin is such that an overflow occurs then the displayed region
wraps around from high to low index pixels.
(0,1023) (1023,1023)
------------------------------------------------------------------
| |
| Frame Store |
| |
| |
| ------------------------------------------<- Y Start of |
| | ^ | Display |
| | | | |
| | Displayed Area | | |
| | (Mitsubishi C3419E) | | |
| | | | |
| | | | |
| | | | |
| |<--------------------- 688 ----+------->| |
| | | | |
| | | | |
| | 512 | |
| | | | |
| | | | |
| | v | |
| ------------------------------------------ |
| ^ |
| | |
| X Start of Display |
| |
| |
------------------------------------------------------------------
(0,0) (1023,0)
System Bus Interface
The level 1 graphics board provides a number of write only locations that
can be accessed as slave devices from the system EUCSD bus.The locations they occupy within the system bus address space are determined
by 4 hex coded switches that are visible from the front of the board.
These specify the 14 high order address bits (AD31L-AD18L) used to access
the frame store and control registers.
The next highest address line AD17L determines whether the frame store
(AD17L is 0) or the control registers (AD17L is 1) are are accessed.
If the control registers are accessed AD16L is used to determine
whether the general control registers (AD16L is 0) or the colour map
(AD16L is 1) is accessed. Note that accessing the colour map is effective
only when the CSD155 board is availble.
Frame Store Addressing
The Frame Store appears as a linear sequence of 128K bytes in the system bus
address space. This may be considered as a 1024*1024 array of bits, organised
as groups of 8 bits in a 1024*128 array of bytes. Increasing byte addresses
correspond to increasing X coordinates first and increasing Y coordinates
second. Within a byte the most significant bit corresponds to the pixel
with lowest X coordinate. Thus, if we consider a particular sequence of
pixels as a binary number they appear on the display in the 'natural'
left to right order of decreasing significance.Up to 4 aligned bytes may be written in a single frame store access.
The user should note that internally 16 bit operations are performed.
This implies that the store cycle time is doubled for 32 bit accesses.
Pixels - CSD154 board only
Each pixel is associated with 4 bits of data. Each bit is stored
in a separate 1024*1024 bit storage array or PLANE.
The contents of planes 0, 1 and 2 determine whether the red, green and
blue guns of the monitor are on or off. Plane 3 , the 'cursor' plane
allows the sense of data from planes 0, 1, and 2 to be inverted.Thus, for any given pixel:
if plane 3 = 0
red gun is on if plane 0 = 1
green gun is on if plane 1 = 1
blue gun is on if plane 2 = 1
if plane 3 = 1
red gun is off if plane 0 = 1
green gun is off if plane 1 = 1
blue gun is off if plane 2 = 1
Note that a pixel may be any one of the following colours :
black all off 0000 or 1111
red red only 0001 or 1110
green green only 0010 or 1101
yellow red+green 0011 or 1100
blue blue only 0100 or 1011
magenta red+blue 0101 or 1010
cyan green+blue 0110 or 1001
white red+green+blue 0111 or 1000
Notice that the colour displayed when plane 3 is 0 is the complement
of that displayed when plane 3 is 1, provided that planes 0, 1 and 2
remain the same. Thus plane 3 may be used as a cursor plane on which
any symbol written will probably be noticable, regardless of the contents
of the other planes.
Pixels - CSD154 and CSD155 two board system
With the CSD155 option installed each pixel is associated with 8 bits
of data. Each bit is again stored in a separate 1024*1024 colour plane.
The method of updating the frame store is unchanged.
However, the manner in which each pixel is displayed is altered.
When a pixel is displayed the 8 bits of data are used as an index to
a writable COLOUR MAP. For each of the 256 possible values a pixel
may take a 16 bit value is generated by the colour map.
These 16 bit values are written into the colour map before the
desired picture can be displayed.
The 16 bits are used as three 5 bit fields and a single 1 bit field.
The 5 bit fields are used as an unsigned integer to determine the
analogue intensity of the red, green and blue guns of the CRT display.
The 1 bit field is used as a control bit that determines whether the
pixel flashes at one 16th of the display field rate; about 3 times a second.
The colour map may be updated by normal writes to the graphics system.
The low order address lines (AD9L-AD2L) are used to index the colour map
and the data written provides the 16 bit values generated by the colour map.
The colour map appears to the bus as 32 bit entries, the 16 high order
bits being ignored. The individual bytes of the colour map entries may
be written separately.
The operation of writing a single new entry
to the colour map will cause the display to be blanked for 3 pixels.
This is to minimise the effect of generating incorrect data when a change
is made.
It may be possible to use the vertical sync output from the controller
to synchronise colour map changes to the display vertical blanking period.
This would allow colour map updates to go completely unnoticed on the display.
Updating the Frame Store
Only write accesses to the frame store are allowed.
When the frame store is written an UPDATE OPERATION takes place.
The data when written does not go directly to the planes, but is used
as a mask. Each bit in the mask corresponds to a pixel as discussed in
the section on frame store addressing. If a data bit in the mask is 0
then no change is made to the corresponding pixel. If a bit is 1 then the
pixel is updated. The change made to the bits that make up the pixel is
determined by the contents of two control registers.The PLANE ENABLE REGISTER is a single byte and contains a bit corresponding
to each of the colour planes.
If the bit for a plane is zero, then that plane is not changed by frame store
update operations. If the bit is 1 then the plane may be modified by the
update operation.
If the CSD154 board is used alone then only the 4 least significant
bits are used.
The COLOUR REGISTER is a single byte and contains a bit corresponding
to each of the colour planes.
When a frame store update operation takes place the contents of the colour
register is written to the corresponding plane of each pixel that has 1
in the data mask.
This is of course conditional on the enable bit for that plane being 1.
If the CSD154 board is used alone then only the 4 least significant
bits are used.
This arrangement allows all planes to be updated simultaneously. However,
it does not have any overall speed up when drawing finely detailed pictures.
For example, to clear the frame store the following must be performed.
First all 1's are written to the plane enable register.
Then all 0's are written to the colour register.
Finally all 1's are written to all the frame store locations.
To draw an arbitrarily coloured picture we must proceed as follows.
For each colour the colour register must be written
before writing 1's to each pixel that will be that colour in the final
picture. This must be repeated until the detail for all colours is drawn.
For 'layered' applications such as VLSI plots it is sufficient to proceed
as follows.
First write all 1's to the colour register.
Then for each layer write a single 1 to the plane enable register, before
updating the frame store with the detail for that layer. Agian this must
be repeated until the detail for all of the layers is drawn.
Register Address Map
To summarise, the registers appear in the system address space as follows:
SSST00000 - SSST0FFFF Frame store.
SSST20000(4)SSST2FFFC Plane enable register.
SSST20001(4)SSST2FFFD Colour register.
SSST20002(4)SSST2FFFE Start of Display register.
SSST30002(4)SSST3FFFE Colour map registers.
SSST is the setting of the board address select switches
The system is deselected unless T is a multiple of 4.
Register Bit Encodings
Collectively the general control registers may be considered as
a single 32 bit word. Each of the bytes may be accessed separately.
The meaning of each of the bits in order of decreasing
significance is as follows:
Byte 0 (MSByte) - Plane Enable register
bit 7 (MSB) - Plane 7 enable bit -
bit 6 - Plane 6 enable bit | Significant only
bit 5 - Plane 5 enable bit | with CSD155 extension.
bit 4 - Plane 4 enable bit -
bit 3 - Plane 3 enable bit
bit 2 - Plane 2 enable bit
bit 1 - Plane 1 enable bit
bit 0 (LSB) - Plane 0 enable bit
If a bit is 0, updates to corresponding plane are disabled
If a bit is 1, updates to corresponding plane are enabled
Byte 1 - Colour Register
bit 7 (MSB) - Plane 7 data bit -
bit 6 - Plane 6 data bit | Significant only
bit 5 - Plane 5 data bit | with CSD155 extension.
bit 4 - Plane 4 data bit -
bit 3 - Plane 3 data bit
bit 2 - Plane 2 data bit
bit 1 - Plane 1 data bit
bit 0 (LSB) - Plane 0 data bit
The content of each bit is written to the corresponding
plane during a suitably enabled and masked update operation.
Bytes 2 and 3 (LSByte) - Start of Display Register.
byte 2 bits 7-0
byte 3 bits 6&7 - Y Finishing Index
Y index of the last pixel displayed.
byte 2 bit 7 is the most significant bit.
byte 3 bit 6 is the least significant bit.
byte 3 bits 5-0 - X Starting Index
X Index/16 of first pixel displayed.
The X index of the first pixel displayed
is always a multiple of 16.
bit 5 is the most significant bit.
The colour map entries are 16 bits wide, but are 32 bit aligned.
Only the Least significant 16 bits are used. Either of the two bytes
may be written separately.
They have the following form :
byte 2 bit 7 - Flash bit
If 0 pixel is steady
If 1 pixel alternates between colour specified
by rest of entry and black every 16 fields
(about 3 times a second)
byte 2 bits 6-2 - Blue intensity
byte 2 bit 6 is the most significant bit.
byte 2 bits 1 & 0,
byte 3 bits 7-5 - Green intensity
byte 2 bit 1 is the most significant bit.
byte 3 bits 4-0 - red intensity
byte 3 bit 4 is the most significant bit.
Software Support Routines
A number of standard routines are available for using the Level 1 Graphics
System.
The folloing routines are written in assembler and their close interaction
with the hardware exploits the full potential of the graphics system.
their peformance is such that they should be used whenever possible.
In assembler, parameters are passed in registers d0, d1, ... d5 in the
order specified by the prototypes given below.plot(x, y)
Sets the pixel at coordinate (x, y) to the current
contents of the colour register. The planes affected
are those specified by the plane enable register.
fill(x0, y0, x1, y1)
Fills a rectangular area bounded by the coordinates
(x0, y0) and (x1, y1). The colour used and planes
affected are taken to be the current contents of
the colour and plane enable registers.
If x0>x1 or y0>y1 the the area filled is wrapped
around the frame store.
line(x0, y0, x1, y1)
Draws a line between the coordinates (x0, y0) and
(x1, y1). The colour used and planes affected are
taken to be the current contents of the colour and
plane enable registers.
triangle(x0, y0, x1, y1, x2, y2)
Draws a filled triangle with vertices (x0, y0),
(x1, y1) and (x2, y2). The colour used and planes
affected are taken to be the current contents of
the colour and plane enable registers.
trapeze(x0l, x0r, y0, x1l, x1r, y1)
Draws a filled trapezium with parallel sides
parallel to the X axis. The coordinates of the
vertices are (x0l, y0), (x0r, y0), (x1l, y1) and
(x1r, y1). The colour used and plane affected are
taken to be the current contents of the colour
and plane enable registers.
Trapeze is primarily intended for polygon filling.
In other languages further routines may be provided. This will be in
addition to suitably interfaced calls to the basic routines given above.
M68000 Virtual Memory Daughter Board
Introduction
The M68000 virtual memory daughter board (CSD161) is a small board
which can be used in place of any M68000 or M68010 64 pin DIL chip.
It provides the address translation hardware necessary to support
virtual memory.
When viewed from the rest of the system, the board appears as a standard
M68000 chip with slighty modified timing between access cycles.The translation hardware consists of one or two M68451 memory management
units (MMU's).
The MMU's may be located at any address within the physical address space
of the system.
The address of each MMU is independently determined by a single PAL chip.
On the APM boot processor board this is currently HEX 100000 and HEX 100040.
Access to the MMU registers is hidden from the rest of the system.
Similarly, translation faults and vectored interrupts from the MMU are
not apparent off board.
view:apm.mss printed on 16/02/89 at 23.00