Difference between revisions of "DH11 asynchronous serial line interface"

From Computer History Wiki
Jump to: navigation, search
m (Later implementations: +cat)
m (link UART)
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
The '''DH11 asynchronous serial line interface''' is a [[UNIBUS]] device which supports up to 16 [[asynchronous serial line]]s; as a UNIBUS device, it was usable on the [[PDP-11]] and [[VAX]] computers. Although it first appeared very early on in the lifetime of the PDP-11, it was extremely powerful and flexible.
+
The '''DH11 asynchronous serial line interface''' is a [[UNIBUS]] [[peripheral]] which provides up to 16 [[asynchronous serial line]]s. Output used [[Direct Memory Access|DMA]] (with each line having its own [[buffer]] [[pointer]] and count); on input a 64-character [[First-In First-Out buffer|FIFO buffer]] made over-runs unlikely.
 +
 
 +
As a UNIBUS device, it was usable on the [[PDP-11]] and [[VAX]] computers. Although it first appeared very early on in the lifetime of the PDP-11, it was extremely powerful and flexible, and remained an option for a very long time.
  
 
The parameters for each line:
 
The parameters for each line:
  
* separate input and output baud rates (50 to 9600)
+
* separate input and output baud rates
 
* character length (5-8 bits)
 
* character length (5-8 bits)
 
* stop bits (1, 1-1/2 and 2)
 
* stop bits (1, 1-1/2 and 2)
 
* parity (odd, even, none)
 
* parity (odd, even, none)
  
could be set dynamically (unlike, for example. the [[DJ11]], which set parameters for groups of lines using [[jumper]]s). Output used [[DMA]] (with each line having its own buffer pointer and count); on input a 64-character [[FIFO]] buffer made over-runs unlikely. A 'break' condition on the line (i.e. continuous assertion) could also be generated and detected.
+
could be set dynamically (unlike, for example, the [[DJ11 asynchronous serial line interface|DJ11]], which set parameters for groups of lines using [[jumper]]s)
 +
 
 +
Fourteen supported [[baud rate]]s ranged from 50 to 9600, along with 0 (to disable a line); two additional speeds were available with optional [[clock]] [[FLIP CHIP]]s. A 'break' condition on the line (i.e. continuous assertion) could also be generated and detected.
 +
 
 +
For [[modem]] control, a single [[DM11-BB Modem Control Option‎]] per DH11, mounted in the main DH11 [[backplane]] along with the rest of the DH11 cards, was required. (The DM11-BB is logically a separate device, albeit one housed in the DH11.)
 +
 
 +
==Device registers==
  
In the initial version, modular 'line conditioning' units allowed support of either [[20mA current loop serial line interface|20mA]] or [[EIA RS-232 serial line interface|EIA RS-232]] serial lines.
+
The [[register]]s LPR through BCR are replicated, with one for each line in the device; the 'Line' field in the SCR indicates which one is currently available.
  
For modem control, a single DM11-BB per DH11, mounted in the main DH11 backplane along with the rest of the DH11 cards, was required. (The DM11-BB is logically a separate device, albeit one housed in, and only used with, the DH11.)
+
{| border=1
 +
! Register !! Abbreviation !! Address
 +
|-
 +
|System Control Register                || DHSCR || 760020
 +
|-
 +
|Next Received Character Register      || DHNRCR || 760022
 +
|-
 +
|Line Parameter Register                || DHLPR || 760024
 +
|-
 +
|Current Address Register              || DHCAR || 760026
 +
|-
 +
|Byte Count Register                    || DHBCR || 760030
 +
|-
 +
|Buffer Active Register                || DHBAR || 760032
 +
|-
 +
|Break Control Register                || DHBRCR || 760034
 +
|-
 +
|Silo Status Register                  || DHSSR || 760034
 +
|}
 +
 
 +
The [[address]]es shown are for the first DH11 in a system; additional ones are normally set to be at 760040, 760060.
 +
 
 +
===760020: System Control Register (DHSCR)===
 +
{{16bit-header}}
 +
| TI || SI || OIE || SIE || MCLR || NXM || MAINT || CNXM || RI || RIE || colspan=2 | MEX || colspan=4 | Line
 +
{{16bitoctal-bitout}}
 +
 
 +
===760022: Next Received Character Register (DHNRCR)===
 +
{{16bit-header}}
 +
| DPR || OVR || FRM || PAR || colspan=4 | Line || colspan=8 | Data
 +
{{16bitoctal-bitout}}
 +
 
 +
===760024: Line Parameter Register (DHLPR)===
 +
{{16bit-header}}
 +
