これはおそらく yosys よりも iCEstick に関する質問ですが、Icestorm ツール チェーンを使用しているため、ここで質問します。
インターネット上のさまざまな場所が同意しているように見える、私のデザインのスタートアップ動作を指定したいと思います。これは、一般的に名前が付けられたrst
信号に関連しています。そのような信号がどこから来るのかは私には明らかではなかったので、私は電源投入シーケンスを掘り下げました. 現在の理解は、このドキュメントの図 2 からのものです。
デバイスによって がハイに引き上げられた後CDONE
、すべての内部レジスタが初期値にリセットされます。さて、各タイプのフリップフロップまたはハード IP がリセット信号を受信し、その内部状態で何かを行う方法についてのラティス ドキュメントをたくさん見つけましたが、それらの状態が何であるかを指定する方法をまだよく理解していません (またはそれらが何であるかを知っているだけでも、それらを使用できます)。
たとえば、電源投入後 (電源投入後のみ) 1 秒間 LED をハイにしたい場合、このリセット信号 (それが何であれ) が無効になった後にカウンターを開始する必要があります。
ice40ファミリのデータ シートとラティスのサイトを調べていると、グローバル セット/リセット信号の使用に関するこのドキュメントが見つかりました。GSR
これはファミリ データ シートの 2-3 ページの「クロック/制御分配ネットワーク」で参照されていることを確認しました。グローバル リセット信号は、グローバル バッファーの 1 つで使用GBUF[0-7]
でき、グローバル/高ファンアウト分配ネットワークを使用してすべての LUT に (最大 4 つ) ルーティングできるようです。
これはまさに私が求めていたもののようですが、私のデザインでこれを使用する方法についての他の情報は見つかりません. GSR の使用に関するドキュメントには、次のようにネイティブ GSR コンポーネントをインスタンス化できると記載されています。
GSR GSR_INST (.GSR (<global reset sig>));
しかし、これがシミュレーションのためだけのものかどうかはわかりません。ここで私は完全に間違った方向に進んでいますか、それとも何かが欠けているだけですか? 私はFPGAとハードウェアに非常に慣れていないので、私のアプローチ全体に欠陥がある可能性は十分にあります。