~ruther/vhdl-i2c

b150548edc2f8f5fcf94de1c27753a48480c0897 — Rutherther 1 year, 5 months ago 78ec719
docs: add presentation
A doc/blocks/markdown/address_detector.markdown.md => doc/blocks/markdown/address_detector.markdown.md +14 -0
@@ 0,0 1,14 @@
| **Name**              | **Type**            | **Description** |
|-----------------------|---------------------|-----------------|
| clk_i                 | std_logic           |                 |
| rst_in                | std_logic           |                 |
| address_i             | std_logic_vector[7] |                 |
| store_address_i       | std_logic           |                 |
| scl_rising            | std_logic           |                 |
| scl_falling_delayed_i | std_logic           |                 |
| sda_enable_o          | std_logic           |                 |
| sda_i                 | std_logic           |                 |
| start_i               | std_logic           |                 |
| rw_o                  | std_logic           |                 |
| success_o             | std_logic           |                 |
| fail_o                | std_logic           |                 |

A doc/blocks/markdown/address_generator.markdown.md => doc/blocks/markdown/address_generator.markdown.md +15 -0
@@ 0,0 1,15 @@
| **Name**              | **Type**            | **Description** |
|-----------------------|---------------------|-----------------|
| clk_i                 | std_logic           |                 |
| rst_in                | std_logic           |                 |
| address_i             | std_logic_vector[7] |                 |
| rw_i                  | std_logic           |                 |
| store_address_rw_i    | std_logic           |                 |
| start_i               | std_logic           |                 |
| scl_rising_i          | std_logic           |                 |
| scl_falling_delayed_i | std_logic           |                 |
| sda_enable_o          | std_logic           |                 |
| sda_i                 | std_logic           |                 |
| noack_o               | std_logic           |                 |
| unexpected_sda_o      | std_logic           |                 |
| done_o                | std_logic           |                 |

A doc/blocks/markdown/i2c_slave_state.markdown.md => doc/blocks/markdown/i2c_slave_state.markdown.md +21 -0
@@ 0,0 1,21 @@
| **Name**                 | **Type**  | **Description** |
|--------------------------|-----------|-----------------|
| clk_i                    | std_logic |                 |
| rst_in                   | std_logic |                 |
| rst_i2c_o                | std_logic |                 |
| noack_i                  | std_logic |                 |
| expect_ack_i             | std_logic |                 |
| unexpected_sda_i         | std_logic |                 |
| err_noack_o              | std_logic |                 |
| err_sda_o                | std_logic |                 |
| start_condition_i        | std_logic |                 |
| stop_condition_i         | std_logic |                 |
| rw_i                     | std_logic |                 |
| address_detect_success_i | std_logic |                 |
| address_detect_fail_i    | std_logic |                 |
| address_detect_start_o   | std_logic |                 |
| address_detect_store_o   | std_logic |                 |
| address_detect_o         | std_logic |                 |
| receive_o                | std_logic |                 |
| transmit_o               | std_logic |                 |
| bus_busy_o               | std_logic |                 |

A doc/blocks/markdown/master.markdown.md => doc/blocks/markdown/master.markdown.md +35 -0
@@ 0,0 1,35 @@
| **Name**            | **Type**            | **Description** |
|---------------------|---------------------|-----------------|
| clk_i               | std_logic           |                 |
| rst_in              | std_logic           |                 |
| slave_address_i     | std_logic_vector[7] |                 |
| generate_ack_i      | std_logic           |                 |
| expect_ack_i        | std_logic           |                 |
| rx_valid_o          | std_logic           |                 |
| rx_data_o           | std_logic_vector[8] |                 |
| rx_confirm_i        | std_logic           |                 |
| tx_ready_o          | std_logic           |                 |
| tx_valid_i          | std_logic           |                 |
| tx_data_i           | std_logic_vector[8] |                 |
| tx_clear_buffer_i   | std_logic           |                 |
| err_noack_data_o    | std_logic           |                 |
| err_noack_address_o | std_logic           |                 |
| err_arbitration_o   | std_logic           |                 |
| err_general_o       | std_logic           |                 |
| stop_i              | std_logic           |                 |
| start_i             | std_logic           |                 |
| run_i               | std_logic           |                 |
| rw_i                | std_logic           |                 |
| dev_busy_o          | std_logic           |                 |
| bus_busy_o          | std_logic           |                 |
| waiting_o           | std_logic           |                 |
| sda_i               | std_logic           |                 |
| scl_i               | std_logic           |                 |
| sda_enable_o        | std_logic           |                 |
| scl_enable_o        | std_logic           |                 |


| **Name**              | **Type** | **Default value** |
|-----------------------|----------|-------------------|
| SCL_FALLING_DELAY     | natural  |                   |
| SCL_MIN_STABLE_CYCLES |          |                   |

A doc/blocks/markdown/master_state.markdown.md => doc/blocks/markdown/master_state.markdown.md +37 -0
@@ 0,0 1,37 @@
| **Name**                 | **Type**  | **Description** |
|--------------------------|-----------|-----------------|
| clk_i                    | std_logic |                 |
| rst_in                   | std_logic |                 |
| rst_i2c_o                | std_logic |                 |
| start_i                  | std_logic |                 |
| stop_i                   | std_logic |                 |
| run_i                    | std_logic |                 |
| rw_i                     | std_logic |                 |
| expect_ack_i             | std_logic |                 |
| noack_address_i          | std_logic |                 |
| noack_data_i             | std_logic |                 |
| unexpected_sda_address_i | std_logic |                 |
| unexpected_sda_data_i    | std_logic |                 |
| condition_early_i        | std_logic |                 |
| err_noack_address_o      | std_logic |                 |
| err_noack_data_o         | std_logic |                 |
| err_arbitration_o        | std_logic |                 |
| err_general_o            | std_logic |                 |
| start_condition_i        | std_logic |                 |
| stop_condition_i         | std_logic |                 |
| waiting_for_data_i       | std_logic |                 |
| rx_done_i                | std_logic |                 |
| tx_done_i                | std_logic |                 |
| address_gen_start_o      | std_logic |                 |
| address_gen_done_i       | std_logic |                 |
| address_gen_store_o      | std_logic |                 |
| req_start_o              | std_logic |                 |
| req_stop_o               | std_logic |                 |
| req_cond_done_i          | std_logic |                 |
| req_scl_continuous_o     | std_logic |                 |
| cond_gen_o               | std_logic |                 |
| address_gen_o            | std_logic |                 |
| receive_o                | std_logic |                 |
| transmit_o               | std_logic |                 |
| dev_busy_o               | std_logic |                 |
| bus_busy_o               | std_logic |                 |

A doc/blocks/markdown/rx.markdown.md => doc/blocks/markdown/rx.markdown.md +17 -0
@@ 0,0 1,17 @@
| **Name**              | **Type**            | **Description** |
|-----------------------|---------------------|-----------------|
| clk_i                 | std_logic           |                 |
| rst_in                | std_logic           |                 |
| start_read_i          | std_logic           |                 |
| rst_i2c_i             | std_logic           |                 |
| scl_rising            | std_logic           |                 |
| scl_falling_delayed_i | std_logic           |                 |
| scl_stretch_o         | std_logic           |                 |
| sda_i                 | std_logic           |                 |
| sda_enable_o          | std_logic           |                 |
| done_o                | std_logic           |                 |
| generate_ack_i        | std_logic           |                 |
| read_valid_o          | std_logic           |                 |
| read_ready_o          | std_logic           |                 |
| read_data_o           | std_logic_vector[8] |                 |
| confirm_read_i        | std_logic           |                 |

A doc/blocks/markdown/scl_generator.markdown.md => doc/blocks/markdown/scl_generator.markdown.md +17 -0
@@ 0,0 1,17 @@
| **Name**         | **Type**  | **Description** |
|------------------|-----------|-----------------|
| clk_i            | std_logic |                 |
| rst_in           | std_logic |                 |
| scl_i            | std_logic |                 |
| scl_rising_i     | std_logic |                 |
| scl_falling_i    | std_logic |                 |
| gen_continuous_i | std_logic |                 |
| gen_rising_i     | std_logic |                 |
| gen_falling_i    | std_logic |                 |
| scl_enable_o     | std_logic |                 |
| cannot_comply_o  | std_logic |                 |


| **Name**          | **Type** | **Default value** |
|-------------------|----------|-------------------|
| MIN_STABLE_CYCLES | natural  | 5                 |

