Selected Qbus Notes and Examples
-------- ---- ----- --- --------
Ross Harvey
[email protected]
Rev 2, Sun Feb 8 17:20:52 PST 1998
Example design and pinout provided courtesy of
Avalon Computer Systems, Inc. Santa Barbara, California.
This information is for the proposed NetBSD/VAX IDE/SCSI Q-bus hardware
project. This is reference information on q-bus device design.
In this directory are:
1. This file
2. Two pages from Avalon's drawings for the A11 (AlphaCard) project.
(This was an early 21064 Alpha on a Q-bus board sold to VAX/VMS sites.)
-rw-r--r-- 1 ross ross 13465 Feb 8 01:46 QBUS.MADE.EASY
-rw-r--r-- 1 ross ross 72741 Feb 8 01:30 fab.a11.ledger.pcl
-rw-r--r-- 1 ross ross 72740 Feb 8 01:30 fab.a11.legal.pcl
-rw-r--r-- 1 ross ross 72735 Feb 8 01:30 fab.a11.letter.pcl
-rw-r--r-- 1 ross ross 35082 Feb 8 15:04 fab.a11.ps.gz
-rw-r--r-- 1 ross ross 189431 Feb 8 01:30 qbus.a11.ledger.pcl
-rw-r--r-- 1 ross ross 189430 Feb 8 01:30 qbus.a11.legal.pcl
-rw-r--r-- 1 ross ross 189425 Feb 8 01:30 qbus.a11.letter.pcl
-rw-r--r-- 1 ross ross 88695 Feb 8 02:25 qbus.a11.ps.gz
fab.a11 This is the fab drawing for the Avalon a11 qbus board.
It gives the qbus mechanical dimensions and instructions
to the fab shop.
qbus.a11 This is the schematic drawing for the q-bus section of
the AlphaCard.
The PCL files are really HPGL files with the PCL command to switch into
HPGL mode prepended at the beginning. These files use the compressed binary
vectors, but they should print just fine on almost any HP laserjet.
The PS files can be configured for different page sizes by changing
some true/false constants in the first few lines.
Basic Qbus Operation
----- ---- ---------
The Q bus is a multiplexed address and data bus with an unusual (1.5) volt
signal threshold. To build a device that generates interrupts and responds
as a slave to I/O page transfers is fairly easy.
Signals:
Almost all signals are active low, but because the transceivers
invert, signals will have a generally positive polarity within
the interface circuitry. However, to be consistent with the DEC
documentation I will describe the signals as they are present
on the Q-bus. ("Asserted" == low)
BDAL 21:0 address and data. Called B[] sometimes
below.
BBS7 L this is a nice one, if the device is
in the I/O page, the master asserts
this signal, so that slaves don't have
to actually compare the 9 high I/O page
address bits. The Unibus didn't have
this one, although it didn't have as
many addresses to decode, either.
BWTBT L Write/byte control, except that during
the address phase, this signal is asserted
to mean that a write will follow. The main
distinction between read and write is the
assertion of the B DOUT L or B DIN L
strobe, so this signal can be ignored
during the address phase.
BDIN L Read Strobe
BDOUT L Write Strobe
BRPLY L Slave Handshake signal.
BIRQx L x = 4,5,6,7: interrupt requests
BIAKI L Interrupt acknowledge in
BIAKO L Interrupt acknowledge out (daisy-chained)
BDMGI Daisy-chained DMA grant signals.
BDMGO
BDMR DMA request signal.
BINIT Peripheral device reset signal
BIRQ4,5,6,7 Interrupt request signals
BPOK Power OK signal
BREF Not really a refresh signal: this is used
in block mode DMA. "Beyond the scope of this
document."
BSACK Select acknowledge. Used by masters to
acknowledge the DMA grant.
BWTBT In address phase, indicates an upcoming write,
in the data phase, means write just one of the
bytes.
DMGF, IAKF These are just Avalon's name for the DMGI/O
and IAKI/O pairs on the unused P2 connector.
They are forwarded so the card can be used
in, e.g., a MVII that has Qbus on both halves
of a quad board. PIO boards need to forward
DMGI/O on both halves, of course.
I/O page transfer.
The master outputs the address, BBS7 L, and possibly BWTBT L. After
a setup time, it asserts BSYNC L. The device will see the BDAL
and the control signals set up at least 75 nS prior to BSYNC L.
Hold time is 25 nS.
In general, you have a CSR switch register that pulls down 8 or 10
resistively pulled-up signals that feed a comparator. The other side
of the comparator (for the 8 bit case) gets BDAL 12:5. This consumes
32 bytes of I/O page space, obviously. You can ignore BDAL 21:13.
A 10 bit comparator would give you an 8 byte I/O range.
On the BSYNC edge you clock the result of the comparator, and
you also must save at least some of BDAL 4:0 if you implement
more than one register.
The CPU will next assert B DIN L. When the slave has the read data
(at least almost) ready, the selected slave responds with
B RPLY L. Within 125 nS of the assert of B RPLY L, the slave must
output the data and hold it until the CPU negates DIN. The slave
then negates RPLY and, 0-100 nS later, stops driving BDAL.
For writes, the CPU asserts B DOUT L. The slave will have write
data set up at least 25 nS prior to receiving the strobe. The data
will be held until the slave asserts B RPLY, then the CPU negates
DOUT, and the slave then negates RPLY.
Interrupts.
To request an interrupt, at a particular level, the card asserts
interrupt requests as follows:
Level Asserted Signals
4 BIRQ4
5 BIRQ4 BIRQ5
6 BIRQ4 BIRQ6
7 BIRQ4 BIRQ6 BIRQ7
The IDE controller should probably just use BIRQ4.
First, the slave asserts B IRQx. The CPU responds eventually
with BDIN L. After (at least) 125 nS, the device will see B IAKI.
At this point, the device has to decide to forward the IAK to
device further down the bus, or to eat the IAK and generate its
own interrupt. Obviously, this can happen whether or not we actually
asserted an IRQ. The device is supposed to monitor the higher
levels, and _even if asserting IRQ_, it should still forward the
IAK if a higher level device is requesting the bus. The decision
should be made with the leading edge of BDIN, to allow any
metastable states to settle out prior to the arrival of IAKI.
Level Levels Checked
4 BIRQ5 BIRQ6
5 BIRQ6
6 BIRQ7
7
If forwarding the IAKI, the device simply asserts IAKO until
IAKI is deasserted.
If taking the IAKI, the device asserts B RPLY and drives
the vector (0-125 nS after RPLY, better to do 0!) on BDAL.
You can program the vector via a HW switch register, or, you
can have the device driver set it up via a CSR write.
Note that a quad board should wire IAKI to IAKO on the P2 or
B tab, in case it is used in a system where the Q bus appears on
both A/B (P1/P2) and C/D (P3/P4). You can only count on P3/P4,
though. A non-dma board should wire the dma grant through on
both P2 and P4. The DMA grant is daisy chained just like IAKI/IAKO.
SLOT TO SLOT SPACINGS AND COMPONENT CLEARANCE :
Older Q bus, Unibus MV II and MVIII that were upgraded
from MVII systems with no box change.
0.50 board to board pitch
0.373 non-conductive component clearance
0.323 conductive component clearance
0.873 two-slot non-conductive clearance
0.823 two-slot conductive clearance
BA213 Most MVIII (MV IV?)
0.95 board to board pitch
0.823 non-conductive component clearance
0.773 conductive component clearance
SOME Q BUS TIMING SPECS
AT SLAVE:
control (BS7 WTBT) setup to SYNC 75
hold from SYNC 25
assert reply (s) to negate din (m) 200 min
assert reply (s) to assert data (s) 0 min
125 max
negate reply (s) to release data (s) 0 min
100 max
sync low between cycles 150 min
negate reply (s) to sync (m) [next cycle] 300 min
WTBT, Data setup to DOUT 25 min
RPLY to DOUT (negate) 150 min
FROM SLAVE:
DIN to DATA 125 max
FROM MASTER: [ note, these aren't directly relevent to a slave
board ]
!SYNC (last cycle) to SYNC 200 min
!RPLY (last cycle) to SYNC 300 min
SYNC to DIN 100 min
Control,ADDR setup to SYNC 150 min
Control,ADDR hold after SYNC 100 min
RPLY to DATA clock 200 min
RPLY to !DIN 200 min
2000 max
Pinout. Dec uses an alphabetic assignment, but we gave the pins numbers
and, sorry, changed some of the names. So, for example, the DEC AU2 pin
assignment for BDAL0 is P4-34, B[0] below.
| COMPONENT SIDE |
| |
| ___ ___ ___ |
\_______/ \_______/ \_______/ \_______/
DEC TABS B A B A
ACS TABS P1 P2 P3 P4
DEC fingers V1 A1 V1 A1 V1 A1 V1 A1
ACS fingers 35 1 35 1 35 1 35 1
(Dec calls the back side fingers A2 - V2, for ACS they are the even numbers)
PIN ASSIGNMENT BY SIGNAL
P4 34 B[0] P1 27 N/C
P3 26 B[10] P1 28 N/C
P3 28 B[11] P1 29 N/C
P3 30 B[12] P1 3 N/C
P3 32 B[13] P1 30 N/C
P3 34 B[14] P1 32 N/C
P3 36 B[15] P1 33 N/C
P4 5 B[16] P1 34 N/C
P4 7 B[17] P1 36 N/C
P3 5 B[18] P1 4 N/C
P3 7 B[19] P1 5 N/C
P4 36 B[1] P1 7 N/C
P3 9 B[20] P1 8 N/C
P3 11 B[21] P1 9 N/C
P3 10 B[2] P2 1 N/C
P3 12 B[3] P2 10 N/C
P3 14 B[4] P2 11 N/C
P3 16 B[5] P2 12 N/C
P3 18 B[6] P2 13 N/C
P3 20 B[7] P2 14 N/C
P3 22 B[8] P2 16 N/C
P3 24 B[9] P2 17 N/C
P4 26 B[BS7] P2 18 N/C
P4 14 B[DIN] P2 19 N/C
P4 28 B[DMGI] P2 20 N/C
P4 30 B[DMGO] P2 23 N/C
P4 23 B[DMR] P2 25 N/C
P4 10 B[DOUT] P2 26 N/C
P4 22 B[IAKI] P2 27 N/C
P4 24 B[IAKO] P2 29 N/C
P4 32 B[INIT] P2 3 N/C
P4 20 B[IRQ4] P2 32 N/C
P4 1 B[IRQ5] P2 33 N/C
P4 3 B[IRQ6] P2 34 N/C
P3 1 B[POK] P2 35 N/C
P4 27 B[REF] P2 36 N/C
P4 12 B[RPLY] P2 4 N/C
P3 23 B[SACK] P2 5 N/C
P4 16 B[SYNC] P2 7 N/C
P4 18 B[WTBT] P2 8 N/C
P1 15 GND P2 9 N/C
P1 21 GND P3 13 N/C
P1 31 GND P3 17 N/C
P1 6 GND P3 19 N/C
P2 15 GND P3 25 N/C
P2 21 GND P3 27 N/C
P2 31 GND P3 29 N/C
P2 6 GND P3 3 N/C
P3 15 GND P3 33 N/C
P3 21 GND P3 4 N/C
P3 31 GND P3 8 N/C
P3 6 GND P4 11 N/C
P4 15 GND P4 13 N/C
P4 21 GND P4 17 N/C
P4 31 GND P4 19 N/C
P4 6 GND P4 25 N/C
P1 1 N/C P4 29 N/C
P1 10 N/C P4 33 N/C
P1 11 N/C P4 35 N/C
P1 12 N/C P4 4 N/C
P1 13 N/C P4 8 N/C
P1 14 N/C P4 9 N/C
P1 16 N/C P1 2 VCC
P1 17 N/C P1 35 VCC
P1 18 N/C P2 2 VCC
P1 19 N/C P3 2 VCC
P1 20 N/C P3 35 VCC
P1 22 N/C P4 2 VCC
P1 23 N/C P2 28 bus.DMGF
P1 24 N/C P2 30 bus.DMGF
P1 25 N/C P2 22 bus.IAKF
P1 26 N/C P2 24 bus.IAKF
PIN ASSIGNMENT BY PIN
P1 1 N/C P3 1 B[POK]
P1 2 VCC P3 2 VCC
P1 3 N/C P3 3 N/C
P1 4 N/C P3 4 N/C
P1 5 N/C P3 5 B[18]
P1 6 GND P3 6 GND
P1 7 N/C P3 7 B[19]
P1 8 N/C P3 8 N/C
P1 9 N/C P3 9 B[20]
P1 10 N/C P3 10 B[2]
P1 11 N/C P3 11 B[21]
P1 12 N/C P3 12 B[3]
P1 13 N/C P3 13 N/C
P1 14 N/C P3 14 B[4]
P1 15 GND P3 15 GND
P1 16 N/C P3 16 B[5]
P1 17 N/C P3 17 N/C
P1 18 N/C P3 18 B[6]
P1 19 N/C P3 19 N/C
P1 20 N/C P3 20 B[7]
P1 21 GND P3 21 GND
P1 22 N/C P3 22 B[8]
P1 23 N/C P3 23 B[SACK]
P1 24 N/C P3 24 B[9]
P1 25 N/C P3 25 N/C
P1 26 N/C P3 26 B[10]
P1 27 N/C P3 27 N/C
P1 28 N/C P3 28 B[11]
P1 29 N/C P3 29 N/C
P1 30 N/C P3 30 B[12]
P1 31 GND P3 31 GND
P1 32 N/C P3 32 B[13]
P1 33 N/C P3 33 N/C
P1 34 N/C P3 34 B[14]
P1 35 VCC P3 35 VCC
P1 36 N/C P3 36 B[15]
P2 1 N/C P4 1 B[IRQ5]
P2 2 VCC P4 2 VCC
P2 3 N/C P4 3 B[IRQ6]
P2 4 N/C P4 4 N/C
P2 5 N/C P4 5 B[16]
P2 6 GND P4 6 GND
P2 7 N/C P4 7 B[17]
P2 8 N/C P4 8 N/C
P2 9 N/C P4 9 N/C
P2 10 N/C P4 10 B[DOUT]
P2 11 N/C P4 11 N/C
P2 12 N/C P4 12 B[RPLY]
P2 13 N/C P4 13 N/C
P2 14 N/C P4 14 B[DIN]
P2 15 GND P4 15 GND
P2 16 N/C P4 16 B[SYNC]
P2 17 N/C P4 17 N/C
P2 18 N/C P4 18 B[WTBT]
P2 19 N/C P4 19 N/C
P2 20 N/C P4 20 B[IRQ4]
P2 21 GND P4 21 GND
P2 22 bus.IAKF P4 22 B[IAKI]
P2 23 N/C P4 23 B[DMR]
P2 24 bus.IAKF P4 24 B[IAKO]
P2 25 N/C P4 25 N/C
P2 26 N/C P4 26 B[BS7]
P2 27 N/C P4 27 B[REF]
P2 28 bus.DMGF P4 28 B[DMGI]
P2 29 N/C P4 29 N/C
P2 30 bus.DMGF P4 30 B[DMGO]
P2 31 GND P4 31 GND
P2 32 N/C P4 32 B[INIT]
P2 33 N/C P4 33 N/C
P2 34 N/C P4 34 B[0]
P2 35 N/C P4 35 N/C
P2 36 N/C P4 36 B[1]