这可能更多是与iCEstick有关的问题,而不是yosys的问题,但我在这里提问,因为我正在使用Icestorm工具链。
例如,如果我想在上电后将LED高电平保持1秒钟(仅在上电后),我希望在此复位信号(无论它是什么)禁用后启动一个计数器。
我想指定我的设计的启动行为,互联网上的许多地方似乎都认为这与通常命名为rst
信号有关。对于这样的信号来自哪里并不明显,因此我深入研究了上电序列。目前的理解来自this document中的图2。
CDONE
被设备拉高后,所有内部寄存器都被重置为某个初始值。现在,我已经找到了大量关于每种触发器或硬件IP如何接收复位信号并对其内部状态执行某些操作的Lattice文档,但我仍然不太明白如何指定这些状态(甚至只是知道它们以便我可以使用它们)。例如,如果我想在上电后将LED高电平保持1秒钟(仅在上电后),我希望在此复位信号(无论它是什么)禁用后启动一个计数器。
我在浏览ice40系列数据手册和Lattice网站时,发现了这篇关于使用全局设置/复位信号的文档。我确认了这个GSR
在系列数据手册中被提到,在“时钟/控制分配网络”下的第2-3页有引用。似乎一个全局复位信号可以被一个全局缓冲器GBUF[0-7]
使用,并且可以通过全局/高扇出分配网络路由(最多4个)到所有的LUT。
GSR GSR_INST (.GSR (<global reset sig>));
但我无法确定这是否仅用于模拟。我是完全走错方向了还是遗漏了什么?由于我对FPGA和硬件非常缺乏经验,因此我的整个方法可能存在缺陷。