2014/12/23

ZYBO Base System Design (Vivado 2014.4) - 2

はじめに

本投稿は,ZYBO Base System Design (Vivado 2014.4) - 1の続きです. Bitstreamの生成まで完了していますので,Xilinx SDK 2014.4を使用してソフトウェアの準備を進めます.

作業備忘録
  1. Xilinx SDKを起動する
  2. 「zybo_bsd.xpr」を開いた状態のVivadoで「File」 - 「Export」 - 「Export Hardware」をクリックします. 「Export Hardware」ウィンドウにおいて,「Include bitstream」にチェックを入れ,「OK」をクリックします.

    Export Hardware
    「File」 - 「Launch SDK」をクリックします. 「Launch SDK」が開きますので,「OK」をクリックします. Xilinx SDKが起動します.

    Export Hardware
    • Xilinx SDKが起動しないときは…
    • Vivadoをインストールした際に,SDKがインストール項目として選択されていなかった可能性があります. 「スタート」 - 「すべてのプログラム」 - 「Xilinx Design Tools」 - 「Vivado 2014.4」 - 「Add Design Tools or Devices 2014.4」から,インストーラを起動して追加インストールが可能です.なお,最初にインストールした際と同じディレクトリに,インストーラのファイルが展開されている必要があるようでした.

      Vivado 2014.4 Installer - Select Extra Content
  3. プロジェクトを新規作成する
  4. 「File」 - 「New」 - 「Application Project」から,プロジェクトを新規作成します. 「C:\work\zybo_base_system\SDK\README.txt」にしたがい,プロジェクト名は「base_demo」としました. 「Next」をクリックします.

    New Project
    「Empty Application」を選択して,「Finish」をクリックします. 「base_demo」プロジェクトが作成されます.

    New Project
  5. ファイルを追加する
  6. 「Project Explorer」で「base_demo」を展開し,「src」ディレクトリの上で右クリックします. 右クリックメニューから「Import...」をクリックし,「Import」ウィンドウを開きます. 「General」 - 「File System」を選択し,「Next」をクリックします.

    Import
    「From directory:」として「C:\work\zybo_base_system\SDK\base_demo」を選択し,すべてのファイルにチェックを入れます. 「Overwrite existing resources without warning」にもチェックを入れ,「Finish」をクリックしました.

    Import
    ファイルがインポートされ,自動的にBuildが開始されます.
  7. ソースコードを修正する
  8. undecidedly氏の「ZYBOの実験」で紹介されているように,ソースコード中の1行をコメントアウトしないとデモが動作しませんでした. 具体的には,「main.c」の82行目を,次のようにコメントアウトしました. 修正後,自動的にBuildが開始されない場合は,「Project」 - 「Build All」をクリックしました.
続きは…

ZYBO Base System Design (Vivado 2014.4) - 1

はじめに

ZYBO購入後,最初にZYBO Base System Designをやってみました. ZYBO Base System Designは,Digilentが配布しているリファレンスプロジェクトのようです. 下記ページにてダウンロードできます.

他に参考にしたWebページは,marsee氏の「FPGAの部屋」です. ZYBO Base System DesignにはVivado 2013.4用のプロジェクトファイルが付属していますが,marsee氏はVivado 2014.1を使用されていたので,私はVivado 2014.4でやってみることにしました.

事前準備
microSDHCのフォーマット

購入したmicroSDHCカードをフォーマットしておきました. 「デバイスの既定値を復元する」をクリックした後,クイック フォーマットを実行しました.


フォーマット
ドライバのインストール

UARTに必要なドライバをインストールしておきました.


ドライバー ソフトウェアのインストール
Tera Termのインストール

Tera Termなどのターミナルソフトウェアが必要になります. 私はインストール済みでしたので,設定のみ変更しました.