A doc/blocks/markdown/slave.markdown.md => doc/blocks/markdown/slave.markdown.md +31 -0
@@ 0,0 1,31 @@
| **Name**          | **Type**            | **Description** |
|-------------------|---------------------|-----------------|
| clk_i             | std_logic           |                 |
| rst_in            | std_logic           |                 |
| address_i         | std_logic_vector[7] |                 |
| generate_ack_i    | std_logic           |                 |
| expect_ack_i      | std_logic           |                 |
| rx_valid_o        | std_logic           |                 |
| rx_data_o         | std_logic_vector[8] |                 |
| rx_confirm_i      | std_logic           |                 |
| rx_stretch_i      | std_logic           |                 |
| tx_ready_o        | std_logic           |                 |
| tx_valid_i        | std_logic           |                 |
| tx_data_i         | std_logic_vector[8] |                 |
| tx_stretch_i      | std_logic           |                 |
| tx_clear_buffer_i | std_logic           |                 |
| err_noack_o       | std_logic           |                 |
| err_sda_o         | std_logic           |                 |
| rw_o              | std_logic           |                 |
| dev_busy_o        | std_logic           |                 |
| bus_busy_o        | std_logic           |                 |
| waiting_o         | std_logic           |                 |
| sda_i             | std_logic           |                 |
| scl_i             | std_logic           |                 |
| sda_enable_o      | std_logic           |                 |
| scl_enable_o      | std_logic           |                 |


| **Name**          | **Type** | **Default value** |
|-------------------|----------|-------------------|
| SCL_FALLING_DELAY | natural  | 5                 |

A doc/blocks/markdown/startstop_condition_detector.markdown.md => doc/blocks/markdown/startstop_condition_detector.markdown.md +7 -0
@@ 0,0 1,7 @@
| **Name** | **Type**  | **Description** |
|----------|-----------|-----------------|
| clk_i    | std_logic |                 |
| sda_i    | std_logic |                 |
| scl_i    | std_logic |                 |
| start_o  | std_logic |                 |
| stop_o   | std_logic |                 |

A doc/blocks/markdown/startstop_condition_generator.markdown.md => doc/blocks/markdown/startstop_condition_generator.markdown.md +22 -0
@@ 0,0 1,22 @@
| **Name**              | **Type**  | **Description** |
|-----------------------|-----------|-----------------|
| clk_i                 | std_logic |                 |
| rst_in                | std_logic |                 |
| sda_i                 | std_logic |                 |
| scl_rising_i          | std_logic |                 |
| scl_falling_i         | std_logic |                 |
| scl_falling_delayed_i | std_logic |                 |
| sda_enable_o          | std_logic |                 |
| start_condition_i     | std_logic |                 |
| stop_condition_i      | std_logic |                 |
| gen_start_i           | std_logic |                 |
| gen_stop_i            | std_logic |                 |
| req_scl_fall_o        | std_logic |                 |
| req_scl_rise_o        | std_logic |                 |
| early_condition_o     | std_logic |                 |
| done_o                | std_logic |                 |


| **Name** | **Type** | **Default value** |
|----------|----------|-------------------|
| DELAY    |          |                   |

A doc/blocks/markdown/tx.markdown.md => doc/blocks/markdown/tx.markdown.md +18 -0
@@ 0,0 1,18 @@
| **Name**              | **Type**            | **Description** |
|-----------------------|---------------------|-----------------|
| clk_i                 | std_logic           |                 |
| rst_in                | std_logic           |                 |
| start_write_i         | std_logic           |                 |
| rst_i2c_i             | std_logic           |                 |
| clear_buffer_i        | std_logic           |                 |
| done_o                | std_logic           |                 |
| unexpected_sda_o      | std_logic           |                 |
| noack_o               | std_logic           |                 |
| scl_rising_i          | std_logic           |                 |
| scl_falling_delayed_i | std_logic           |                 |
| scl_stretch_o         | std_logic           |                 |
| sda_i                 | std_logic           |                 |
| sda_enable_o          | std_logic           |                 |
| ready_o               | std_logic           |                 |
| valid_i               | std_logic           |                 |
| write_data_i          | std_logic_vector[8] |                 |

