I³C IO reverse engineered and documented

This commit is contained in:
David Shah 2018-01-13 18:51:27 +00:00
parent 7e587c9b6b
commit 4b16c3735c
3 changed files with 56 additions and 0 deletions

View File

@ -290,6 +290,19 @@ can be used as an open-drain IO using the standard IO cell.</p>
</table>
<h3>I<sup>3</sup>C capable IO</h3>
<p>The UltraPlus devices have two IO pins designed for the new MIPI I<sup>3</sup>C standard (pins 23 and 25 in the SG48 package),
compared to normal IO pins they have two switchable pullups each. One of these pullups, the weak pullup, is fixed at 100k and the
other can be set to 3.3k, 6.8k or 10k using the mechanism above. The pullup control signals do not
connect directly to the IO tile, but instead connect through an IPConnect tile.</p>
<p>The connections are listed below:</p>
<table class="ctab">
<tr><th>Signal</th><th>Pin 23<br/>(19, 31, 0)</th><th>Pin 25<br/>(19, 31, 1)</th></tr>
<tr><td>PU_ENB</td><td>(25, 27, lutff_6/in_0)</td><td>(25, 27, lutff_7/in_0)</td></tr>
<tr><td>WEAK_PU_ENB</td><td>(25, 27, lutff_4/in_0)</td><td>(25, 27, lutff_5/in_0)</td></tr>
</table>
<h2>Hard IP</h2>
<p>The UltraPlus devices contain three types of Hard IP: I<sup>2</sup>C (<span style="font-family:monospace">SB_I2C</span>), SPI (<span style="font-family:monospace">SB_SPI</span>), and LED PWM generation

View File

@ -0,0 +1,8 @@
set_io pin_23 23
set_io pin_25 25
set_io pin_23_puen 2
set_io pin_23_wkpuen 3
set_io pin_25_puen 4
set_io pin_25_wkpuen 6

35
icefuzz/tests/sb_io_i3c.v Normal file
View File

@ -0,0 +1,35 @@
module top (
inout pin_23,
inout pin_25,
input pin_23_puen,
input pin_23_wkpuen,
input pin_25_puen,
input pin_25_wkpuen);
(* PULLUP_RESISTOR = "3P3K" *)
SB_IO_I3C #(
.PIN_TYPE(6'b000001),
.PULLUP(1'b1),
.WEAK_PULLUP(1'b1),
.NEG_TRIGGER(1'b0)
) IO_PIN_0 (
.PACKAGE_PIN(pin_23),
.PU_ENB(pin_23_puen),
.WEAK_PU_ENB(pin_23_wkpuen)
) ;
(* PULLUP_RESISTOR = "3P3K" *)
SB_IO_I3C #(
.PIN_TYPE(6'b000001),
.PULLUP(1'b1),
.WEAK_PULLUP(1'b1),
.NEG_TRIGGER(1'b0)
) IO_PIN_1 (
.PACKAGE_PIN(pin_25),
.PU_ENB(pin_25_puen),
.WEAK_PU_ENB(pin_25_wkpuen)
);
endmodule