注目の投稿

移転

移転しました(2020.03) →  https://akehi.github.io/ ---- ・GitHub Pages使ってみたかった ・HTMLファイルをそのまま公開できるのが手軽でいいなと思った ・・JupyterとかMarkdown+PlantUMLとかで書い...

2017/08/29

SPI Slave

・mosiポートに到達した波形とrx レジスタの値が一致しない
・tx レジスタにセットした値がmisoポートから出力されない

同様の質問をフォーラムで発見
https://alteraforum.com/forum/showthread.php?t=42909
→Qsys optionの Insert_SynchronizerをEnableにしたら解決したらしい.
手元の実機でも同様の結果が得られた.

Depth=2とか3とかから察するにClock Domain CrossingのためにDFFを挿入するオプションではないかと予想.
MasterモードのときはNiosクロックを分周してSPIクロックを作っているようなので,タイミング的に上手く動作するようなHDLデザインになっているのだろう.逆に外部のクロックソース駆動のSlaveモードではSyncronizerが必須ということか.



追記
RTLViewerで見ると外部CLKソース入力の直後にD-FFが2つ挿入されていた.予想は当たっていたようだ.
D-FF2つをまとめたコンポーネントとしてaltera_std_synchonizerが提供されているっぽい.使い方は以下のフォーラム参照.今度使ってみよう.
https://alteraforum.com/forum/showthread.php?t=22230