| Echo || HFD || colspan=4 | TSpeed || colspan=4 | RSpeed || ODD || PAR || Unused || 2SB || colspan=2 | Length
 +
{{16bitoctal-bitout}}
 +
 
 +
===760034: Silo Status Register (DHSSR)===
 +
{{16bit-header}}
 +
| Rsvd || Unused || colspan=6 | Fill || colspan=2 | XMem || colspan=6 | Alarm
 +
{{16bitoctal-bitout}}
  
 
==Initial implementation==
 
==Initial implementation==
  
The original implementation took an entire double [[system unit]], containing multiple cards (see list below).
+
The original implementation took an entire double [[system unit]] [[backplane]], containing multiple cards (see list below). It came in 'earlier' and 'later' versions.
  
It came in 'earlier' and 'later' versions: in the 'early' versions the line conditioning units (to adapt from TTL to either EIA, 20mA, etc) were installed in a separate rack-mounted [[DEC card form factor|dual-height]] [[backplane]] (which required its own independent [[power supply]]); in the 'later' units line conditioning was performed by boards mounted in the main DH11 backplane, and a rack-mounted passive distribution panel provided connectors for individual lines.
+
In the 'early' versions, modular 'line conditioning' units allowed support of either [[20mA current loop serial line interface|20mA]] or [[EIA RS-232 serial line interface|EIA RS-232]] serial lines; these were installed in a separate rack-mounted [[DEC card form factor|dual-height]] [[DM11 distribution panel]] [[backplane]] (which required its own independent [[power supply]]).
  
For the 'early' versions, the available line conditioning units included the DM11-DA (20mA line conditioning) and the DM11-DA (EIA, no modem conrol). Each supported four lines; thus, line conditioning could be mixed in groups of four. The 'early' version of the DM11-BB connected to four DM11-DC's.
+
[[Image:H317BUncovered.jpg|thumb|right|300px|H317-B with cover off]]
  
The 'later' versions of the DH11 only supported EIA-type line conditioning (with or without modem control); to add modem control, a different implementation of the DM11-BB was required (one which did the EIA level conversion internally).
+
In the 'later' units, to reduce the cost, line conditioning was performed on boards mounted in the main DH11 backplane, and a rack-mounted passive H317-B distribution panel provided connectors for individual lines.
 +
 
 +
These 'later' versions only supported EIA-type line conditioning (with or without modem control); to add modem control, a different implementation of the DM11-BB was required (one which did the EIA level conversion on the control lines internally).
  
 
===Versions===
 
===Versions===
Line 28: Line 78:
 
The 'early' versions of the DH11 were:
 
The 'early' versions of the DH11 were:
  
* DH11-AA - Basic unit (110VAC), requires DM11-D's in addition
+
* DH11-AA - Basic unit (110VAC), requires line conditioning units in addition
 
* DH11-AB - Telegraph line version (see below)
 
* DH11-AB - Telegraph line version (see below)
* DH11-AC - Basic unit (220VAC), requires DM11-D's in addition
+
* DH11-AC - Basic unit (220VAC), requires line conditioning units in addition
  
The 'later' versions, which used an H317-B passive distribution panel,  were:
+
The 'later' versions were:
  
 
* DH11-AD - EIA level conversion, modem control  
 
* DH11-AD - EIA level conversion, modem control  
Line 39: Line 89:
 
For the telegraph line option, the line conditioning backplane and its power supply were omitted, and up to two DH11's were connected to a DC08CS Telegraph Converter Panel.
 
For the telegraph line option, the line conditioning backplane and its power supply were omitted, and up to two DH11's were connected to a DC08CS Telegraph Converter Panel.
  
===Main Boards===
+
===Main unit===
  
The 'basic' DH11 included the following boards:
+
[[Image:M791.jpg|300px|thumb|right|M791 connector card]]
  
* M7277 - Transmit scanner and [[NPR]]
+
The 'basic' DH11 included the following [[DEC card form factor|hex-width]] boards:
 +
 
 +
* M7277 - Transmit scanner
 
* M7278 - Registers and byte count
 
* M7278 - Registers and byte count
* M7279 - FIFO buffer
 
* M7280 (2) - Multiple UARTs
 
 
* M7288 - Line parameters control
 
* M7288 - Line parameters control
 
* M7289 - Receiver scanner
 
* M7289 - Receiver scanner
 +
 +
a dual-width and two quads:
 +
 +
* M7279 - FIFO buffer
 +
* M7280 (2) - Octal [[Universal Asynchronous Receiver/Transmitter|UART]]s
 +
 +
and a number of single-width cards:
 +
 
* M4540 - Crystal clock
 