Tera Term: シリアルポート 設定
作業備忘録
  1. プロジェクトディレクトリを準備する
  2. 「zybo_base_system.zip」を展開し,できるだけ浅い階層のディレクトリにファイルを置きます. Windowsはファイルパスに文字数制限がありますが,Vivadoがディレクトリを自動生成する際に,この制限を超過しないようにするためです. 私は,「C:\work\zybo_base_system」に,展開してできたディレクトリの「source\vivado\」以下のファイル(「hw」および「SDK」)を移動しました.
  3. Vivadoを起動する

  4. Vivado
  5. プロジェクトを開く
  6. 「Open Project」から「C:\work\zybo_base_system\hw\zybo_bsd\zybo_bsd.xpr」を開きます. 下図のようなウィンドウが開きますので,「Automatically upgrade ...」を選択して「OK」をクリックします.

    Vivado
    「Default Library」ウィンドウも表示されましたが,「OK」をクリックしました.

    Vivado
  7. Upgrade IP
  8. 「Project Upgraded」ウィンドウが開きますので,「Report IP Status」をクリックしました.

    Vivado
    「Upgrade Selected」をクリックしました.

    Vivado
    「OK」をクリックしました.

    Vivado
    Critical Warningが出ましたが無視しました. 以降の「Generate Block Diagram」でもCritical Warningが出ましたが,同様に無視しても問題はありませんでした.
  9. Generate Block Diagram
  10. 「Flow Navigator」の「IP Integrator」 - 「Generate Block Diagram」を実行しました.
  11. Generate Bitstream
  12. 「Flow Navigator」の「Program and Debug」 - 「Generate Bitstream」を実行しました. エラーなく,Bitstreamを生成できました.

    Vivado
続きは…

2014/12/22

ZYBOを買ってみました

ZYNQ開発,始めます
はじめに

FPGA SoCを使用した組込み開発の勉強をしようと思い,ZYBOに手を伸ばすことにしました. FPGA評価ボードとしては安価ですが,現在の私からすると完全に宝の持ち腐れです. 使いこなせるように,コツコツ頑張っていきたいと思います….

ZYBOを選んだ理由

FPGA SoCとしては,XilinxのZYNQのほか,AlteraのCyclone V SoCが代表的なデバイスとして挙げられます. これらのFPGA SoCを使用した評価ボードは各社から発売されていますが,私はZYNQの評価ボードの一種であるZYBOを購入しました.

ZYBOを選んだ理由は,日本語情報が入手しやすいこと,自作回路を接続しやすいことの2点です. 既に,marsee氏の「FPGAの部屋」などで事例が紹介されているので,初心者の私にも参考になる情報が得やすいと考えました. また,ZYBOの入出力ピンはPmod準拠のピンソケットのため,自作回路を接続しやすそうだったことも大きな理由です. 2.54mmピッチなので,ハンダ付けも容易です. 他の購入候補としてはParallellaがありましたが,ParallellaのGPIOはピッチが細かく,自作回路の接続は簡単ではないと考えました. ハードウェア構成や製品コンセプトが異なるため単純には比較できませんが,ZYNQと自作回路を組み合わせて何かを作ろうと考えたとき,価格がお手頃で一番扱いやすそうなのがZYBOでした.

日本国内でも取扱店がいくつかありますが,他の電子部品と一括購入しやすかったので,私は秋月電子通商で購入しました.

開封

とてもコンパクトかつ,ペラペラで頼りない紙箱に入っています.


ZYBO

開封した様子です. ZYBO本体のみしか入っていません. ケーブル,説明書や保証書の類は一切入っていません.


ZYBO
同時に購入したもの / 購入したほうが良いもの

ZYBOは,付属品が一切ありません. 開発に必要で,手元にないものは同時に購入しておかねばなりません.

  • microUSBケーブル
  • 電源供給やデータのダウンロードに必須です. 私は,秋月電子通商で同時購入しました.
  • HDMIケーブル
  • 必須ではないかもしれませんが,デモを動作させるために必要です. もちろん,HDMI入力端子を備えたディスプレイがないといけません.
  • ACアダプタ
  • microUSBケーブルによる電源供給では不足する場合に,ACアダプタの接続が必要です. 出力がDC5V,DCジャックがφ2.1でセンタープラスのものであれば良いようです. 私は,手持ちの安定化電源から電源供給を行っています. デモを動作させるためにも必要ですので,必ず準備したほうが良さそうです.
  • microSDHC
  • すぐに必要にはなりませんが,組込みLinuxで遊ぶためには必要になりそうです. 記憶容量は8GB,Class10のものを購入しておきました.