A doc/img/i2c_master.png => doc/img/i2c_master.png +0 -0
A doc/img/i2c_master.svg => doc/img/i2c_master.svg +4 -0
@@ 0,0 1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="555px" height="304px" viewBox="-0.5 -0.5 555 304" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2024-01-31T19:42:35.326Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0&quot; etag=&quot;LPiohivqJhLPTaO9_jQD&quot; version=&quot;22.1.21&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;oTHgTvNl8gi99sMuIJco&quot;&gt;7VxLc6M4EP41PtoFCDAc85qZrZ2tmkoOO9mbAgpmFiMPyIk9v36FkQAhwMSYh3ecS1BbauR+6eum8QzcrXefI7hZ/YVdFMw0xd3NwP1M01TT0Oi/hLJPKbq+TAle5LtsUk548n8hRlQYdeu7KBYmEowD4m9EooPDEDlEoMEowu/itFcciHfdQA9JhCcHBjL1b98lq5RqGUpO/4J8b8XvrCrskzXkkxkhXkEXvxdI4GEG7iKMSXq13t2hIBEel0u67lPNp9nGIhSSNgse8cPLp3sYwEfnH/fRu/lJntW5qrPNkT3/xsilAmBDHJEV9nAIg4ecehvhbeiihK1CR/mcrxhvKFGlxB+IkD3TJtwSTEkrsg7Yp3TH0f57cfCcMFsYfHi/Y8zT0Z6N0r0mG6yVASPFeBs5bNb3P37cos/2l9X652pubOztn7E3Z2ZJYOQh0iSgTFPUxBFeI7ofui5CAST+m7gPyGzNy+bl6qAXTCMf0A43nTcYbNmtHBIFlSr7Cl+o6wlihoHvhfTaodJBESW8oYj41LZv2Adr33VTjaLY/wVfDvwSQW+wH5LDtzFuZ8Z9JvqEAdrNKhyPLc7NvaiUBtOTRcvYKwsV8HvshTu2lj3j/S35MjljXeBpi8vx62tM7aGsuGx7rXTZZHAFVcYEEnSIFM7KD5GkVdHN3lc+QU8beLDqdxpsRV3XeoKkslqJq1x1TDSazcbveeDL5qwKQS/T+dkdQAWjhqdCRHoWAlLv4QlMLDw1bbIYnXDoJoc9IjQk4Gh0k56bJ5q0eQaLrpSZLskMui4Nv3GCdVA4usSAAhaWPTGhGXLs3IdOIihHPgynIDF1bImZksQi5CAaEcb3yQp5geXY8lpK8iIRDOO1T8g0RaYbY4uM2/hYqcNCUYCYPqhgeeSEPoy+ocinIkgQcUrc+SQ97RVFZeOUIQAmG+f8ksG+MChzO/3M1yvxQ4fDvRr/AkU8E4FaspB0o2xVMaEsMdKAvbCLf2W2C55dcs4pnJE4nw1iV5wTFGNv40pDHSRhKtpBoxe1zqwaEibDXJriOTQ7R8KkikwtcX1/GZMqp0yyIkP3Jqny0FGIQySqUww23M1FFzcaHfx0ZzZaOnMhfBsV0ZvTuua8QD5ATnV73ZTxjl7i1bejy/BmppkBldmt67/RSy+5jPzYD72ZRu+hvMIgOAzSWfSuhYkVaxO9xZz+EpVnltcPH16ChP0tdP71DlZ+hwOcnEAueoXbgHwg/nAnO0P80awlEOxifqYAJJZsBoxAcobbJQLVRpOpRAnZs3XrcqOEKufaTdpzAhjHvtN4hHSqW1covljfacpL/o8GYslpYDlX6dtAZLw4NQOZruKBbS9Mo4D+lyfagfZh1n2bRRW6uJpFS7NQ+zOLI6z7NgurN7NQRLOwgHrEMCrrGKefMm0rD8NYVYYTuN7LuKF1gcIWGWXjodIUGYCM+/j2eDbAbbxzNjCn6YDCkfp5nt9yLqUVPcJ/u1JVwz19TGpqQmRQ9JMqnLWRoW0Z42gE0VpGkIEeTBqjKu7iStP9l5zlw9zSF9aJ2CApPFtWjgM4n4y1sVBKe+w50gMZMk6+8syd5Fp5lkUjPw68EKg3FQiXeGi53ny6w1c9/6xg17eTywnAxOFcZsdXOJdIY1w4d0UFkleLdX3d7AYJ6p9F6+bgiIDnrBeFCOwrIqhTpyqp84oIuhR1dLsLHNCP8urbvbVLwwKZBf9uWKC6b3rcCsEgjeX1DeMtGsu1jkd+t7b/NvlX/+r67cQuJziHlvS8eyZppeFtNWNFurO+g7Q8BmOAIULJecdIxzgb4ptNpT7JHuOefGylr2yc6d2DCuVI7lJ/sJTe1hi0LbzeHUUQn7xxMElpDdoRXimtcV/WmmfpcDHBNk8H0329yFX/AGW0wH/+jodCiUIXShSW2dxyW1WiuKD3hWv0OEySZZUiwqktviooBeL+GrOq7ZEXIhr7e+nJRfxwi7dx67beQ9yeSgtvD3DGPAZnlqWqzHnQjCo+gOPq6wJn6DD/aYR0ev4DE+DhPw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 180 190 L 126.37 190" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.12 190 L 128.12 186.5 L 126.37 190 L 128.12 193.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 200px; margin-left: 151px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="151" y="204" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><rect x="180" y="80" width="120" height="220" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 181px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">state machine</div></div></div></foreignObject><text x="240" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">state machine</text></switch></g><path d="M 60 140 L 60 160.03 L 60 140.03 L 60 153.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 158.88 L 56.5 151.88 L 60 153.63 L 63.5 151.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="80" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 110px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">cond detector</div></div></div></foreignObject><text x="60" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">cond detector</text></switch></g><rect x="363.89" y="80" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 110px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">address gen</div></div></div></foreignObject><text x="424" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">address gen</text></switch></g><rect x="363.89" y="0" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sync scl</div></div></div></foreignObject><text x="424" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">sync scl</text></switch></g><rect x="363.89" y="160" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">receiver</div></div></div></foreignObject><text x="424" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">receiver</text></switch></g><rect x="363.89" y="240" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 365px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">transmitter</div></div></div></foreignObject><text x="424" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">transmitter</text></switch></g><path d="M 364.01 100.16 L 332.46 100.2 L 306.37 100.15" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301.12 100.14 L 308.12 96.66 L 306.37 100.15 L 308.11 103.66 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 111px; margin-left: 330px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="330" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 483.89 30 L 523.89 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 60px; margin-left: 524px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>rising, falling</div><div>edges<br /></div></div></div></div></foreignObject><text x="524" y="64" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">rising, falling...</text></switch></g><path d="M 523.89 270 L 523.89 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 523.89 270 L 490.26 270" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 485.01 270 L 492.01 266.5 L 490.26 270 L 492.01 273.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 523.89 189.66 L 490.26 189.66" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 485.01 189.66 L 492.01 186.16 L 490.26 189.66 L 492.01 193.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 523.89 109.66 L 490.26 109.66" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 485.01 109.66 L 492.01 106.16 L 490.26 109.66 L 492.01 113.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 300 130 L 357.52 129.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 362.77 129.86 L 355.78 133.38 L 357.52 129.87 L 355.76 126.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 140px; margin-left: 326px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="326" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 363.89 30.03 L 331.94 30.03 L 331.94 90.31 L 306.25 90.33" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301 90.34 L 308 86.83 L 306.25 90.33 L 308 93.83 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 363.89 174.87 L 332.4 175.4 L 306.26 175.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301.01 175.02 L 308.05 171.61 L 306.26 175.09 L 307.97 178.61 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 186px; margin-left: 330px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="330" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 299.89 204.87 L 357.52 204.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 362.77 204.87 L 355.77 208.37 L 357.52 204.87 L 355.77 201.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 215px; margin-left: 326px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="326" y="218" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 364 254.87 L 332.51 255.4 L 306.37 255.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301.12 255.02 L 308.16 251.61 L 306.37 255.09 L 308.08 258.61 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 266px; margin-left: 330px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="330" y="269" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 300 284.87 L 357.63 284.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 362.88 284.87 L 355.88 288.37 L 357.63 284.87 L 355.88 281.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 295px; margin-left: 326px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="326" y="298" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 60 220 L 60 240.03 L 60 220.03 L 60 233.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 238.88 L 56.5 231.88 L 60 233.63 L 63.5 231.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 60 220 L 60 240.03 L 60 220.03 L 60 233.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 238.88 L 56.5 231.88 L 60 233.63 L 63.5 231.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 231px; margin-left: 110px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">gen falling, rising</div></div></div></foreignObject><text x="110" y="234" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">gen falling, rising</text></switch></g><rect x="0" y="160" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">cond gen</div></div></div></foreignObject><text x="60" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">cond gen</text></switch></g><rect x="0" y="240" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">scl gen</div></div></div></foreignObject><text x="60" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">scl gen</text></switch></g><path d="M 120 110.03 L 150 110.03 L 173.51 109.94" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 178.76 109.92 L 171.77 113.45 L 173.51 109.94 L 171.75 106.45 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 180.48 270.3 L 126.37 270.03" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.12 270.01 L 128.14 266.54 L 126.37 270.03 L 128.1 273.54 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 150px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>continuous</div><div>gen</div></div></div></div></foreignObject><text x="150" y="294" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">continuous...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file

