2016年6月19日日曜日

FPGAでLチカ 2 (iCE40の場合)

前々回のブログで、水晶発振器やCR等の外付け部品を使わずFPGAのみを使ってLチカを実現する方法を考え、FPGAのSLICEでリングオシレータを作ってそれをクロック源としてLチカを実現した。その時使用したFPGAはLatticeのXO2だったが、世界最小クラスかも知れないFPGAボード搭載のiCE40でも同様の実験をやってみた。

以下のようにリングオシレータを3506段のトランスペアラレントラッチとして記述した。



XO2の場合はSLICE内のレジスタがラッチモードで使用されていたが、iCE40ではLUTが使われていた。iCE40のレジスタはラッチとしての動作モードを持っていないのかも知れない。トランスペアレントラッチ記述でリングオシレータを作成するという方法自体は旨く行った。

出力信号の周波数は118.5KHzだったが、RTLを見て判るとおりリングオシレータで生成した信号をクロックとして出力用F/Fをトグルさせているので発振周波数はこの2倍の237KHzとなる。

段数が最小の場合も見てみた。

発振周波数は155.3MHzの倍なので310.6MHzだった。



0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...