動作確認

電源を入れるだけでデモが動作するようなので,動作確認をしました.microUSBケーブル,HDMIケーブルとACアダプタを接続して電源を入れると,ディスプレイに模様が描画されました.


ZYBO

2014/12/21

Xilinx Vivado WebPACKのインストール方法

はじめに

FPGA SoCの勉強をしようと考え,ZYBOを購入したので,早速Vivadoをインストールしてみました. 初心者なので誤った記述が含まれている場合があります. 気づかれた方は,コメントなどでご指摘いただければ幸いです.

インストール環境

インストール環境は下記のとおりです.

OS Microsoft Windows 7 Professional x64 Service Pack 1
Vivado Vivado 2014.4 WebPACK Edition (Windows)
Download Type Windows用Vivado 2014.4のフルイメージ (SDK 付き)
フルイメージのダウンロード

Vivadoのインストーラはスタンドアロン ウェブ インストール クライアント(Lightweight Installer)とフルイメージ(Full Product Installation)の2種類があるようです. 今回は,Windows用のフルイメージをダウンロードすることにしました. ダウンロードにはアカウント登録が必要です. 下記リンクからダウンロードページに飛ぶことができます.

ファイルの展開

フルイメージはTAR/GZIP (.tar.gz)形式で圧縮されています. 7-Zipなどを使用して,ファイルを展開してください. GZIP圧縮の展開とTAR圧縮の展開,計2回の展開処理が必要です.

インストール作業
  1. 「xsetup.exe」を「管理者として実行」する
  2. 「Windowsセキュリティの重要な警告」などが表示された場合は,「アクセスを許可する」を選択します. インストール作業中は,セキュリティソフトウェアを一時無効にすることが推奨されているようです.

    インストール作業
  3. 「Next」をクリックする

  4. インストール作業
  5. 3箇所の「I Agree」にチェックを入れ,「Next」をクリックする

  6. インストール作業
  7. 「Vivado WebPACK」を選択する
  8. 今回は無償版のWebPACKをインストールします. WebPACKにはデバイス制限がありますが,ZYBOに搭載されているデバイスはサポート範囲内ですので,基本的には問題ないと思います.

    インストール作業
  9. 「Software Development Kit」にチェックを入れ,「Next」をクリックする
  10. 私はここでミスをしました. デフォルト設定ではSoftware Development Kit (SDK)にチェックが入っていなかったのです. 後で追加インストールすることもできますが,ここでチェックを入れておきましょう.

    インストール作業
  11. 「Next」をクリックする
  12. デフォルト設定を変更する必要性は感じませんでした.

    インストール作業
  13. 「Yes」をクリックする
  14. 初めてXilinxの開発ツールをインストールする場合は,インストールディレクトリが新規作成されます.

    インストール作業
  15. 「Install」をクリックする
  16. スクリーンキャプチャには含まれていませんが,「Design Tools」にSDKが含まれているはずです. 「Install」をクリックするとインストールが開始されます. インストール中にはドライバのインストール操作を促すウィンドウなどが表示されますので,進捗状況を適宜チェックしてください.

    インストール作業
  17. インストール完了
  18. インストールが完了すると下図のようなウィンドウが表示されますので,「OK」をクリックして閉じます. このウィンドウはVivado License Managerなどの裏に隠れていることがあるようです. 引き続き,ライセンス登録作業を行います.

    インストール作業
ライセンス登録作業

インストールが完了すると,Vivado License Managerが自動的に起動するようです. 下図のような「Windowsセキュリティの重要な警告」などが表示された場合は,「アクセスを許可する」を選択します.


