【发布时间】:2016-06-25 16:54:00
【问题描述】:
这可能更像是一个 iCEstick 问题而不是一个 yosys 问题,但由于我使用的是 Icestorm 工具链,所以在这里问。
我想指定我的设计的启动行为,互联网上的各个地方似乎都同意这与通常命名的 rst 信号有关。对我来说,这样的信号来自哪里并不明显,所以我深入研究了通电序列。目前的理解来自this document中的图2。
CDONE 被设备拉高后,所有内部寄存器都被重置为某个初始值。现在,我找到了大量关于每种类型的触发器或硬 IP 如何接收复位信号并对其内部状态进行操作的 lattice 文档,但我仍然不太明白我如何指定这些状态是什么(或甚至只知道它们是什么,以便我可以使用它们)。
例如,如果我想在通电后将 LED 拉高 1 秒(并且仅在通电后)我想在此复位信号(无论它是什么)禁用后启动一个计数器。
在ice40 family data sheet 和 Lattice 网站上一探究竟,我找到了this document about using the Global Set/Reset signal。我确认此GSR 已在系列数据表中提及,在“时钟/控制分配网络”下的第 2-3 页中引用。全局复位信号似乎可由全局缓冲区GBUF[0-7] 之一使用,并且可以通过全局/高扇出分布网络路由(最多 4 个)到所有 LUT。
这似乎正是我所追求的,但我找不到任何其他关于如何在我的设计中使用它的信息。使用 GSR 的文档指出,您可以像这样实例化本机 GSR 组件:
GSR GSR_INST (.GSR (<global reset sig>));
但我不知道这是否只是为了模拟。我是完全走错了方向还是只是错过了什么?我对 FPGA 和硬件非常缺乏经验,所以我的整个方法完全有可能存在缺陷。
【问题讨论】: