这可能是一个iCEstick问题,而不是yosys问题,但是由于我使用的是Icestorm工具链,所以在这里提出了问题。
我想指定设计的启动行为,互联网上的各个地方似乎都同意这种启动行为与通常命名的rst信号有关。对于我来说,这种信号的来源并不明显,所以我深入研究了通电序列。当前的理解来自本文档中的图2 。
CDONE器件将其拉高后,所有内部寄存器均已复位为某个初始值。现在,我已经找到了大量关于每种类型的触发器或硬IP如何接收复位信号并对其内部状态进行处理的点阵文档,但我仍然不太了解如何指定这些状态(或甚至只知道它们是什么,所以我可以使用它们)。
例如,如果我想在通电后(且仅在通电后)将LED高电平显示1秒钟,那么我想在此复位信号(无论它是什么)禁用后启动一个计数器。
在ice40系列数据表和Lattice站点上浏览时,我找到了有关使用Global Set / Reset信号的文档。我确认GSR在系列数据表中对此进行了提及,该数据表在第2-3页的“时钟/控制分配网络”下引用。全局复位信号似乎可由全局缓冲器之一使用,GBUF[0-7]并且可以通过全局/高扇出分配网络路由到所有LUT(最多4个)。
这似乎和我追求的完全一样,但是我找不到有关如何在设计中使用此信息的其他信息。有关使用GSR的文档指出,您可以像这样实例化本机GSR组件:
GSR GSR_INST (.GSR (<global reset sig>));
Run Code Online (Sandbox Code Playgroud)
但是我不能说这是否只是为了模拟。我在这里完全是朝错误的方向前进还是只是缺少一些东西?我对FPGA和硬件没有足够的经验,因此我的整个方法完全有缺陷。