FC2カウンター FPGAの部屋 非同期外部入力に xpm_cdc を使用する
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

非同期外部入力に xpm_cdc を使用する

これまで、uart_rx や uart_tx を作ってきたが、uart_rx の入力は自分の FPGA の内部クロックに同期していない信号となる。そこで、自分の内部クロックに同期させる必要があるわけだ。以前は、Synchronizer IP を自分で作っていたのだが、 ”Vivado 2020.2 の新機能1”で紹介したように、新たに xpm_cdc IP が追加されたので、使ってみよう。

なぜ、自分の内部クロックに同期させる必要があるかわからない方は”Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)”を参照のこと。

uart_rx, uart_rx_axi4ls, uart_tx を接続したブロックデザインを示す。
uart_rx の rxst_V_dout[0:0] の前段に xpm_cdc IP が接続されている。
xpm_cdc_1_210228.png

外部入力の rx_422_rx0 を xpm_cdc の src_in に入力して、dest_out から uart_rx の rxst_V_dout[0:0] に入力されている。
src_clk と dest_clk は uart_rx の ap_clk に接続されている。UART では、src_clk が無いので、何処に接続したものか?と悩んだが、後で述べるように、これで良さそうだ。

xpm_cdc_gen_0 の設定を見てみよう。
CDC Type は Single-bit Synchronizer に設定した。
INPUT REGISTER FOR SOURCE CLOCK DOMAIN は src_clk が無いので、チェックを外した。
xpm_cdc_2_210228.png

CDC-Type の設定値を見てみよう。
xpm_cdc_3_210228.png

論理合成後の xpm_cdc の Schematic を見てみよう。
dest_clk をクロックにいれた 4 段の FF があるのが分かる。これで良さそうだ。
xpm_cdc_4_210301.png
  1. 2021年03月03日 03:27 |
  2. IP
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5164-3d188ded
この記事にトラックバックする(FC2ブログユーザー)