我正在玩clifordwolf/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})
);
我在Lattice iCE40 技术库文档中找到了SB_IO
原语的图形描述,但我仍然无法理解它的用途,因为它对我来说太复杂了无法解释。还有一个问题关于原语的问题,在阅读后我认为它会创建某种双向连接,但我不明白这与使输出引脚“三态”有什么关系。
SB_IO
我将不胜感激在此特定配置下对单元效果的高级描述。哪个引脚连接到哪个引脚?哪些是输入,哪些是输出?实例化这个单元格的目的是什么?