FC2カウンター FPGAの部屋 GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)
fc2ブログ

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

FPGAの部屋

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

GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)

GPS と 3軸加速度センサーを使ったシステム4(3軸加速度センサーのI2Cを3m伸ばした)”の続き。

GPS と 3 軸加速度センサーを 4 個使ったシステムを作成している。今回は、Vivado 2020.1 の acc_gps_sensor_mb プロジェクトを作成した。これは、MicroBlaze が 5 個と、Zynq の PS の ARM Cortex-A9 を使用したシステムだ。
MicroBlaze は、 4 個の 3 軸加速度センサーにそれぞれ 1 個ずつ使用し、GPS にも MicroBlaze を 1 個使用する。
MicroBlaze は各センサー専任とする。 3 軸加速度センサーの MicroBlaze は PS からの指示があった場合に加速度値を取得して axi_gpio に値をセットする。MicroBlaze の axi_gpio からの主力を PS 側の axi_gpio で受けて、PS 側が加速度値を取得できるようになっている。
PS からの指示はカウンタを使用する。カウント値が以前と異なる場合に 3 軸加速度センサー側の MicroBlaze が加速度値を取得して axi_gpio にセットする。カウント値も axi_gpio で渡すことにする。この間隔は 3.333 ms , 300 Hz とする予定だ。
GPS のデータは 1 秒に 1 回送られてくるので、それを MicroBlaze で取得して、必要なデータのみを axi_gpio 経由で PS が取得する。
基本コンセプトは割り込みを極力使わないシステムということになる。

Vivado の acc_gps_sensor_mb プロジェクトを示す。
acc_gps_sensor_10_201117.png

acc_gps_bd ブロックデザインを示す。
acc_gps_sensor_11_201117.png

4 個の mb_iic_x モジュールと GPS の PPS を取得するための axi_gpio_4 、 gps_uartlite モジュールがある。

mb_iic_0 モジュールの中身を示す。
acc_gps_sensor_12_201117.png

axi_gpio_p00, axi_gpio_p01 が PS に接続されている axi_gpio で、 axi_gpio_m00, axi_gpio_m01 が MicroBlaze 側に接続されている axi_gpio となっている。
後の 3 個の mb_iic_x モジュールも一緒の構成になっている。

mb_iic_1 モジュールの中身を示す。
acc_gps_sensor_13_201117.png

mb_iic_2 モジュールの中身を示す。
acc_gps_sensor_14_201117.png

mb_iic_3 モジュールの中身を示す。
acc_gps_sensor_15_201117.png

gps_uartlite モジュールの中身を示す。
acc_gps_sensor_16_201117.png

axi_uartlite で GPS のシリアルデータを受け取る。

Address Editor を示す。
acc_gps_sensor_17_201117.png
acc_gps_sensor_18_201117.png

制約ファイルの acc_gps_sensor_mb.xdc を示す。

set_property PACKAGE_PIN V8 [get_ports iic_0_scl_io]; # JB,1
set_property PACKAGE_PIN W8 [get_ports iic_0_sda_io]; # JB,2
set_property IOSTANDARD LVCMOS33 [get_ports iic_0_scl_io];
set_property IOSTANDARD LVCMOS33 [get_ports iic_0_sda_io];

set_property PACKAGE_PIN V6 [get_ports iic_1_scl_io]; # JB,9
set_property PACKAGE_PIN W6 [get_ports iic_1_sda_io]; # JB,10
set_property IOSTANDARD LVCMOS33 [get_ports iic_1_scl_io];
set_property IOSTANDARD LVCMOS33 [get_ports iic_1_sda_io];

set_property PACKAGE_PIN V15 [get_ports iic_2_scl_io]; # JC,1
set_property PACKAGE_PIN W15 [get_ports iic_2_sda_io]; # JC,2
set_property IOSTANDARD LVCMOS33 [get_ports iic_2_scl_io];
set_property IOSTANDARD LVCMOS33 [get_ports iic_2_sda_io];

set_property PACKAGE_PIN T11 [get_ports iic_3_scl_io]; # JC,3
set_property PACKAGE_PIN T10 [get_ports iic_3_sda_io]; # JC,4
set_property IOSTANDARD LVCMOS33 [get_ports iic_3_scl_io];
set_property IOSTANDARD LVCMOS33 [get_ports iic_3_sda_io];

set_property PACKAGE_PIN U7 [get_ports uart_0_rxd]; # JB,3
set_property PACKAGE_PIN V7 [get_ports uart_0_txd]; # JB,4
set_property IOSTANDARD LVCMOS33 [get_ports uart_0_rxd];
set_property IOSTANDARD LVCMOS33 [get_ports uart_0_txd];

set_property PACKAGE_PIN Y7 [get_ports gpio_0_tri_i]; # JB,7
set_property IOSTANDARD LVCMOS33 [get_ports gpio_0_tri_i];


論理合成、インプリメンテーション、ビットストリームの生成を行って、成功した。
Project Summary を示す。
acc_gps_sensor_19_201117.png
acc_gps_sensor_20_201117.png
  1. 2020年11月17日 04:07 |
  2. FPGAを使用したシステム
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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