ライセンス登録作業
  1. 「Get Free Licenses」を選択し,「Connect Now」をクリックする
  2. ブラウザが起動し,XilinxのWebページに飛びます.

    ライセンス登録作業
  3. 「Xilinx Licensing Site」にサインインする

  4. ライセンス登録作業
  5. 登録情報の確認および更新を行い,「Next」をクリックする
  6. 私は,氏名や住所を英語で記入しています. 日本語で記入するとエラーになったような記憶があります.

    ライセンス登録作業
  7. Vivado WebPACKのNode-Locked Licenseを生成する
  8. 「Activation Based License」の「Vivado WebPACK License」にチェックを入れ,「Activate Node-Locked License」をクリックします. 続いて,「Generate Node License」ウィンドウが表示されるので,「Next」をクリックします. 「Node」欄には,VivadoをインストールしたWindows PCのコンピュータ名が表示されているはずです.

    ライセンス登録作業
    内容を確認して,「Next」をクリックします.

    ライセンス登録作業
  9. ライセンス登録完了
  10. ライセンス登録が完了しました. ライセンスファイルがメールで送付されてくるようですが,本投稿で紹介している方法でライセンス登録を行った場合は,自動的にVivado License Managerのライセンス情報が更新されるようです.

    ライセンス登録作業
    Vivado License Managerの「View License Status」でライセンス情報を確認できます.

    ライセンス登録作業

以上でインストール作業は完了です.

製品紹介
The Zynq Book: Embedded Processing with the Arm Cortex-A9 on the Xilinx Zynq-7000 All Programmable Soc
Louise H. Crockett Ross a. Elliot Martin a. Enderwitz
Strathclyde Academic Media
売り上げランキング: 9,093

2014/12/03

16F88 XC8開発例 - ロータリスイッチの状態をA/D変換で取得する

概要
はじめに

前回の記事「Arduino - ロータリスイッチの状態をA/D変換で取得する」と同様の回路を,PIC16F88とMPLAB XC8 C Compilerを使用して実装する方法を紹介します. この開発例では,PIC16F88のA/D変換モジュールによるA/D変換と,AUSARTモジュールによる調歩同期式シリアル通信を行っています. 開発環境は下記のとおりです.

PIC PIC16F88-I/P
MPLAB X IDE MPLAB X IDE v2.26
MPLAB XC8 MPLAB XC8 C Compiler v1.32
PICkit 2 MPLAB X IDEを使用して書込み
通信仕様

通信仕様は下表のとおりです. 本記事では詳細は説明しませんが,今回はUSBシリアル変換モジュールを経由してPICとPCとの間で調歩同期式シリアル通信を行いました. 調歩同期式シリアル通信について調べる場合は,「RS-232C」や「UART」をキーワードに検索してみてください.

ボーレート 9,600 bps
データビット 8 bit
パリティビット なし
ストップビット 1 bit
フロー制御 なし
回路
回路図

PDFファイルにて公開します.

PICkit 2を使用してICSP (In Circuit Serial Programming)と電源供給を行うことを前提とした回路です. 今回は,これをブレッドボード上に組んで動作を確認しました.

ロータリスイッチ SW1の共通接点Aは,グランドに接続されています. 一方,PIC16F88のAN0ピンは,常にSW1の選択接点1に接続されています. スイッチを回転させると,合成抵抗の分圧比が変化し,アナログ入力ピンに印加される電圧が変化します. この変化を読み取ることで,SW1の状態を取得できます.

仮に共通接点Aがいずれの選択端子にも接続されていない状態になっても,AN0ピンは抵抗 R1でプルアップされている状態となり,ハイインピーダンスにはなりません.

回路部品

下表は使用部品表です. 参考単価をクリックすると,秋月電子通商のページに飛びます. 「互換品」と記載されているリンクについては,互換性があると考えられる部品のページに飛びます. ただし,私が互換性および動作を確認したわけではありませんので,ご注意ください.

