Я играю с cliffordwolf / picorv32 и у меня возникли проблемы с пониманием следующего фрагмента в picosoc
( ссылка на источник ):
SB_IO #(
.PIN_TYPE(6'b 1010_01),
.PULLUP(1'b 0)
) flash_io_buf [3:0] (
.PACKAGE_PIN({flash_io3, flash_io2, flash_io1, flash_io0}),
.OUTPUT_ENABLE({flash_io3_oe, flash_io2_oe, flash_io1_oe, flash_io0_oe}),
.D_OUT_0({flash_io3_do, flash_io2_do, flash_io1_do, flash_io0_do}),
.D_IN_0({flash_io3_di, flash_io2_di, flash_io1_di, flash_io0_di})
);
Я нашел описание графики c для примитива SB_IO
в документации по библиотеке технологий Lattice iCE40 , но я до сих пор не могу понять его назначение, потому что он слишком сложен для интерпретации. есть еще один вопрос о примитиве, после прочтения которого я предположил, что он создает какое-то двунаправленное соединение, но я не смог понять, как это связано с тем, что выходной контакт "тристамирован".
Буду признателен за высокоуровневое описание эффекта ячейки SB_IO
при данной конкретной конфигурации. Какой вывод подключен к какому выводу? Какие входы и какие выходы? Какова цель создания этой ячейки?