Submit Search
Upload
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
•
0 likes
•
6,070 views
M
marsee101
Follow
FPGAでの非同期信号の扱い方とVivadoによる非同期信号のサポートについてのスライドです。 第19回分子科学研究所技術研究会で発表しました。
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 19
Download now
Download to read offline
Recommended
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
Shinya Takamaeda-Y
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Recommended
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
Shinya Takamaeda-Y
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
VerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Linux : PSCI
Linux : PSCI
Mr. Vengineer
The linux networking architecture
The linux networking architecture
hugo lu
Fun with Network Interfaces
Fun with Network Interfaces
Kernel TLV
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Kiyoshi Ogawa
Androidでvulkan事始め
Androidでvulkan事始め
章暢 藤井
Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
NVIDIA Japan
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
直久 住川
Accelerating Virtual Machine Access with the Storage Performance Development ...
Accelerating Virtual Machine Access with the Storage Performance Development ...
Michelle Holley
Présentation FPGA
Présentation FPGA
Yann Sionneau
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
Mr. Vengineer
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
Tsuyoshi OZAWA
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
直久 住川
2011年度 新3年生向け
2011年度 新3年生向け
Yuki Takahashi
mTCP使ってみた
mTCP使ってみた
Hajime Tazaki
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
llvm入門
llvm入門
MITSUNARI Shigeo
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
ksk sue
スタートアップ機能の等価回路モデル
スタートアップ機能の等価回路モデル
マルツエレック株式会社 marutsuelec
More Related Content
What's hot
Linux : PSCI
Linux : PSCI
Mr. Vengineer
The linux networking architecture
The linux networking architecture
hugo lu
Fun with Network Interfaces
Fun with Network Interfaces
Kernel TLV
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
marsee101
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Kiyoshi Ogawa
Androidでvulkan事始め
Androidでvulkan事始め
章暢 藤井
Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
NVIDIA Japan
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
直久 住川
Accelerating Virtual Machine Access with the Storage Performance Development ...
Accelerating Virtual Machine Access with the Storage Performance Development ...
Michelle Holley
Présentation FPGA
Présentation FPGA
Yann Sionneau
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
Mr. Vengineer
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
Tsuyoshi OZAWA
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
直久 住川
2011年度 新3年生向け
2011年度 新3年生向け
Yuki Takahashi
mTCP使ってみた
mTCP使ってみた
Hajime Tazaki
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
llvm入門
llvm入門
MITSUNARI Shigeo
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
What's hot
(20)
Linux : PSCI
Linux : PSCI
The linux networking architecture
The linux networking architecture
Fun with Network Interfaces
Fun with Network Interfaces
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
Androidでvulkan事始め
Androidでvulkan事始め
Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
x86とコンテキストスイッチ
x86とコンテキストスイッチ
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
Accelerating Virtual Machine Access with the Storage Performance Development ...
Accelerating Virtual Machine Access with the Storage Performance Development ...
Présentation FPGA
Présentation FPGA
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
2011年度 新3年生向け
2011年度 新3年生向け
mTCP使ってみた
mTCP使ってみた
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
llvm入門
llvm入門
Zynq mp勉強会資料
Zynq mp勉強会資料
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
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
marsee101
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
marsee101
FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
marsee101
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
MPSoCのPLの性能について
MPSoCのPLの性能について
marsee101
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
marsee101
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
marsee101
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
marsee101
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
marsee101
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
marsee101
More from marsee101
(17)
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 コーナー検出
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
MPSoCのPLの性能について
MPSoCのPLの性能について
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会5(axi4 stream)
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会4(axi4 master)
Vivado hls勉強会3(axi4 lite slave)
Vivado hls勉強会3(axi4 lite slave)
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
Recently uploaded
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Recently uploaded
(10)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
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