.. |clearer| raw:: html
.. |_| unicode:: 0xA0 :trim: ******************* HP85 I/O Bus Timing ******************* .. index:: Address Cycle Read Cycle Write Cycle Setup and Hold .. comment: Looks like tables are generated with https://www.tablesgenerator.com/html_tables Delays through 1MA8 ------------------- .. raw:: html
Timing Paths through 1MA8 Name Typical
/LMA Falling Edge TLMAF 32 ns
/LMA Rising Edge TLMAR 53 ns
LMA Pulse Width
on I/O bus
TLMAPW 1.17 us
|clearer| **Source Oscilloscope images** * :ref:`LMA Falling Delay` * :ref:`LMA Rising Delay` * :ref:`LMA Pulse Width` -------------- |clearer| .. raw:: html
Timing Paths through 1MA8 Name Typical
RD Falling Edge TRDF 28 ns
RD Rising Edge TRDR 50 ns
RD Pulse Width TRDPW 1.19 us

|clearer| **Source Oscilloscope images** * :ref:`RD Falling Delay` * :ref:`RD Rising Delay` * :ref:`RD Pulse Width` -------------- |clearer| .. raw:: html
Timing Paths through 1MA8 Name Typical
WR Falling Edge TWRF 29 ns
WR Rising Edge TWRR 49 ns
WR Pulse Width TWRPW 1.17 us

|clearer| **Source Oscilloscope images** * :ref:`WR Falling Delay` * :ref:`WR Rising Delay` * :ref:`WR Pulse Width` -------------- |clearer| .. raw:: html
Timing Paths through 1MA8 Name Typical
B0 Falling Edge TDATAF 28 ns
B0 Rising Edge TDATAR 7 ns

|clearer| **Source Oscilloscope images** * :ref:`Data Falling Delay` * :ref:`Data Rising Delay` Write Cycle as seen on the I/O bus ---------------------------------- These timing measurements are from the CPU writing to RAM or I/O as seen on the I/O bus. These signals have all passed through the 1MA8 except for the 4 clock signals. TON is therefor under control of the 1MA8. The data being written from the CPU actually stops being actively driven on the falling edge of Phi 1. The data remains valid for the next 200 ns because the bus has no drivers for that 200 ns (Bus Float states have no bus drivers, and there are no passive loads like pull-down or pull-up resistors) .. raw:: html
  Note:
       FP    Float Prior, Extend prior data value but without active drive
       FD    Float Data, Extend prior data value but without active drive
       PC    Pre-Charge (drive to 6V)
       FH    Float High, Extend prior Pre-Charge
  

Write cycle data setup and hold Name Typical
Data Setup TON 80 ns
Data Setup TSU 120 ns
Data Hold THOLD 200 ns

|clearer| **Source Oscilloscope images** * :ref:`Data Setup` * :ref:`Data Hold` Address Cycle as seen on the I/O bus ------------------------------------ These timing measurements are from the CPU sending Address bytes as seen on the I/O bus. These signals have all passed through the 1MA8 except for the 4 clock signals. TON is therefor under control of the 1MA8. The addresses being written from the CPU actually stops being actively driven on the falling edge of Phi 1. The address remains valid for the next 200 ns because the bus has no drivers for that 200 ns (Bus Float states have no bus drivers, and there are no passive loads like pull- down or pull-up resistors) .. raw:: html
  Note:
       FP    Float Prior, Extend prior data value but without active drive
       FD    Float Data, Extend prior data value but without active drive
       PC    Pre-Charge (drive to 6V)
       FH    Float High, Extend prior Pre-Charge
  

Write cycle data setup and hold Name Typical
Data Setup TON XX ns
Data Setup TSU XXX ns
Data Hold THOLD 200 ns