* M4540 - Crystal clock
* M796 - Unibus master control
+
* M7360 - Priority selector
* M7821 (2) - Interrupt control (transmit and receive)
+
* M796 - UNIBUS master control
 +
* [[M782 Interrupt Control‎|M7821]] (2) - Interrupt control (transmit. receive, and [[Non-Processor Request|NPR]])
 +
* M405 - Baud clock (optional; 2)
 +
* M791 - [[Berg connector]] header connector card
  
The 'early' DM11-BB used:
+
Board locations (as seen from the board insertion side of the backplane, not the [[wire-wrap]] pin side, as is common in [[DEC]] documentation) are:
  
* M7246 - Control Scan
+
{| class="wikitable"
* M7247 (2) - Control Mux
+
! !! colspan="6" | Connector
* M105 - Address selector
+
|-
* M7821 - Interrupt control
+
! Slot !! A !! B !! C !! D !! E !! F
 +
|-
 +
| 1 || colspan="2" style="text-align:center;" | UNIBUS In || colspan="4" style="text-align:center;" | Reserved for DM11-BB
 +
|-
 +
| 2 || M7821 || M796 || colspan="4" style="text-align:center;" | Reserved for DM11-BB
 +
|-
 +
| 3 || colspan="6" style="text-align:center;" | M7278
 +
|-
 +
| 4 || colspan="6" style="text-align:center;" | M7277
 +
|-
 +
| 5 || colspan="6" style="text-align:center;" | M7289
 +
|-
 +
| 6 || M7821 || M405 (optional) || colspan="4" style="text-align:center;" | M7280
 +
|-
 +
| 7 || M7360 || M971 (cable) || colspan="4" style="text-align:center;" | M7280
 +
|-
 +
| 8 || colspan="6" style="text-align:center;" | M7288
 +
|-
 +
| 9 || colspan="2" style="text-align:center;" | UNIBUS Out || colspan="2" style="text-align:center;" | M7279 || M405 (optional) || M4540
 +
|}
 +
 
 +
An optional M794 maintenance card could be plugged into the slot normally used by the M971, for testing.
  
 
The 'later' versions of the DH11 both included:
 
The 'later' versions of the DH11 both included:
Line 71: Line 153:
 
* M7808 - Mux and Modem Scan Control
 
* M7808 - Mux and Modem Scan Control
  
These boards fitted into the same slots occupied by the DM11-BB boards in the 'early' versions.
+
These boards fitted into the same slots occupied by the DM11-BB boards in the 'early' versions (the M7807 in slot 1, the M7808 in slot 2).
  
Finally, an optional M794 maintenance card could be plugged into the slot normally used by the M971, for testing.
+
===Distribution panels===
  
===Line conditioning boards===
+
The rack-mounted passive distribution panel initially used in the 'later' versions was the H317-B passive distribution panel, initially created for the DJ11, which mounted directly into a standard 19" rack, and contained 16 DB-25P connectors.
  
The line conditioning units, mounted in the separate backplane used in the 'early' versions, included, in the DM11-DA:
+
It was connected to the DH11 with a pair of BC08S cables, which carried the 'main' signals (data, etc - i.e. non-modem control); these cables were thus required for both 'later' versions. For the modem control signals (Carrier Detect, etc) used with the DH11-AD, four BC08R cables were used.
  
* M596 - TTL to 20mA Level Converter (4 channels each)
+
[[Image:H3007Panel.jpg|thumb|right|200px|H3007]]
* M973 - Mate-N-Lok header
 
  
and in the DM11-DB:
+
Later, the H3007 8-line EIA distribution panel, designed for use in later DEC cabinets with improved [[EMI]] characteristics, was introduced; the H3007 fits into the standard panel 21cm x 10cm cutout found in these systems.
  
* M594 - TTL to EIA Level Converter (4 channels each)
+
==Design flaw==
* W404 - DTR Jumper card
 
  
The DM11-DC used only the M594.
+
Some time after it was introduced, it became apparent that there was a design flaw associated with the 'silo alarm' functionality. This mechanism allowed increased processing efficiency by allowing multiple input characters to be processed with a single [[interrupt]]; it involved a register (the 'Silo Alarm Level') which contained a count of the number of characters required in the input buffer (the 'silo') before an interrupt was generated.
 +
 
 +
The problem is that if less characters than that arrive, and then no more, an interrupt is never generated. So, code which uses higher levels for the silo alarm has to periodically check to see if less characters than that have arrived, and are waiting.
 +
 
 +
(Apparently, the designer admitted that this was a flaw; he indicated that there should have been a timer, such that after the first character entered the silo, if the silo was still non-empty after the timer ran out, an interrupt would be generated.)
  
 
==Later implementations==
 