使用部品表
番号 部品名 型番 数量 参考単価
U1 PICマイコン Microchip PIC16F88-I/P 1 250円
U2 USBシリアル変換
モジュールキット
秋月電子通商 AE-UM232R 1 800円
X1 セラロック 村田製作所 20MHz 1 35円
SW1 ロータリスイッチ 1回路12接点
ノンショーティングタイプ
1 150円
(互換品)
R1 炭素皮膜抵抗 各社 1/4W 10kΩ 1 1円
(互換品)
R2, R11 炭素皮膜抵抗 各社 1/4W 4.7kΩ 2 1円
(互換品)
R3 炭素皮膜抵抗 各社 1/4W 470Ω 1 1円
(互換品)
R4 炭素皮膜抵抗 各社 1/4W 680Ω 1 1円
(互換品)
R5 炭素皮膜抵抗 各社 1/4W 820Ω 1 1円
(互換品)
R6 炭素皮膜抵抗 各社 1/4W 1kΩ 1 1円
(互換品)
R7 炭素皮膜抵抗 各社 1/4W 1.2kΩ 1 1円
(互換品)
R8 炭素皮膜抵抗 各社 1/4W 1.5kΩ 1 1円
(互換品)
R9 炭素皮膜抵抗 各社 1/4W 2.2kΩ 1 1円
(互換品)
R10 炭素皮膜抵抗 各社 1/4W 3kΩ 1 1円
(互換品)
R12 炭素皮膜抵抗 各社 1/4W 8.2kΩ 1 1円
(互換品)
R13 炭素皮膜抵抗 各社 1/4W 15kΩ 1 1円
(互換品)
その他 リード線など 適量
回路製作例

ロータリスイッチ周辺の配線については,前回の記事の「回路製作例」で紹介しています.

プログラム
A/D変換値からロータリスイッチの状態を取得する方法

まず,ロータリスイッチの各状態における,AN0ピンへの印加電圧を計算してみましょう. 計算結果を下表に示します. 下表から,例えば選択接点2の場合は,AN0ピンへの印加電圧が0.455Vになることがわかります. PIC16F88のA/D変換の分解能は10bit(0~1023)ですから,A/D変換値は93になると考えられます. ただし,電源電圧や抵抗値の公差により,各値は多少変動します.

これらの計算結果を基に,A/D変換値と閾値を比較することで,ロータリスイッチの状態を割り出します. 例えば,選択接点が3以下か4以上かを調べるためには,各状態におけるA/D変換値(201と302)の中間値(252)を閾値にします. このような比較処理を繰り返すことで.選択接点が特定できます.

ロータリスイッチの選択接点とアナログ入力ピンへの印加電圧の関係
選択接点 印加電圧 [V] A/D変換値(10bit)
1 0.000 0
2 0.455 93
3 0.983 201
4 1.477 302
5 1.936 396
6 2.351 481
7 2.734 560
8 3.130 641
9 3.491 715
10 3.841 787
11 4.175 855
12 4.459 910
main.c

下記は,ソースファイル main.cです. このほかに,「16F88 XC8開発例 - 調歩同期式シリアル通信(AUSARTモジュール)」に掲載している,uart.cuart.hが必要です.

A/D変換値からロータリスイッチの状態を取得する,getRotarySwStatus()関数を作成しました. これは,前回の記事で紹介した,Arduinoのスケッチから移植した関数です. 復帰値1~12でロータリスイッチの状態を,復帰値0で取得エラーを示します.

getRotarySwStatus()関数内の条件分岐処理がif文の入れ子構造になっているのは,ロータリスイッチの状態によって関数内の処理時間が変動しないようにしたかったためです. この関数では,ロータリスイッチがいずれの状態であっても条件分岐処理が3回以内になっています. よりスマートなやり方があるのだとは思いますが….

製品紹介
超小型ブレッドボード(青)
SparkFun
売り上げランキング: 369,705