A doc/img/i2c_slave.png => doc/img/i2c_slave.png +0 -0
A doc/img/i2c_slave.svg => doc/img/i2c_slave.svg +3 -0
@@ 0,0 1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="375px" height="303px" viewBox="-0.5 -0.5 375 303"><defs/><g><rect x="0" y="80" width="120" height="220" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">state machine</div></div></div></foreignObject><text x="60" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">state machine</text></switch></g><path d="M 60.02 60 L 60.02 80 L 60.02 60 L 60.01 73.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 78.88 L 56.51 71.88 L 60.01 73.63 L 63.51 71.89 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="0" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>cond detector<br /></div></div></div></div></foreignObject><text x="60" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">cond detector&#xa;</text></switch></g><rect x="183.89" y="80" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 110px; margin-left: 185px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">address detector</div></div></div></foreignObject><text x="244" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">address detector</text></switch></g><rect x="183.89" y="0" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 185px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>sync scl</div></div></div></div></foreignObject><text x="244" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">sync scl</text></switch></g><rect x="183.89" y="160" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 185px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">receiver</div></div></div></foreignObject><text x="244" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">receiver</text></switch></g><rect x="183.89" y="240" width="120" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 185px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">transmitter</div></div></div></foreignObject><text x="244" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">transmitter</text></switch></g><path d="M 184.01 100.16 L 152.44 100.19 L 126.37 100.15" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.12 100.14 L 128.12 96.65 L 126.37 100.15 L 128.11 103.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 111px; margin-left: 150px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="150" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 303.89 30 L 343.89 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 60px; margin-left: 344px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>rising, falling</div><div>edges<br /></div></div></div></div></foreignObject><text x="344" y="64" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">rising, falling...</text></switch></g><path d="M 343.89 270 L 343.89 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 343.89 270 L 310.26 270" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 305.01 270 L 312.01 266.5 L 310.26 270 L 312.01 273.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 343.89 189.66 L 310.26 189.66" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 305.01 189.66 L 312.01 186.16 L 310.26 189.66 L 312.01 193.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 343.89 109.66 L 310.26 109.66" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 305.01 109.66 L 312.01 106.16 L 310.26 109.66 L 312.01 113.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 120 130 L 177.52 129.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 182.77 129.86 L 175.78 133.38 L 177.52 129.87 L 175.76 126.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 140px; margin-left: 146px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="146" y="143" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 183.89 30 L 151.93 30 L 151.93 90.28 L 126.25 90.33" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121 90.34 L 127.99 86.82 L 126.25 90.33 L 128 93.82 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 183.89 174.87 L 152.4 175.4 L 126.26 175.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.01 175.02 L 128.05 171.61 L 126.26 175.09 L 127.97 178.61 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 185px; margin-left: 150px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="150" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 119.89 204.87 L 177.52 204.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 182.77 204.87 L 175.77 208.37 L 177.52 204.87 L 175.77 201.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 215px; margin-left: 146px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="146" y="218" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 184 254.87 L 152.49 255.4 L 126.37 255.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 121.12 255.02 L 128.16 251.61 L 126.37 255.09 L 128.08 258.61 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 265px; margin-left: 150px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="150" y="269" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 120 284.87 L 177.63 284.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 182.88 284.87 L 175.88 288.37 L 177.63 284.87 L 175.88 281.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 295px; margin-left: 146px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="146" y="298" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><rect x="280" y="170" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 177px; margin-left: 282px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> </div></div></div></foreignObject><text x="282" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"> </text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file

A doc/img/i2c_slave.tex => doc/img/i2c_slave.tex +8 -0
@@ 0,0 1,8 @@
% tikzpic.tex
\documentclass[crop,tikz]{standalone}% 'crop' is the default for v1.0, before it was 'preview'
%\usetikzlibrary{...}% tikz package already loaded by 'tikz' option
\begin{document}
\begin{tikzpicture}
  \draw (0,0) -- (10,10); % ...
\end{tikzpicture}
\end{document}

A doc/img/ssd1306_master.png => doc/img/ssd1306_master.png +0 -0
A doc/img/ssd1306_master.svg => doc/img/ssd1306_master.svg +3 -0
@@ 0,0 1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="458px" height="311px" viewBox="-0.5 -0.5 458 311"><defs/><g><path d="M 337 80 L 337 113.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 337 118.88 L 333.5 111.88 L 337 113.63 L 340.5 111.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 95px; margin-left: 336px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">count</div></div></div></foreignObject><text x="336" y="98" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">count</text></switch></g><rect x="277" y="0" width="120" height="80" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 40px; margin-left: 278px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">bcd counter</div></div></div></foreignObject><text x="337" y="44" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">bcd counter</text></switch></g><rect x="277" y="120" width="120" height="80" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 160px; margin-left: 278px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>ssd1306 </div>logic</div></div></div></foreignObject><text x="337" y="164" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ssd1306 logic</text></switch></g><rect x="277" y="240" width="120" height="70" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 275px; margin-left: 278px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">i2c master</div></div></div></foreignObject><text x="337" y="279" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">i2c master</text></switch></g><path d="M 377 200.4 L 377 233.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 377 238.88 L 373.5 231.88 L 377 233.63 L 380.5 231.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 210px; margin-left: 387px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">ctrl</div></div></div></foreignObject><text x="387" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">ctrl</text></switch></g><path d="M 357 200.4 L 357 233.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 357 238.88 L 353.5 231.88 L 357 233.63 L 360.5 231.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 211px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">data</div></div></div></foreignObject><text x="342" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">data</text></switch></g><path d="M 288.4 239.86 L 288.1 206.85" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 288.05 201.6 L 291.61 208.57 L 288.1 206.85 L 284.61 208.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 222px; margin-left: 289px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="289" y="225" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 177 160 L 270.63 160" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.88 160 L 268.88 163.5 L 270.63 160 L 268.88 156.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="57" y="120" width="120" height="80" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 160px; margin-left: 58px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">clock divider</div></div></div></foreignObject><text x="117" y="164" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">clock divider</text></switch></g><path d="M 227 250 L 227 160" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 227 250 L 270.63 250" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.88 250 L 268.88 253.5 L 270.63 250 L 268.88 246.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="177" y="135" width="60" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 207px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">i2c clk</div></div></div></foreignObject><text x="207" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">i2c clk</text></switch></g><path d="M 7 160 L 50.63 160" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 55.88 160 L 48.88 163.5 L 50.63 160 L 48.88 156.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 27px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>100 mhz</div></div></div></div></foreignObject><text x="27" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">100 mhz</text></switch></g><path d="M 237 130 L 270.51 130.34" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.76 130.39 L 268.73 133.82 L 270.51 130.34 L 268.8 126.82 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 120px; margin-left: 238px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">start</div></div></div></foreignObject><text x="238" y="124" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">start</text></switch></g><path d="M 237 270 L 270.63 269.91" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.88 269.89 L 268.89 273.41 L 270.63 269.91 L 268.87 266.41 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 270px; margin-left: 227px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">scl</div></div></div></foreignObject><text x="227" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">scl</text></switch></g><path d="M 237 290 L 270.63 290" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.88 290 L 268.88 293.5 L 270.63 290 L 268.88 286.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 227px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">sda</div></div></div></foreignObject><text x="227" y="294" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">sda</text></switch></g><path d="M 397 160 L 430.63 160" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 435.88 160 L 428.88 163.5 L 430.63 160 L 428.88 156.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 417px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">status</div></div></div></foreignObject><text x="417" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">status</text></switch></g><path d="M 397 269.83 L 430.63 269.83" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 435.88 269.83 L 428.88 273.33 L 430.63 269.83 L 428.88 266.33 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 270px; margin-left: 448px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">scl</div></div></div></foreignObject><text x="448" y="273" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">scl</text></switch></g><path d="M 397 289.83 L 430.63 289.83" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 435.88 289.83 L 428.88 293.33 L 430.63 289.83 L 428.88 286.33 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 448px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">sda</div></div></div></foreignObject><text x="448" y="293" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">sda</text></switch></g><path d="M 237 40 L 270.63 40" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275.88 40 L 268.88 43.5 L 270.63 40 L 268.88 36.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 20px; margin-left: 246px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">100 mhz</div></div></div></foreignObject><text x="246" y="24" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">100 mhz</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file

