当我使用 Yosys 和 arachne-pnr 合成一个空电路时,我得到了一些不规则的位:
\n\n.io_tile 6 17\nIoCtrl IE_1\n\n.io_tile 6 0\nIoCtrl REN_0\nIoCtrl REN_1\nRun Code Online (Sandbox Code Playgroud)\n\n这些也是我迄今为止可以生成的所有其他文件的一部分。由于未使用的 I/O 块同时设置了 IE 位,因此我将其读作:
\n\n但是,根据文档,没有 IE/REN 块 6 17 0。\n这些位的含义是什么?如果因为块不存在而未设置块 6 17 0 的 IE 位,为什么其他不存在块的位也未设置呢?其他 IE/REN 块似乎对应于 I/O 块 6 0 1 和 7 0 0。这些块的作用是什么?为什么它们总是配置为输入?
\n\n技术库条目SB_IO没有提及 IE 位。与PIN_TYPE参数设置有何关系?
当我使用 I/O 引脚作为输入时,REN 位被设置(上拉电阻被禁用)。这表明上拉电阻主要是为了防止未使用的引脚浮动,而不是为有条件连接的输入(例如按钮)提供上拉电阻。这个假设正确吗?使用内部上拉电阻可以达到这个目的吗?
\n\n技术库的说法如下:
\n\ndefparam IO_PIN_INST.PULLUP = 1\'b0;\n// By default, the IO will have NO pull up.\n// This parameter is used only on bank 0, 1,\n// and 2. Ignored when it is placed at bank 3\nRun Code Online (Sandbox Code Playgroud)\n\n这是否意味着组 3 没有上拉电阻,或者仅仅意味着它们无法使用 Verilog 重新启用?如果我手动清除 ASCII 比特流中的该位会发生什么?(我会尝试这个,但 iCEstick 评估板不会使银行 3 上的任何引脚可访问 \xe2\x80\x93 是巧合吗?\xe2\x80\x93 并且我不确定我是否想要还得搞乱硬件。)
\n\n当我使用 I/O 引脚作为输出时,IE 位不会被清除,但输入引脚功能被设置为 PIN_INPUT。这有什么效果,为什么这样做?
\n未使用的 IO 引脚的默认行为是启用上拉电阻并禁用输入使能。在 iCE40 1k 芯片上,这意味着在未使用的 IO 块中设置 IE_0 和 IE_1,并清除 REN_0 和 REN_1。(在 8k 芯片上 IE_* 为高电平有效,即 8k 芯片上未使用的 IO 块中的所有位均被清除。)
icebox_explain默认情况下隐藏具有“无趣”内容的图块。(运行icebox_explain -A以禁用此功能。)
看起来arachne-pnr没有为当前封装中不可用的 IO 引脚设置这些位。因此,您会在某些 IO 块中得到一些不寻常的位模式,其中包含未连接到任何封装引脚的 IO 块的 IE/REN 位。
这是 1k 架构上“正常”未使用的 IO 块的样子:
$ icebox_explain -mAt '1 0' example.asc
Reading file 'example.asc'..
Fabric size (without IO tiles): 12 x 16
.io_tile 1 0
B0 ------------------
B1 ------------------
B2 ------------------
B3 ------------------
B4 ------------------
B5 ------------------
B6 ---+--------------
B7 ------------------
B8 ------------------
B9 ---+--------------
B10 ------------------
B11 ------------------
B12 ------------------
B13 ------------------
B14 ------------------
B15 ------------------
IoCtrl IE_0
IoCtrl IE_1
Run Code Online (Sandbox Code Playgroud)
使用内部上拉电阻可以达到这个目的吗?
是的。
SB_IO 的技术库条目没有提及 IE 位。与PIN_TYPE参数设置有何关系?
当D_IN_0或D_IN_1fromSB_IO连接到某物时,则意味着 IE。
当我使用 I/O 引脚作为输出时,IE 位不会被清除
请注意,IE 在 1k 芯片上为低电平有效,在 8k 芯片上为高电平有效。当您在 1k 器件上使用 I/O 引脚作为仅输出引脚时,应设置相应的 IE 位,否则应将其清除。