|clearer| **Source Oscilloscope images** * :ref:`Address Setup` * :ref:`Address Hold` .. raw:: html Need to come back and re-do the oscilloscope pictures for this Other Timing Measurements ------------------------- **Source Oscilloscope images** * :ref:`Phi 1 and Phi 2 relative timing` * :ref:`Phi 1 is a 200ns Pulse` * :ref:`Delay from PWO high to First /LMA is 4us` * :ref:`Phi 1 Rise time is 19ns` * :ref:`Phi 1 Fall time is 18ns` * :ref:`Phi 1 on Mainboard and on I/O Bus` * :ref:`LMAX Falling edge Spread (or Jitter) 12 ns` * :ref:`LMAX Earliest Falling edge to Phi 1 Falling edge 43 ns` * :ref:`LMAX Average Falling edge to Phi 1 Falling edge 51 ns` * :ref:`WRX Falling edge Spread (or Jitter) (none)` * :ref:`WRX Falling edge to Phi 1 Falling edge 58 ns` * :ref:`RDX Falling edge Spread (or Jitter) 12 ns` * :ref:`RDX Earliest Falling edge to Phi 1 Falling edge 46 ns` * :ref:`LMAX Rising edge after Phi 21 Rising edge 113 ns` * :ref:`RDX Rising edge after Phi 21 Rising edge 113 ns` * :ref:`WRX Rising edge after Phi 21 Rising edge 110 ns` -------------- Detailed instruction Fetch and Execute -------------------------------------- HP85 Instruction Fetch and Execute Overview .. raw:: html
  In the Advanced Programming ROM at effective address 0x7E87
  is the following byte sequence
    Hex:     5E  B0  99  82
    Octal:  136 260 231 202

  The instruction is            LDBD R36,=0x8299    (a RAM location)

  The bus cycle of 1600 ns
  Values given in Hex except for the destination register which is 36 octal
  The data values appear on the bus during the Phi 1 period following
  the /LMA or /RD
  Issue /LMA, Data is 87          Low 8 bits of the address of the instruction
  Issue /LMA, Data is 7E          High 8 bits of the address of the instruction
  Issue /RD,  Data is 5E          First of 4 bytes of the insruction. This is
                                  DRP 36 which is specifying the destination register
  Bus is idle for 1 cycle
  Issue /RD,  Data is B0          Second of 4 bytes of the insruction. This is
                                  LDBD with an immediate memory address to follow
  Issue /LMA & /RD, Data is 99    Third of 4 bytes of the insruction. This is the
                                  low 8 bits of the address in RAM that will be fetched
                                  Note that the /RD is reading the byte from ROM, and
                                  simultaneously the /LMA is telling all devices on
                                  the bus that a new 16 bit address is being issued
  Issue /LMA & /RD, Data is 82    Fourth of 4 bytes of the insruction. This is the
                                  high 8 bits of the address in RAM that will be fetched
                                  The RAM controller will match this address
  Issue /RD,  Data is 04          Read the RAM at address 0x8299, returned value is 04
  
|clearer| The **LDBD R36,=Address** instruction reads a byte from the specified address and places it into register 36. The instruction is 4 bytes long The instruction bytes are stored at Hex 7E87 through to 7E8A * Byte 1: Specifies R36 (0x5E) * Byte 2: Specifies the instruction LDBD, with addressing mode Literal Direct (0xB0) * Byte 3: Specifies the low 8 bits of the direct address (0x99) * Byte 4: Specifies the high 8 bits of the direct address (0x82) **Scroll** the following timing diagram to see the complete sequence of events. .. raw:: html
|clearer| .. raw:: html

|clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| .. raw:: html |clearer| Oscilloscope screen captures ---------------------------- LMA Falling Delay +++++++++++++++++ - Channel 1: /LMA on mainboard - Channel 2: /LMAX on I/O bus .. image:: _images/LMA_Falling_Delay.png :height: 500px :align: left |clearer| LMA Rising Delay ++++++++++++++++ - Channel 1: /LMA on mainboard - Channel 2: /LMAX on I/O bus .. image:: _images/LMA_Rising_Delay.png :height: 500px :align: left |clearer| LMA Pulse Width +++++++++++++++ - Channel 1: /LMAX on I/O bus .. image:: _images/LMA_Pulse_Width_1170_ns.png :height: 500px :align: left |clearer| RD Falling Delay +++++++++++++++++ - Channel 1: /RD on mainboard - Channel 2: /RDX on I/O bus .. image:: _images/RD_Falling_Delay.png :height: 500px :align: left |clearer| RD Rising Delay ++++++++++++++++ - Channel 1: /RD on mainboard - Channel 2: /RDX on I/O bus .. image:: _images/RD_Rising_Delay.png :height: 500px :align: left |clearer| RD Pulse Width +++++++++++++++ - Channel 1: /RDX on I/O bus .. image:: _images/RD_Pulse_Width_1170_ns.png :height: 500px :align: left |clearer| WR Falling Delay +++++++++++++++++ - Channel 1: /WR on mainboard - Channel 2: /WRX on I/O bus .. image:: _images/WR_Falling_Delay.png :height: 500px :align: left |clearer| WR Rising Delay ++++++++++++++++ - Channel 1: /WR on mainboad - Channel 2: /WRX on I/O bus .. image:: _images/WR_Rising_Delay.png :height: 500px :align: left |clearer| WR Pulse Width +++++++++++++++ - Channel 1: /WRX on I/O bus .. image:: _images/WR_Pulse_Width_1170_ns.png :height: 500px :align: left |clearer| Data Falling Delay ++++++++++++++++++ - Channel 1: B0 on mainboard - Channel 2: B0X on I/O bus .. image:: _images/B0_Falling_Delay.png :height: 500px :align: left |clearer| Data Rising Delay +++++++++++++++++ This does not seem right. Need to re-measure this parameter. - Channel 1: B0 on mainboad - Channel 2: B0X on I/O bus .. image:: _images/B0_Rising_Delay.png :height: 500px :align: left |clearer| Data Setup ++++++++++ Channel 4 shows the latest falling edge for data on the I/O bus. While some devices provide data earlier, from the point of view of someone desiging an I/O device, the latest arrival time is what is important. The Capricorn processor is responsible for these latest valid data. Also, note that an example of data from Capricorn are the address bytes. I/O devices, RAM and ROM, all provide data sooner (but from a design point of view, you must work with the latest valid data situation). Capricorn provides valid data about 150 ns prior to the rising edge of Phi 1. After passing through the I/O bus controller chip (1MA8, IC U1), data is seen going valid on the I/O bus 120 ns before the rising edge of Phi 1. - Channel 1: Phi 1 - Channel 2: /LMAX - Channel 3: /WRX - Channel 4: Data on I/O bus .. image:: _images/G1_1_Write_Data_Setup_to_Phi_1_Rising_120_ns.png :height: 500px :align: left |clearer| Data Hold +++++++++ Channel 4 shows Data Hold time after the falling edge of Phi 1, on the I/O bus. The timing is the same on the data pins of Capricorn. This is because the bus drivers on both the I/O bus, and Capricorn have already turned off about 50 ns to 150 ns after the falling edge of Phi 1, and the both busses (I/O and main board) are undriven, and are just holding their value due to bus capacitance and a lack of resistive load. On the rising edge of Phi 12 (200 ns after the falling edge on Phi 1) the pre-charge drivers are enabled on both busses, and all data lines on both busses are pre-charged high. Any device on either bus can reliably capture data with the falling edge of Phi 1. - Channel 1: Phi 1 - Channel 2: /LMAX - Channel 3: /WRX - Channel 4: Data on I/O bus .. image:: _images/G1_2_Write_Data_Hold_after_Phi_1_Falling_200_ns.png :height: 500px :align: left |clearer| Address Setup +++++++++++++ .. raw:: html Need to make this measurement Address Hold ++++++++++++ - Channel 1: Phi 1 - Channel 2: /LMAX - Channel 3: /WRX - Channel 4: Data on I/O bus .. image:: _images/G1_3_Address_Hold_after_Phi_1_Falling_200_ns.png :height: 500px :align: left |clearer| Phi 1 and Phi 2 relative timing +++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 2: Phi 2 .. image:: _images/TCPS_812ns.png :height: 500px :align: left |clearer| Phi 1 is a 200ns Pulse ++++++++++++++++++++++ - Channel 1: Phi 1 .. image:: _images/TCPW_199ns.png :height: 500px :align: left |clearer| Delay from PWO high to First /LMA is 4us ++++++++++++++++++++++++++++++++++++++++ - Channel 1: PWO - Channel 2: /LMA .. image:: _images/TDL_4us.png :height: 500px :align: left |clearer| Phi 1 Rise time is 19ns +++++++++++++++++++++++ - Channel 1: Phi 1 .. image:: _images/Phi_1_on_Extender_TCLKR_19ns_with_VCIL_0.8V_and_VCIH_9.6V.png :height: 500px :align: left |clearer| Phi 1 Fall time is 18ns +++++++++++++++++++++++ - Channel 1: Phi 1 .. image:: _images/Phi_1_on_Extender_TCLKF_18ns_with_VCIL_0.8V_and_VCIH_9.6V.png :height: 500px :align: left |clearer| Phi 1 on Mainboard and on I/O Bus +++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 on mainboard (Blue) - Channel 3: Phi 1 on I/O bus extender (Pink) .. image:: _images/Phi_1_Mainboard_Blue_on_Extender_Pink.png :height: 500px :align: left |clearer| LMAX Falling edge Spread (or Jitter) 12 ns ++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /LMAX (/LMA on I/O Bus) .. image:: _images/LMA_Falling_edge_Spread.png :height: 500px :align: left |clearer| LMAX Earliest Falling edge to Phi 1 Falling edge 43 ns ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /LMAX (/LMA on I/O Bus) .. image:: _images/LMA_Earliest_falling_edge_to_falling_Phi_1.png :height: 500px :align: left |clearer| LMAX Average Falling edge to Phi 1 Falling edge 51 ns +++++++++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /LMAX (/LMA on I/O Bus) .. image:: _images/LMA_Ave_falling_edge_to_falling_Phi_1.png :height: 500px :align: left |clearer| WRX Falling edge Spread (or Jitter) (none) ++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /WRX (/WR on I/O Bus) .. image:: _images/WR_Falling_edge_Spread.png :height: 500px :align: left |clearer| WRX Falling edge to Phi 1 Falling edge 58 ns ++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /WRX (/WR on I/O Bus) .. image:: _images/WR_Falling_edge_to_Falling_Phi_1.png :height: 500px :align: left |clearer| RDX Falling edge Spread (or Jitter) 12 ns +++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /RDX (/RD on I/O Bus) .. image:: _images/RD_Falling_edge_Spread.png :height: 500px :align: left |clearer| RDX Earliest Falling edge to Phi 1 Falling edge 46 ns +++++++++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 1 - Channel 3: /RDX (/RD on I/O Bus) .. image:: _images/RD_Earliest_Falling_edge_to_Falling_Phi_1.png :height: 500px :align: left |clearer| LMAX Rising edge after Phi 21 Rising edge 113 ns ++++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 21 - Channel 3: /LMAX (/LMA on I/O Bus) .. image:: _images/LMA_Rising_edge_from_Rising_Phi_21.png :height: 500px :align: left |clearer| RDX Rising edge after Phi 21 Rising edge 113 ns +++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 21 - Channel 3: /RDX (/RD on I/O Bus) .. image:: _images/RD_Rising_edge_from_Rising_Phi_21.png :height: 500px :align: left |clearer| WRX Rising edge after Phi 21 Rising edge 110 ns +++++++++++++++++++++++++++++++++++++++++++++++ - Channel 1: Phi 21 - Channel 3: /WRX (/WR on I/O Bus) .. image:: _images/WR_Rising_edge_from_Rising_Phi_21.png :height: 500px :align: left |clearer|