当我使用 Yosys 和 arachne-pnr 合成一个空电路时,我得到一些不规则的位:
.io_tile 6 17
IoCtrl IE_1
.io_tile 6 0
IoCtrl REN_0
IoCtrl REN_1
这些也是到目前为止我可以生成的所有其他文件的一部分。由于未使用的 I/O tile 设置了两个 IE 位,因此我将其读取为:
- 对于 IE/REN 块 6 17 0,启用输入缓冲区
- 对于 IE/REN 块 6 0 0,启用输入缓冲器,禁用上拉电阻
- 对于 IE/REN 模块 6 0 1,启用输入缓冲器,禁用上拉电阻
但是,根据文档,没有 IE/REN block 6 17 0。这些位是什么意思?如果块 6 17 0 的 IE 位由于该块不存在而未设置,那么为什么其他不存在的块的位也未设置?其他 IE/REN 块似乎对应于 I/O 块 6 0 1 和 7 0 0。这些块有什么作用,为什么它们总是配置为输入?
技术库条目没有SB_IO
提到 IE 位。它与 PIN_TYPE 参数设置有什么关系?
当我使用 I/O 引脚作为输入时,设置 REN 位(禁用上拉电阻)。这表明上拉电阻主要用于防止未使用的引脚悬空,而不是为有条件连接的输入(例如按钮)提供上拉电阻。这个假设正确吗?可以为此目的使用内部上拉电阻吗?
技术库说如下:
defparam IO_PIN_INST.PULLUP = 1'b0;
// By default, the IO will have NO pull up.
// This parameter is used only on bank 0, 1,
// and 2. Ignored when it is placed at bank 3
这是否意味着 bank 3 没有上拉电阻,或者仅仅意味着它们不能使用 Verilog 重新启用?如果我手动清除 ASCII 比特流中的那个比特会发生什么?(我会尝试这个,但 iCEstick 评估板无法访问 bank 3 上的任何引脚 - 巧合? - 我不确定我是否想弄乱硬件。)
当我使用 I/O 引脚作为输出时,IE 位不会被清除,但输入引脚功能设置为 PIN_INPUT。这有什么影响,为什么要这样做?