- Home
- Docs
- FPGA
FPGA
更新日: 2021-02-22
3月 31, 2021
CPU-FPGA間のバス接続#
CPUからFPGAのレジスタを読み書きする場合を考える。
外部接続バス#
CPUの外部バスタイミングは下記の通り(RA6M3のデータシートから抜粋)。

| Parameter |
Symbol |
Min |
Max |
Unit |
| Address delay |
tAD |
- |
12.5 |
ns |
| CS delay |
tCSD |
- |
12.5 |
ns |
| RDn delay |
tRSD |
- |
12.5 |
ns |
| Read data setup time |
tRDS |
12.5 |
- |
ns |
| Read data hold time |
tRDH |
0 |
- |
ns |
| WRn delay |
tWRD |
- |
12.5 |
ns |
| Write data delay |
tWDD |
- |
12.5 |
ns |
| Write data hold time |
tWDH |
0 |
- |
ns |
見ての通り、CPUから出力される信号はクロックの立ち上がりと同期しているので、FPGA側の設計は簡単です。wrがhighになっているときにdataをclkでラッチしてあげれば良い。このタイミングだと2回ラッチすることになるが、問題にならないことが多いだろう。
...
3月 31, 2021
リセット#
リセットには大きく分けて3種類ある。
- 同期リセット
- 非同期リセット
- 同期非同期リセット (INTEL FPGAに推奨)
同期リセット#
完全に同期にリセットされる。リセットタイミングが同一になるので設計が簡単になる。デメリットはリセットのタイミングがclkに同期するので、リセットのタイミングが遅い事。リセットタイミングが遅くても良いのであれば、一番良い選択肢になりうる。
...
3月 31, 2021
同期設計の基本#
同期設計 の基本は下記3点。



...
3月 31, 2021
クロックの分周#
よく源振クロックを分周して1/Nされたクロックを生成することがある。クロック生成の方法と注意点を見ていくことにする。
PLLを使用する#
これば最も推奨される方法となる。FPGAの内部にはPLLが内蔵されており、入力クロックから比較的自由にクロックを生成することが出来る。可能な限りこのクロックを使用するようにする。PLLで生成されたクロックは元のクロックと同期しているため、タイミング検証が容易である。
...
3月 31, 2021
シンクロナイザ#
非同期のクロック間のデータ転送にはある種のテクニックが必要となってくる。
非同期クロック間のデータ転送問題#
何も考えずにデータを転送した場合に発生する問題は大きく分けて二つある。互いに非同期なクロックclk_aからclk_bへ1bitの信号を転送する場合を考える。
...
3月 31, 2021
エディタ#
Quartus Primeの内蔵エディタではなく使い慣れたエディタを使う。下記はvs codeを使用する例。
"C:\Users\<username>\AppData\Local\Programs\Microsoft VS Code\Code.exe" --goto %f:%l
回路図エディタのフォント#
デフォルトのフォントだとゼロとオーの区別がつかないなど視認性に問題がある。このためフォントを変更する。
...