日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

クロックを越えたら制御信号が化けた

今日、LVDSの通信モジュールで起きていた不可解な現象が見事に解決できた。

原因は異なるクロックをまたぐ信号の転送時に起きていたようだ。


LVDSのクロックとメインクロックが異なるため、この間で信号の受け渡しが必要になる。

データについては複数のバッファを設けて、タイミングに余裕を持って受け渡しできるようにしていた。

なので、データは化けることはなかった。

問題は制御用の信号がクロックをまたぐところだった。


制御用の信号をメインクロックで取り込んで、

それで制御信号の1つが変化したところをとらえてメモリの書き込みを制御するようになっている。

この制御信号は複数ビットで構成されているのだが、

信号の変化がクロックに対してギリギリだと、一部のビットが変化し、一部のビットが変化しないなんて現象が起きていたようだ。

ただし、Spartan-6から送出したクロックからメインクロックの受け渡しではそのような問題は生じず、

Spartan-3から送出したクロックからメインクロックへの受け渡しに限ってこのような問題が起きていたようで、

それも回路によっては顕著に表れず、原因の追及には大変苦労した。


単にクロックをまたいで信号を受け渡しするだけで信号が化けるとは思ってもいなかった。

配置配線結果を見てみると、ビットにより回路構成が異なることがわかり、

それを全ビットで同じ構成になるように調整しようとしたのだがうまくいかなかった。

よっぽど厳しい制約を加えれば全ビットで同時に受け渡しが起きるようにできるのかもしれないが、それは現実的ではないだろう。


そこで取った対策だが、クロック間で受け渡しが生じる制御信号を1ビットだけにした。

1ビットだけに絞り込んでもなんとか動作させられる構成にできそうだったので、

1ビットだけならビット間でのずれは当然気にしなくてよいだろうと。

指導教員は制御信号の変化を拾って1クロック待つという方法もあるのではないかとアドバイスをくれた。

変化した瞬間に全ビットが変化しているかは確かではないが、1クロック待てば確実に取り込まれているはずだと。

正攻法はこれかもしれんね。複数ビットの制御信号が必要な場合はこの方法でやらないといけないし。

ただしメインクロックの1クロック以内に制御信号が変化しないという条件が必要だが。


データの受け渡しは余裕を持った設計になっていたが、

制御信号はあまり問題はないだろうと甘く見ていたのがよくなかった。

ただ、Spartan-6からのクロックなら問題なく動いていたというのはなんでなんだろうね。

クロックを生成するDCMの性能の差かというようなことは言ってたけどよくわからんね。

いずれにしてもこれまで制御信号のクロック間受け渡しはかなりシビアであったのは確かで、

安定した動作には、それをどうにかする必要はあったのが、こうして解決できたのはよかったのかなと。

これなら他のFPGAに移植してもいけるでしょう。多分ね。


Author : hidemaro
Date : 2013/08/23(Fri) 23:57
研究・実験 | Comment | trackback (0)

Tools