Submit Search
Upload
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
•
0 likes
•
6,081 views
M
marsee101
Follow
FPGAでの非同期信号の扱い方とVivadoによる非同期信号のサポートについてのスライドです。 第19回分子科学研究所技術研究会で発表しました。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 19
Download now
Download to read offline
Recommended
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
直久 住川
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
marsee101
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
Recommended
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
直久 住川
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
marsee101
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Jun Ando
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
Sw技術者に送るfpga入門
Sw技術者に送るfpga入門
直久 住川
fpgax #13.pptx
fpgax #13.pptx
YNLP6m
How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
marsee101
Introduction of ISHI-KAI with OpenMPW
Introduction of ISHI-KAI with OpenMPW
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
なおき きしだ
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
直久 住川
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
Kondo Hitoshi
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
marsee101
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
XilinxのxsimでSoftware Driven Verification.pdf
XilinxのxsimでSoftware Driven Verification.pdf
Mr. Vengineer
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Shinya Takamaeda-Y
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
ksk sue
スタートアップ機能の等価回路モデル
スタートアップ機能の等価回路モデル
マルツエレック株式会社 marutsuelec
More Related Content
What's hot
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
直久 住川
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Jun Ando
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
Sw技術者に送るfpga入門
Sw技術者に送るfpga入門
直久 住川
fpgax #13.pptx
fpgax #13.pptx
YNLP6m
How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
marsee101
Introduction of ISHI-KAI with OpenMPW
Introduction of ISHI-KAI with OpenMPW
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
なおき きしだ
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
直久 住川
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
Kondo Hitoshi
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
marsee101
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
XilinxのxsimでSoftware Driven Verification.pdf
XilinxのxsimでSoftware Driven Verification.pdf
Mr. Vengineer
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Shinya Takamaeda-Y
What's hot
(20)
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
Sw技術者に送るfpga入門
Sw技術者に送るfpga入門
fpgax #13.pptx
fpgax #13.pptx
How to run P4 BMv2
How to run P4 BMv2
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
Introduction of ISHI-KAI with OpenMPW
Introduction of ISHI-KAI with OpenMPW
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
Zynq mp勉強会資料
Zynq mp勉強会資料
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
XilinxのxsimでSoftware Driven Verification.pdf
XilinxのxsimでSoftware Driven Verification.pdf
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Similar to Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
ksk sue
スタートアップ機能の等価回路モデル
スタートアップ機能の等価回路モデル
マルツエレック株式会社 marutsuelec
RSQB Flip Flopの等価回路モデル
RSQB Flip Flopの等価回路モデル
マルツエレック株式会社 marutsuelec
130831 fpgax3 yos
130831 fpgax3 yos
Mikio Yoshida
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法
Tsuyoshi Horigome
ULVOの等価回路モデル
ULVOの等価回路モデル
マルツエレック株式会社 marutsuelec
高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日
貴大 山下
VHDL-2008が好きなんです
VHDL-2008が好きなんです
windy12806
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
mao999
20140910 Arduino for beginners
20140910 Arduino for beginners
Kenichi Ohwada
20181117 arduino basicbeta2
20181117 arduino basicbeta2
Chiehwun
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
Kentaro Ebisawa
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
マイコンロボット実習
マイコンロボット実習
Takehiko YOSHIDA
Raspberry Jam #1 20121229
Raspberry Jam #1 20121229
Hideki Aoshima
VTI の中身
VTI の中身
Masakazu Asama
発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発
貴大 山下
Fftw誰得ガイド
Fftw誰得ガイド
chunjp
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
Takeshi HASEGAWA
Similar to Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
(20)
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
スタートアップ機能の等価回路モデル
スタートアップ機能の等価回路モデル
RSQB Flip Flopの等価回路モデル
RSQB Flip Flopの等価回路モデル
130831 fpgax3 yos
130831 fpgax3 yos
UVLOの等価回路モデル作成方法
UVLOの等価回路モデル作成方法
ULVOの等価回路モデル
ULVOの等価回路モデル
高位合成友の会@ドワンゴ,2015年12月8日
高位合成友の会@ドワンゴ,2015年12月8日
VHDL-2008が好きなんです
VHDL-2008が好きなんです
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
4章 Linuxカーネル - 割り込み・例外 2
4章 Linuxカーネル - 割り込み・例外 2
20140910 Arduino for beginners
20140910 Arduino for beginners
20181117 arduino basicbeta2
20181117 arduino basicbeta2
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
Android デバッグ小ネタ
Android デバッグ小ネタ
マイコンロボット実習
マイコンロボット実習
Raspberry Jam #1 20121229
Raspberry Jam #1 20121229
VTI の中身
VTI の中身
発表資料 Fortranを用いた高位合成技術FortRockの開発
発表資料 Fortranを用いた高位合成技術FortRockの開発
Fftw誰得ガイド
Fftw誰得ガイド
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
More from marsee101
Robot car gabor_filter
Robot car gabor_filter
marsee101
Ultra96 pmod expansion board
Ultra96 pmod expansion board
marsee101
Camera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connector
marsee101
Fpga robot car
Fpga robot car
marsee101
FPGAスタートアップ資料
FPGAスタートアップ資料
marsee101
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
marsee101
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
marsee101
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
marsee101
FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
marsee101
MPSoCのPLの性能について
MPSoCのPLの性能について
marsee101
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
marsee101
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
marsee101
More from marsee101
(12)
Robot car gabor_filter
Robot car gabor_filter
Ultra96 pmod expansion board
Ultra96 pmod expansion board
Camera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connector
Fpga robot car
Fpga robot car
FPGAスタートアップ資料
FPGAスタートアップ資料
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
MPSoCのPLの性能について
MPSoCのPLの性能について
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Recently uploaded
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Recently uploaded
(11)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
1.
FPGA での非同期信号の扱い方と Vivado によるサポート marsee
2.
2 非同期信号とは? ● 非同期信号 – 回路の使用しているクロックに同期していない信号 ● 非同期信号の種類 – 完全に非同期な信号 ● スイッチ入力(人間がスイッチを押す) –
異なるクロックで動作する回路の出力を入力する ● PS2 ● I2C ● SPI ● 非同期信号を FPGA に入力する場合に問題が発生する
3.
3 非同期信号を入力する場合 ● 回路のクロックに同期していない入力 – 入力信号の変化する部分にクロックの立ち上がりが来て しまう場合もある クロック 入力 クロック 入力 たぶん OK 問題発生
!!!
4.
4 メタステーブル状態 ● フリップフロップ (FF) にはセットアップ時間とホール ド時間がある ● それらを満たせないと不安定な出力が出る場合がある 図は
FPGA 2.0 、コラム : 非同期クロック と 検証手法 -2 から引用 http://www.altima.jp/products/sofware/mentor/fv/column/cdc-2.html 組み合わせ回路
5.
5 メタステーブルの対処方法 ● FF を 2
段以上入れる ● ● ● 私の対処方法 – Vivado IPI で Synchronizer IP を自分で作成 図は FPGA 2.0 、コラム : 非同期クロック と 検証手法 -3 から引用 http://www.altima.jp/products/sofware/mentor/fv/column/cdc-3.html
6.
6 Synchronizer IP の設定画面 ● Bit
Widths で FF のビット幅を 設定 ● Number Of Stages で FF を 何段接続するか を設定
7.
7 synchronizer.v module Synchronizer #( parameter
integer NUMBER_OF_STAGES = 2, parameter integer BIT_WIDTHS = 1 )( input wire clk, input wire [BIT_WIDTHS-1:0] inp, output wire [BIT_WIDTHS-1:0] outp ); integer i; reg [BIT_WIDTHS-1:0] f[NUMBER_OF_STAGES-1:0]; always @(posedge clk) begin : proc_gen_f for (i=0; i<=NUMBER_OF_STAGES-1; i=i+1) begin if (i==0) begin f[i] <= inp; end else begin f[i] <= f[i-1]; end end end assign outp = f[NUMBER_OF_STAGES-1]; endmodule
8.
8 Synchronizer IP の使用場所
9.
9 FPGA 内部でのクロックの数 ● 畳み込みニューラルネットワークによる白線間走行ミ ニ・ロボットカーのクロック数 ー
5 個 – AXI4 インターフェース・クロック 100MHz – カメラ用出力クロック 72MHz – カメラ用入力クロック 36MHz – ディスプレイ・コントローラ用クロック( SVGA ) 40MHz – ディスプレイ・コントローラ用クロック( XGA ) 65MHz
10.
10 クロックの異なる回路間での信号の受け渡し ● 入力に 2 段以上の
FF を付ける ● 入力は少なくともクロックの 3 倍を超える長さが良い クロック 信号 全くダメ クロック 信号 もう一声 大丈夫! クロック
11.
11 異なるクロック間でのデータは? ● 低速で良いのならばハンドシェークで – VALID, ACK –
データを出力と同時に VALID – データを受け取ったら ACK を返す – ACK は落ちるのも見る VALID DATA ACK DATA0
12.
12 異なるクロック間でのデータは? 2 ● 非同期 FIFO –
入力データと出力データのクロックが異なる FIFO – Xilinx の FIFO Generator
13.
13 同期 FIFO の構造 FPGA
の部屋 「同期 FIFO と非同期 FIFO 」 http://marsee101.blog19.fc2.com/blog-entry-1085.html
14.
14 非同期 FIFO の構造 図は
Advanced FPGA Design: Architecture, Implementation, and Optimization, 96 ペー ジ、 Figure 6.14 Simplified asynchronous FIFO を参考にした FPGA の部屋 「同期 FIFO と非同期 FIFO 」 http://marsee101.blog19.fc2.com/blog-entr y-1085.html
15.
15 自作のカメラ・インターフェース IP での 非同期信号の取り扱い ● last_pixel_4_line は行のピクセル最 後のデータ ● first_pixel
はフ レームの最初の データ ● 制御信号もデータ と一緒に非同期 FIFO へ入力 // pixel FIFO をインスタンスする pixel_fifo pfifo ( .rst(areset), // input rst .wr_clk(pclk), // input wr_clk .rd_clk(aclk), // input rd_clk .din({last_pixel_4_line, first_pixel, rgb565_1d}), // input [33 : 0] din .wr_en(line_v_1d_odd_2d), // input wr_en .rd_en(pfifo_rd_en), // input rd_en .dout(pfifo_dout), // output [33 : 0] dout .full(pfifo_full), // output full .almost_full(pfifo_almost_full), // output almost_full .overflow(pfifo_overflow), // output overflow .empty(pfifo_empty), // output empty .almost_empty(pfifo_almost_empty), // output almost_empty .underflow(pfifo_underflow), // output underflow .rd_data_count(pfifo_rd_data_count) // output [9 : 0] rd_data_count );
16.
16 ビットマップ・ディスプレイ・コントローラ IP での 非同期信号の取り扱い ● vsync_node は
clk_disp で 出力されてい る ● 2 段の FF をか まして vsyncx_rise_ pulse を出力 // vsync を clk_axi で同期化 always @(posedge clk_axi) begin if (reset_axi) begin vsync_axi <= 1'b0; vsync_axi_b1 <= 1'b0; vsync_axi_1d <= 1'b0; end else begin vsync_axi_b1 <= ~vsyncx_node; vsync_axi <= vsync_axi_b1; vsync_axi_1d <= vsync_axi; end end // vsyncx_rise_pulse の処理。 vsyncx の立ち上がり時に 1 パルス出力する always @(posedge clk_axi) begin if (reset_axi) vsyncx_rise_pulse <= 1'b0; else begin if (vsync_axi==1'b0 && vsync_axi_1d==1'b1) vsyncx_rise_pulse <= 1'b1; else vsyncx_rise_pulse <= 1'b0; end end
17.
17 Vivado の機能( Clock
Domain Crossing ) ● Vivado の Flow Navigator から Open Implemented Design を開いて、 Tools メニュー -> Timing -> Report CDC... を選択する ● Report CDC ダイアログの From と To に解析するク ロック・ドメインを指定しして OK ボタンをクリック ● デモします ● FPGA の部屋「 Vivado の Implemented Design で Report CDC を確認する」参照 – http://marsee101.blog19.fc2.com/blog-entry-3337. html
18.
18 まとめ(最後はですます調に変調します) ● 非同期信号を受ける場合は必ず 2 段以上の
FF で受けて から使いましょう ● クロックが異なる回路とやり取りをするときは十分に注 意しましょう ● データはなるべく非同期 FIFO で渡しましょう ● Vivado の Implemented Design には Report CDC と いうクロック載せ替えのためのレポート機能があります
19.
19 参考文献 ● 【 FPGA 】内部生成リセットやリセットの混合使用【リ セット回路】 –
http://fpgainfo.blog.fc2.com/blog-entry-92.html ● コラム : 非同期クロック と 検証手法 -1 – http://www.altima.jp/products/software/mentor/fv /column/cdc-1.html ● 非同期信号を扱うための危うい Verilog ライブラリ – http://dora.bk.tsukuba.ac.jp/~takeuchi/?cmd=read &page=%E9%9B%BB%E6%B0%97%E5%9B%9E%E8%B7%AF%2FHDL %2F%E9%9D%9E%E5%90%8C%E6%9C%9F%E4%BF%A1%E5%8F%B7 %E3%82%92%E6%89%B1%E3%81%86%E3%81%9F%E3%82%81%E3 %81%AE%E5%8D%B1%E3%81%86%E3%81%84Verilog%E3%83%A
Download now