我正在使用cliffordwolf/picorv32 32,并且在理解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})
);我在格点iCE40技术库文档中找到了对格点iCE40技术库文档原语的图形描述,但我仍然无法理解它的用途,因为它太复杂了,我无法解释。有关于原语的另一个问题,在阅读之后,我假设它会创建某种双向连接,但我不明白这与使输出引脚"tristated“有什么关系。
我希望能对SB_IO单元在这种特殊配置下的效果进行高级别的描述。哪个引脚与哪个引脚相连?哪些是投入,哪些是产出?实例化这个单元格的目的是什么?
发布于 2020-04-02 08:51:10
之所以使用此实例,是因为当时Yosys在Verilog中没有很好地支持tristate,但在一般情况下,FPGA工具链中的三状态支持并不总是可信的。
可以用以下通用Verilog代替,从0到4重复4次。
assign flash_io0 = flash_io0_oe ? flash_io0_do : 1'bz;
assign flash_io0_di = flash_io0;https://stackoverflow.com/questions/60957971
复制相似问题