Vivado IP Integratorでよく使う便利なIPコア16選

## はじめに
Vivado IP Integrator では非常に多くのIPコアが無料で使えます。
その中でも私が頻繁に使う、簡単に扱えて便利なものだけをまとめて紹介したいと思います。

## ワイヤ接続系
### Concat
2本のバスを1本にまとめる事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/12cc5d50-9fe2-9708-42b5-7af86eed254f.png)


### Slice
1本のバスのうち、指定した範囲だけを取り出すことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/d8467cae-78bd-bd3b-1159-d99f179bcdcd.png)


### Constant
指定したバス幅、値の定数を出力することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/5dd4a5eb-f836-1c59-b7a8-c300b78c8078.png)


## 論理演算系
### Utility Vector Logic
2入力間で論理演算することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/a6753fdf-5400-ddb1-0187-b3d1a356d73e.png)

### Utility Reduced Logic
1入力でビット間の論理演算をすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/a8b0e319-6d6d-e63f-0f10-d24b4e198db6.png)

## 算術演算系
### Adder/Subtracter
S = A ± B
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/2e7dbb44-b530-3856-f4d0-5b9ef2764eff.png)


### Accumulator
Q = Q ± B
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/8cbec055-cf27-acc4-0a83-cbdb7b5bb8fc.png)


### Multiplier
P = A * B
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/c9a8d337-3d26-8bdd-ddc4-fbc2cb11b3ec.png)


### Multiply Adder
P = A * B + C
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/563533ee-2fe3-d8ff-c659-86307b9153c5.png)


## クロック系
### Clocking Wizard
1つのクロック入力から、複数種類のクロックを生成することができます。
例えば、100MHzのクロックを入力して、50MHzのクロック、100MHzで位相が90°ずれたクロック、150MHzのクロックなど
任意に周波数と位相を指定して生成することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/1503d83d-1b4a-210c-d82a-a5b795b2a10f.png)


## バッファ系
### Utility Buffer
差動入出力バッファやクロック用バッファなどを指定して使うことができます。
差動のクロックを外部から入力したりするときに便利です。
参考: https://japan.xilinx.com/support/documentation/user_guides/j_ug471_7Series_SelectIO.pdf
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/ec824492-a4a4-cdd9-94c8-e04434603063.png)


## デバッグコア系
### System ILA / ILA
FPGA内部に組み込むロジックアナライザのようなブロックです。
FPGA内部の信号が実機動作中にどのような状態になっているのか、Vivadoの画面から見ることができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/87497d88-e1c2-a4bb-1188-8dd0c59d4344.png)

### Virtual Input/Output
Vivadoの画面から指定した信号をFPGA内部に出力したり、内部の信号を見たりすることができます。
リセットボタンの代わりに使ったり、IPコアのパラメータを動的に変更したりするのに便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/f324bc17-7cf1-77af-3fe0-e3c877a6be6f.png)

## シミュレーション系
### Simulation Clock Generator
ブロックデザインをシミュレーションするときに、クロック源リセット源として動作します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/0896b703-d964-2aa1-e191-8bcf9fec0e4d.png)

## Simulation Reset Generator
ブロックデザインをシミュレーションするときにリセット源として動作します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/576120b5-2a2e-c13d-6a8d-042df635898d.png)


## その他
### Binary Counter
クロックをカウントしてQに出力します。
クロック出力が動いているのをLEDに出力して確認したり、のこぎり波を作ったり、タイマーに使ったり、いろいろ便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410452/5f0415ec-4688-7a71-c972-3a9849d52354.png)

## 参考
http://marsee101.blog19.fc2.com/blog-entry-3209.html