A doc/img/tiva-c-kit.png => doc/img/tiva-c-kit.png +0 -0
A doc/img/vunit_run.png => doc/img/vunit_run.png +0 -0
A doc/presentation.tex => doc/presentation.tex +183 -0
@@ 0,0 1,183 @@
%===============================================================
% Template using official colors of Czech Technical University.
% They are defined by new graphical manual - 2017.
% Specially designed for Laboratory of Structure of Biomolecules
% Share and modify as you like. Keep the name of the author.
% It is forbidden to use the template commercially.
% Author: Martin Malý.
% Published: 23.9.2017.
%===============================================================

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{appendixnumberbeamer}

\usetheme{Madrid}

\definecolor{cvut_navy}{HTML}{0065BD}
\definecolor{cvut_blue}{HTML}{6AADE4}
\definecolor{cvut_gray}{HTML}{156570}

\setbeamercolor{section in toc}{fg=black,bg=white}
\setbeamercolor{alerted text}{fg=cvut_blue}
\setbeamercolor*{palette primary}{bg=cvut_navy,fg=gray!20!white}
\setbeamercolor*{palette secondary}{bg=cvut_blue,fg=white}
\setbeamercolor*{palette tertiary}{parent=palette primary}
\setbeamercolor*{palette quaternary}{fg=green,bg=gray!5!white}

