IOBridge Function The IOBridge (IOB) is mostly a bridge between the DynaBus and the IOBus, a microprocessor-oriented bus used to support slow to medium speed (4-6 MBytes/sec) I/O and miscellaneous hardware in Dragon-based machines. It also includes a few special-purpose peripherals needed for debugging and for Cedar support. A Dragon machine may have multiple IOBridges in order to increase the I/O bandwidth and/or support esoteric hardware. IOBus structure The current implementation of the IOBridge uses the PC/AT bus almost directly. It extends the PC/AT address up to 34 bits (32 bits of DynaBus word address) to provide full DynaBus memory addressability. Both the I/O and memory address spaces are suported. The choice of the IOBus used is relegated to a very isolated part of the chip, and may be changed quite easily, allowing to interface almost any bus up to 34 address bits and 32 data bits. Bridge functionnality From the DynaBus side, the IOBridge decodes part of the DynaBus I/O address space to generate requests on the IOBus memory and I/O address space. Those requests are queued into a FIFO and then sent serially sent on the IOBus. Data width of 8 and 16 bits are provided (32 bit transactions could be provided if the IOBus supported them). A portion of the address space is devoted to access some IOBridge internal registers. From the IOBus side, I/O requests are converted to references to internal IOP registers. Memory requests are passed along to an external cache cache (the Dragon small cache) connected to the DynaBus. Transactions may be for 8 or 16 bits. The IOBus may also originate DynaBus I/O references (although slowly). When used as a memory on the IOBus, the IOBridge behaves as a one-wait state memory. Internal peripherals The IOBridge contains a 1MHz free-running 32-bit clock (permanent clock), a 10Hz loadable counter (time of day clock) and a 1KHz interrupt timer. The IOBridge also contains interrupt support hardware that converts IOBus interrupts to DynaBus interrupts and allows to mask individual interrupts and direct them either to a specific Dragon or to all processors. DBus support Special I/O addresses on the IOBus are decoded by the IOBridge to generate DBus signals for the remainder of the machine, providing address setup, data transfer and DBus control. The IOBridge also contains a DynaBus test feature. IOBridge Block diagram IOP Pins ~[Artwork node; type 'ArtworkInterpress on' to command tool] [Artwork node; type 'ArtworkInterpress on' to command tool] = headIbodyLLLLLL LI artworkFigure1.002736 the lineLength .mul 2.811678 .add topLeading 1.002736 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeadingBounds710.0 mm xmin 10.0 mm ymin 205.9 mm xmax 206.436 mm ymaxArtwork Interpress Interpress=Interpress/Xerox/3.0 fjXeroxResearch RGBLinearXeroxResearch RGBLinearXerox PressFonts Helvetica-mrrXerox PressFonts Helvetica-mirXerox PressFonts Helvetica-mrrkj蠤{%`"Ƞ xjxj \(kxj `X|kxjpȡkxj8tkxj `tkxj `p|kxj dkxj lkxj dkxj lkxj ġkxj kxj ġkxj kxj Lԡkxj LkxjLkxj Lԡkxj Hlkxj Hlkxj ,kxj (kxj ̡kxj lkxj ԊġkxjpЊTkxj ̡kxj kxj kxj lkxj ̡̊kxj 0̊kxj ̡̊kxj Ȋkxj ̡kxj ԡkxjpԡkxj lkxj8kxj DkxjDkxj8Dkxj @lkxj8@kxj ̡kxjx̡kxjxLkxj kxjpTkxj ltkxj lܡkxjplܡkxj hlkxj8hkxj @Ȋ$kxjkxj ̡kxj @̡kxj ̡kxj lkxj kxj Dkxj `Dkxj Dkxj @lkxj @kxj ܡkxj ܡkxj <kxj kxj 8$kxj 8ġkxj kxj Lԡkxj 0Lkxj LkxjLkxjHkxj ԡkxjԡkxj8kxj lkxj8kxj 䊠̡kxj䊠̡kxj,kxjltkxj lܡkxj hlkxj `,kxj ,kxj (kxj kxj lkxj 􊠪kxj 0􊠪ԡkxj 0,kxj ̊ġkxj 0̊kxj ̊䡚kxj Ȋtkxj kxj ̡kxj lkxjkxj kxj lkxj 0tܡkxj 0tkxjpȊkxjp|졚kxjxlkxj<ܡkxj88kxjp܊kxj <kxj :kxj 8kxj 6kxj 4kxj 2kxj 0kxj 0ܡkxj kxj 0Ċܡkxj kxj 0鄊ܡkxj 逊kxj 0Dܡkxj @kxj 0Ċkxj kxj 0脊ܡkxj 耊kxj 0Dܡkxj @kxj ,\kxj (kxj 瘊kxj 0焊\kxj 瀊kxj 0Dܡkxj @kxj 0ܡkxj kxj 0Ċܡkxj kxj 0愊ܡkxj 怊kxj 0Dܡkxj @kxj 0ܡkxj kxj 슠Lkxj 芠kxjkxj Ċܡkxj kxj 뒊kxj 됊kxj 뎊kxj 댊kxj 늊kxj 눊kxj 놊kxj 넊kxj 넊ܡkxj 뀊kxj ~kxj |kxj zkxj xkxj vkxj tkxj rkxj pkxj Dܡkxj @kxj kxj kxj kxj  kxj  kxj kxj kxj kxj ܡkxj kxj kxj kxj kxj kxj kxj 􊠪kxj 򊠪kxj kxj Ċܡkxj kxj ꄊܡkxj ꀊkxj Dܡkxj @kxj ܡkxj kxj Ċܡkxj kxj 鄊ܡkxj 逊kxj Dܡkxj @kxj ܡkxj kxj Ċܡkxj kxj 脊ܡkxj 耊kxj Dܡkxj @kxj kxj kxj kxj  kxj  kxj kxj kxj kxj ܡkxj kxj kxj kxj kxj kxj kxj 􊠪kxj 򊠪kxj kxj(䊠kxjkxj瘊kxj 焊kxj 瀊kxj Dܡkxj @kxj ܡkxj kxj Ċܡkxj kxj 愊ܡkxj 怊kxj Dܡkxj @kxj ܡkxj kxj$슠Lkxj 芠kxj Ċܡkxj 0Ċܡkxj 0,kkxj搠:7:)@Р Master DBus(Р 樠 MDAddressp( 蠢MnDReset`) ( MnDFreezep)x h MDExecutex)8 蠢 MDSerialOut( ( MDSerialInp(x hMDShift8(8h鸠:71:%蠢 ֠8t'ʠ ֠16t$ʠ V34t$JH𠢠SloBus% 0(RESET'x (hREADY'8 @訠HLDA& @蠢HOLD& `(nCS&x HhDTnR&8 먠SloCLK # hA33-A0($8 H(nBHE$x 蠢D15-D0($ `ꨠnRD$ PhnWR%8 P(nIOR%x @蠢nIOW% H騠nDEN% 8蠢nDReset) 8hDExecute)8 8樠nDSelect( 8( DSerialIn(x 8hDShift(8 8hErrorIn'8 8訠Clock& 8(OwnerOut&x 8h SharedOut&8 8鰠ArbHold%𠢠 8蠢Gnt% 8(Rqst%x 8hDataOut%8 떠64D$ @먠DataIn# 8hHdrCycle$8 80SharedIn$p 8蠢OwnerIn$ V64D%J 5D% 80ErrorOut'p 8蠢 DSerialOut( 8(nDFreeze)x(DynaBus`%x 𠢠:143:@%Р Slave DBus(Р搠:7:P) 蠢 INTR7-INTR0'kkg Interpress810.0 mm xmin 10.0 mm ymin 205.9 mm xmax 194.9406 mm ymax0.9440559 the lineLength .mul 2.811678 .add topLeading 0.9440559 the lineLength .mul 2.811678 .add topIndent 1.405839 mm bottomLeading;; fF