編集履歴一覧に戻る
uchanのアイコン画像

uchan が 2022年02月18日11時24分49秒 に編集

初版

タイトルの変更

+

Gowin UART Master IP 2.0の信号タイミングが仕様書と違う

タグの変更

+

UART

+

Gowin

+

Tang-Nano

+

FPGA

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

セットアップや使用方法

本文の変更

+

Gowin UART Master IP のユーザーガイド[^uart-ug]バージョン 1.5 に信号のタイミング図が追加されたので、現物のタイミングと比較してみたところ、ユーザーガイドの図と実際のタイミングが異なることが分かりました。 [^uart-ug]: https://www.gowinsemi.com/ja/support/ip_detail/3/ ## ユーザーガイドのタイミング図 下図がバージョン 1.5 で追加された SRAM インターフェースのタイミング図です。 ![ユーザーガイドのタイミング図](https://camo.elchika.com/6c6777b1c5afdef52bd5b24071c07d015aa77a95/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f39346262643836322d613035362d343532302d386434362d336466666430666664323839/) 今回注目するのは受信のタイミングです。 I_RX_EN が 1 になった後のクロックの立ち上がりの瞬間(I_CLK の 9 番エッジ)に I_RADDR=rd_addr が UART Master IP コアに取り込まれます。そこから **2 サイクル後**(I_CLK の 11 番エッジ) に O_RDATA の内容が rd_data となります。rd_addr で指定されたレジスタの値が rd_data として取り出せます。 図 3-2 の手前にこのような説明があります。 > インターフェースがある I_CLK クロックの立ち上がりエッジで読み出し要求を検出すると、少なくとももう 2 サイクル待機した後、対応するデータを返します。 文章でも「2 サイクル」と説明されていますね。 ## 実際のタイミング 下図は Tang Nano 4K で UART Master IP 2.0 を動作させたときのタイミング図です。 ![Tang Nano 4Kでの実測値](https://camo.elchika.com/f5d2205bbb51c504581751924f62115eaef7b209/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f65653030306462382d373861352d343033642d616236622d326330383330306337376438/) ユーザーガイドの図と違い、I_RX_EN が 1 になった **1 サイクル後**に O_RDATA が変化していることが分かります。ちなみに、ここで O_RDATA に出力された値は期待通りの値で、特に壊れたりはしていません。 ユーザーガイドの図では、I_RX_EN が 1 になってから 2 サイクルの間は O_RDATA が変化しないように見えますが、現実は違うようです。注意が必要ですね。