\setbeamercolor*{sidebar}{fg=cvut_navy,bg=gray!15!white}


\setbeamercolor{titlelike}{parent=palette primary}
\setbeamercolor{frametitle}{parent=palette primary}

\setbeamercolor*{separation line}{}
\setbeamercolor*{fine separation line}{}

\setbeamertemplate{navigation symbols}{}


\usepackage{eqnarray,amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lmodern} % pro pismo tucne a zaroven kurziva
\usepackage{bm} % pro pismo tucne a zaroven kurziva
\usepackage{epstopdf}
\usepackage{changepage}
\usepackage{array,booktabs}

%====================================================
%========== DEFINITION OF AUTHORS ETC...=============
%====================================================
\author[František Boháček]{František Boháček}
\title[NSV semestral project]{SSD1306 display control over I²C}
\date[2. 2. 2024]{2. 2. 2024}

%====================================================
%========== BEGINNING OF DOCUMENT ===================
%====================================================
\begin{document}

\begin{frame}
    \titlepage
    \begin{center}
          \includegraphics[height=1.5cm]{files/symbol_cvut_plna_samostatna_verze.pdf}
    \end{center}
\end{frame}
\logo{\includegraphics[height=1cm]{files/symbol_cvut_plna_samostatna_verze.pdf}}

\begin{frame}
    \frametitle{I²C entities}

    \begin{itemize}
      \item Entities for general use
      \item Support for arbitration clock stretching
      \item Error reporting
    \end{itemize}

    \begin{center}
      \includegraphics[width=0.4\textwidth]{blocks/svg/master.pdf}
      \includegraphics[width=0.4\textwidth]{blocks/svg/slave.pdf}
    \end{center}
\end{frame}

\begin{frame}
  \frametitle{I²C slave - block}

  \begin{center}
    \hspace{1.8cm}
    \includegraphics[width=0.65\textwidth]{blocks/svg/slave.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{I²C slave - structure}

  \begin{center}
    \includegraphics[width=0.65\textwidth]{img/i2c_slave.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{I²C master - block}

  \begin{center}
    \hspace{1.5cm}
    \includegraphics[width=0.65\textwidth]{blocks/svg/master.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{I²C master - structure}

  \begin{center}
    \includegraphics[width=0.9\textwidth]{img/i2c_master.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Testing - simulation}
  \begin{columns}
    \begin{column}{0.4\textwidth}
        \begin{itemize}
            \item VUnit
            \item Automated testing
        \end{itemize}
    \end{column}
    \begin{column}{0.6\textwidth}
      \includegraphics[width=0.8\textwidth]{img/vunit_run.png}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{Testing - slave with microcontroller - registers}

  \begin{columns}
    \begin{column}{0.5\textwidth}
      \begin{itemize}
        \item Microcontroller as master
        \item 20 registers
        \item Read, write
        \item First write address
        \item Consecutive read/write
      \end{itemize}
    \end{column}

    \begin{column}{0.5\textwidth}
      \includegraphics[width=0.7\textwidth]{img/tiva-c-kit.png}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{Testing - master with SSD1306 display - diagram}

  \begin{center}
    \includegraphics[width=0.7\textwidth]{img/ssd1306_master.pdf}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Testing - master with SSD1306 display - photo}

  \begin{center}
    \includegraphics[width=0.85\textwidth]{img/fpga-board-ssd1306.jpg}
  \end{center}
\end{frame}

\begin{frame}[plain]
    \frametitle{Thank you for your attention}
    Thank you for your attention.
\end{frame}

\appendix


\end{document}
% =============================================================
% =========================== END =============================
% =============================================================