==Later implementations==
  
The DH11 was later re-implemented as the [[DHU11]], which was mostly programmatically identical, but fitted on a single [[DEC card form factor|hex-height]] card, which plugged into a [[Small Peripheral Controller|SPC]] slot.
+
The DH11 was later re-implemented as the [[DHU11 asynchronous serial line interface|DHU11]], which was not programmatically identical to the DH11, but had the same capabilities. (It also had the input timer, discussed above.) It fitted on a single [[DEC card form factor|hex-height]] card, which plugged into a [[Modified UNIBUS Device|MUD]] slot.
 +
 
 +
For the [[QBUS]], the [[DHV11 asynchronous serial line interface|DHV11]] and [[DHQ11 asynchronous serial line interface|DHQ11]] (the former was mostly programmatically identical to the DHU11; the latter could be set to exactly emulate either a DHU11 or a DHV11) appeared; they only supported 8 lines each (via two quad breakout panels), however.
  
For the [[QBUS]], the [[DHV11]] and [[DHQ11]] (again, programmatically identical) appeared; they only supported 8 lines (via two quad breakout panels) each, however.
+
==External links==
  
{{PDP-11}}
+
* [http://www.bitsavers.org/pdf/dec/unibus/EK-ODH11-OP-002_DH11_Asynchronous_16-line_Multiplexer_Users_Manual_Sep76.pdf DH11 asynchronous 16-line multiplexer user's manual] (EK-ODH11-OP-002)
 +
* [http://www.bitsavers.org/pdf/dec/unibus/EK-0DH11-MM-003_Apr75.pdf DH11 asynchronous 16-line multiplexer maintenance manual] (EK-ODH11-MM-003)
 +
* [http://www.bitsavers.org/pdf/dec/unibus/DH11_EngrDrws_Jul76.pdf DH11 Engineering Drawings]
 +
* [http://woffordwitch.com/McNamaraDH11.asp The Development Of The DH11 Multiplexer]
  
[[Category:UNIBUS Peripherals]]
+
[[Category: UNIBUS Serial Interfaces]]

Latest revision as of 02:41, 31 January 2022

The DH11 asynchronous serial line interface is a UNIBUS peripheral which provides up to 16 asynchronous serial lines. Output used DMA (with each line having its own buffer pointer and count); on input a 64-character FIFO buffer made over-runs unlikely.

As a UNIBUS device, it was usable on the PDP-11 and VAX computers. Although it first appeared very early on in the lifetime of the PDP-11, it was extremely powerful and flexible, and remained an option for a very long time.

The parameters for each line:

  • separate input and output baud rates
  • character length (5-8 bits)
  • stop bits (1, 1-1/2 and 2)
  • parity (odd, even, none)

could be set dynamically (unlike, for example, the DJ11, which set parameters for groups of lines using jumpers)

Fourteen supported baud rates ranged from 50 to 9600, along with 0 (to disable a line); two additional speeds were available with optional clock FLIP CHIPs. A 'break' condition on the line (i.e. continuous assertion) could also be generated and detected.

For modem control, a single DM11-BB Modem Control Option‎ per DH11, mounted in the main DH11 backplane along with the rest of the DH11 cards, was required. (The DM11-BB is logically a separate device, albeit one housed in the DH11.)

Device registers

The registers LPR through BCR are replicated, with one for each line in the device; the 'Line' field in the SCR indicates which one is currently available.

Register Abbreviation Address
System Control Register DHSCR 760020
Next Received Character Register DHNRCR 760022
Line Parameter Register DHLPR 760024
Current Address Register DHCAR 760026
Byte Count Register DHBCR 760030
Buffer Active Register DHBAR 760032
Break Control Register DHBRCR 760034
Silo Status Register DHSSR 760034

The addresses shown are for the first DH11 in a system; additional ones are normally set to be at 760040, 760060.

760020: System Control Register (DHSCR)

TI SI OIE SIE MCLR NXM MAINT CNXM RI RIE MEX Line
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

760022: Next Received Character Register (DHNRCR)

DPR OVR FRM PAR Line Data
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

760024: Line Parameter Register (DHLPR)

Echo HFD TSpeed RSpeed ODD PAR Unused 2SB Length
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

760034: Silo Status Register (DHSSR)

Rsvd Unused Fill XMem Alarm
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Initial implementation

The original implementation took an entire double system unit backplane, containing multiple cards (see list below). It came in 'earlier' and 'later' versions.

In the 'early' versions, modular 'line conditioning' units allowed support of either 20mA or EIA RS-232 serial lines; these were installed in a separate rack-mounted dual-height DM11 distribution panel backplane (which required its own independent power supply).

H317-B with cover off

In the 'later' units, to reduce the cost, line conditioning was performed on boards mounted in the main DH11 backplane, and a rack-mounted passive H317-B distribution panel provided connectors for individual lines.

These 'later' versions only supported EIA-type line conditioning (with or without modem control); to add modem control, a different implementation of the DM11-BB was required (one which did the EIA level conversion on the control lines internally).

Versions

The 'early' versions of the DH11 were:

  • DH11-AA - Basic unit (110VAC), requires line conditioning units in addition
  • DH11-AB - Telegraph line version (see below)
  • DH11-AC - Basic unit (220VAC), requires line conditioning units in addition

The 'later' versions were:

  • DH11-AD - EIA level conversion, modem control
  • DH11-AE - EIA level conversion, no modem control

For the telegraph line option, the line conditioning backplane and its power supply were omitted, and up to two DH11's were connected to a DC08CS Telegraph Converter Panel.

Main unit

M791 connector card

The 'basic' DH11 included the following hex-width boards:

  • M7277 - Transmit scanner
  • M7278 - Registers and byte count
  • M7288 - Line parameters control
  • M7289 - Receiver scanner

a dual-width and two quads:

  • M7279 - FIFO buffer
  • M7280 (2) - Octal UARTs

and a number of single-width cards:

  • M4540 - Crystal clock
  • M7360 - Priority selector
  • M796 - UNIBUS master control
  • M7821 (2) - Interrupt control (transmit. receive, and NPR)
  • M405 - Baud clock (optional; 2)
  • M791 - Berg connector header connector card

Board locations (as seen from the board insertion side of the backplane, not the wire-wrap pin side, as is common in DEC documentation) are:

Connector
Slot A B C D E F
1 UNIBUS In Reserved for DM11-BB
2 M7821 M796 Reserved for DM11-BB
3 M7278
4 M7277
5 M7289
6 M7821 M405 (optional) M7280
7 M7360 M971 (cable) M7280
8 M7288
9 UNIBUS Out M7279 M405 (optional) M4540

An optional M794 maintenance card could be plugged into the slot normally used by the M971, for testing.

The 'later' versions of the DH11 both included:

  • M5906 EIA conversion module

which occupied a dual slot (used by an M7360 Priority Selector card and an M971 Cable Connector card, used to connect the DH11 to the line conditioning units, in the 'early' versions).

The -AD version, which included a 'later' DM11-BB for modem control, also used:

  • M7807 - Mux and Bus Control
  • M7808 - Mux and Modem Scan Control

These boards fitted into the same slots occupied by the DM11-BB boards in the 'early' versions (the M7807 in slot 1, the M7808 in slot 2).

Distribution panels

The rack-mounted passive distribution panel initially used in the 'later' versions was the H317-B passive distribution panel, initially created for the DJ11, which mounted directly into a standard 19" rack, and contained 16 DB-25P connectors.

It was connected to the DH11 with a pair of BC08S cables, which carried the 'main' signals (data, etc - i.e. non-modem control); these cables were thus required for both 'later' versions. For the modem control signals (Carrier Detect, etc) used with the DH11-AD, four BC08R cables were used.

H3007

Later, the H3007 8-line EIA distribution panel, designed for use in later DEC cabinets with improved EMI characteristics, was introduced; the H3007 fits into the standard panel 21cm x 10cm cutout found in these systems.

Design flaw

Some time after it was introduced, it became apparent that there was a design flaw associated with the 'silo alarm' functionality. This mechanism allowed increased processing efficiency by allowing multiple input characters to be processed with a single interrupt; it involved a register (the 'Silo Alarm Level') which contained a count of the number of characters required in the input buffer (the 'silo') before an interrupt was generated.

The problem is that if less characters than that arrive, and then no more, an interrupt is never generated. So, code which uses higher levels for the silo alarm has to periodically check to see if less characters than that have arrived, and are waiting.

(Apparently, the designer admitted that this was a flaw; he indicated that there should have been a timer, such that after the first character entered the silo, if the silo was still non-empty after the timer ran out, an interrupt would be generated.)

Later implementations

The DH11 was later re-implemented as the DHU11, which was not programmatically identical to the DH11, but had the same capabilities. (It also had the input timer, discussed above.) It fitted on a single hex-height card, which plugged into a MUD slot.

For the QBUS, the DHV11 and DHQ11 (the former was mostly programmatically identical to the DHU11; the latter could be set to exactly emulate either a DHU11 or a DHV11) appeared; they only supported 8 lines each (via two quad breakout panels), however.

External links