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="<mxfile host="app.diagrams.net" modified="2024-01-31T19:42:35.326Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0" etag="LPiohivqJhLPTaO9_jQD" version="22.1.21"><diagram name="Page-1" id="oTHgTvNl8gi99sMuIJco">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==</diagram></mxfile>"><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
</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 =============================
+% =============================================================