Zynq搭載ボードの決定版“Eclypse Z7”で始める
高速信号処理システム開発

~100Msps ADC/DACで作る測定器/データ・ロガー/LinuxベースSDR~

[Vol.3. PLによるディジタル・フィルタのサンプル・プロジェクトによる実験]



【Index】

Vol.1 開発環境“Vivado”をインストールしてFPGA(PL)でLチカ

Vol.2 C言語プログラムでZynqの“PS”を動かす実験

Vol.3 PLによるディジタル・フィルタのサンプル・プロジェクトによる実験

Eclypse Z7ボードを使ったディジタル・フィルタの実験をする

Eclypse Z7ボードと高速ADC/DACの組み合わせ

本連載では,Digiletn社製のZynq搭載ボードである“Eclypse Z7”(エクリプス・ゼット・セブン)を利用してディジタル信号処理システムの構築方法を解説します(写真1).Eclypse Z7ボードの詳しい情報はこちらのWebページから入手できます.

写真1 本連載の実験で使う“Eclypse Z7”ボード(Digilent社製)

Eclypse Z7ボードには,“Zmod ADC 1410”という高速ADCモジュール(写真2)と“Zmod DAC 1411”という高速DACモジュール(写真3)を取り付けることができます.

写真2 “Zmod ADC 1410”ボード 写真3 “Zmod DAC 1411”ボード

Eclypse Z7ボードに“Zmod ADC 1410”と“Zmod DAC 1411”を取り付けると写真4のようになります.この状態でEclypse Z7ボードに搭載されているZynqの内部回路(PSおよびPL)を開発すれば,アナログ信号の入出力に対応した独自の高速信号処理システムを作ることができます.

写真4 Eclypse Z7ボードに“Zmod ADC 1410”と“Zmod DAC 1411”を取り付けた様子

Digilent社から提供されているサンプル・プロジェクトの概要

今回は,Digilent社から提供されている“Eclypse Z7 + Zmod ADC + Zmod DAC”のサンプル・プロジェクトを利用して実験をしてみます.

これから実験する回路の概要を図1に示します.“Zmod ADC 1410”のCH1から入力されたアナログ信号は,Zynq内部のPL部分に作りこまれたディジタル・フィルタの回路(FIR型のローパス・フィルタ)によって処理されます.演算結果は“Zmod DAC 1411”のCH1からアナログ波形として出力されます.また,比較のためにADCから取り込んだ信号をそのままDACのCH2から出力します(ループバック出力).

なお,この実験のリファレンスはこちらのWebページにあります

図1 これから実験するADC/DACのデモ回路のブロック図

Digilent社のリポジトリからプロジェクトをダウンロードする

Digilent社のサンプル・プログラムは“GitHub”で管理されている

Eclypse Z7ボードの開発元であるDigilent社は,多くのサンプル・プログラムを公開しています.これらのサンプル・プログラムは,オンラインのリポジトリ(ファイルの保管場所)を管理するためのWebサービスである“GitHub”(ギット・ハブ)からダウンロードできます.

OSとしてLinuxを使っているパソコンであれば“git”(ギット)コマンドを使って簡単にプロジェクトのダウンロードや更新を行えますが,Windows上でgitコマンドを使うためにはちょっとした準備が必要となります.今回は“Git for Windows”というパッケージをインストールして,そこに含まれる“Git Bash”(ギット・バッシュ)を利用してDigilent社のリポジトリにアクセスすることにします.

“Git for Windows”をインストールする

まずは“Git for Windows”のダウンロード・ページにアクセスして,インストーラをダウンロードします(図2).インストーラ(約47 Mバイト)をダウンロードしたら,ダブル・クリックして起動します(図3).

図2 “Git for Windows”のインストーラをダウンロードする 図3 インストーラをダブル・クリックして起動する

図4の画面が表示されたら[Next]ボタンをクリックします.続いて表示される図5の画面ではインストール先のディレクトリを指定します.今回はデフォルトのままで[Next]をクリックします.

図4 [Next]をクリックする 図5 インストール先のディレクトリを指定して[Next]をクリックする

図6の画面ではインストール内容を適宜選択します.今回はデフォルトのまま[Next]をクリックします.図7の画面ではWindowsスタート・メニューに登録する名称を設定します.これもデフォルトのまま[Next]をクリックします.

図6 インストールする項目を選択して[Next]をクリックする 図7 スタート・メニューに登録する名称を設定して[Next]をクリックする

図8の画面ではエディタの設定を行います.今回はデフォルトの“Vim”を使う設定にしておきます. 図9の画面では新しいブランチを作成した時の挙動について設定します.ここでもデフォルトの“Let Git decide”を選択して[Next]をクリックします.

図8 エディタの設定をして[Next]をクリックする 図9 “Let Git decide”を選択して[Next]をクリックする

図10の画面では,環境変数の設定に関するオプションを選択します.“Git from command line and also from 3rd-party software”を選択して[Next]をクリックします.

図11の画面ではHTTPS(Hypertext Transfer Protocol Secure)による接続の方式について設定します.今回は“Use the OpenSSL libarary”を選択して[Next]をクリックします.

図10 “Git from the command line and also from 3rd-party software”を選択して[Next]をクリックする 図11 “Use the OpenSSL library”を選択して[Next]をクリックする

図12の画面では改行コードの設定を行います.今回は“Checkout Windows-style, commit Unix-style line endings”を選択して[Next]をクリックします.

図13の画面ではターミナル・エミュレータの設定を行います.今回はデフォルトの“Use MinTTY”を選択して[Next]をクリックします.

図12 “Checkout Windows-style, commit Unix-style ilne endings”を選択して[Next]をクリックする 図13 “Use MinTTY”を選択して[Next]をクリックする

図14の画面では“git pull”コマンドの挙動について設定します.“Default”を選択して[Next]をクリックします.

図15の画面では“credential helper”に関する設定を行います.推奨されている“Git Credential Manager Core”を選択して[Next]をクリックします.

図14 “Default”を選択して[Next]をクリックする 図15 “Git Credential Manager Core”を選択して[Next]をクリックする

図16の画面では“Enable file system caching”にチェックを入れて[Next]をクリックします.図17の画面で[Install]をクリックすると,インストールが開始されます.

図16 “Enable file system chaching”にチェックをつけて[Next]をクリックする 図17 [Install]をクリックする

インストールが完了するまでしばらく待ちます(図18).インストールが完了すると図19の画面が表示されるので,“Launch Git Bash”にチェックを入れて[Finish]をクリックします.

図18 インストールが完了するまで待つ 図19 [Finish]をクリックして終了
図20のように“Git Bash”の起動画面が表示されれば成功です.
図20 “Git Bash”の起動画面

“Git Bash”を使ってDigilent社のサンプル・プロジェクトをダウンロードする

“Git Bash”は,Windows上でLinuxのコンソールと同様にgitコマンドを使うための環境です.今回はDigilent社がEclypse Z7ボード向けのデモとして用意している“Eclypse Z7 Low Level Zmod ADC DAC Demo”のプロジェクトをGitHubからダウンロードします.なお,今回はサンプル・プロジェクトを「デスクトップ」にダウンロードするものとします.

まずは,Git Bash上で作業ディレクトリをデスクトップに移動するためにリスト1のコマンドを入力します.“~/”はホーム・ディレクトリのパスを表す記号です(“C:/Users/[ユーザ名]/”に相当).

cd ~/Desktop

リスト1 “Git Bash”上でコマンドを打って作業ディレクトリを「デスクトップ」に移動する

続いて,リスト2のコマンドを1行ずつ入力します.この一連のコマンドを実行すると,Digilent社が用意しているサンプル・プロジェクトをダウンロードできます.なお,“git branch -a”はブランチを確認するコマンドなので入力しなくても構いません.最終的にデスクトップに“Eclypse-Z7-HW”(約140Mバイト)というディレクトリができれば成功です.

git clone --recursive https://github.com/Digilent/Eclypse-Z7-HW
cd Eclypse-Z7-HW
git branch -a
git checkout low_level_zmod_adc_dac/master
git submodule init
git submodule update

リスト2 “Git Bash”上でコマンドを打ってサンプル・プロジェクトをダウンロードする

“CAfile”に関するエラーが出た場合

“git clone”コマンドを打ったときに“fatal: unable to access [何らかのパス]: error setting certificate verify locations: CAfile: [何らかのパス]”というエラーが出ることがあります.このエラーは,Git Bashの設定ファイルを修正すれば解決できます.

“C:/Users/[ユーザ名]/”のディレクトリの中に“.gitconfig”というファイルがあるので,右クリックして[プログラムから開く] - [メモ帳]をクリックして開きます.“sslcainfo”という変数が定義されている行があるので,そこをリスト3のように変更します.なお,“Git Bash”のインストール先をデフォルト以外の場所に指定した場合は,自分の設定に応じてリスト3のパスを書き換えてください.

sslcainfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt

リスト3 “CAfile”に関するエラーが出た場合は“.gitconfig”ファイルの内容を確認する

Zynqの内部回路をコンフィグして実験する

Vivadoにサンプル・プロジェクトを取り込む

GitHubからサンプル・プロジェクトをダウンロードできたら,Vivadoに取り込んでみましょう.今回は実験用のディレクトリとして“C:/FPGA_Projects/Xilinx_FPGA/20210309test2”というディレクトリを作り,その中にさきほどダウンロードした“Eclypse-Z7-HW”というディレクトリを保存するものとします.ここから先の内容は,ご自身のディレクトリ構成に合わせて適宜パスを読み替えてください.

まずはVivadoを起動します.起動画面の下部に“Tcl Console”(ティクル・コンソール)という部分があるので(図21),“Type a Tcl command here”と表示されている入力欄にリスト4のTclコマンドを1行ずつ入力します.

図21 “Tcl Console”にTclコマンドを入力する
cd C:/FPGA_Projects/Xilinx_FPGA/20210309test2/Eclypse-Z7-HW/digilent-vivado-scripts
set argv ""; source ./digilent_vivado_checkout.tcl
リスト4 Vivadoの“Tcl Console”に入力するコマンド

“Tcl”(ティクル)はスクリプト言語の一種で,Tclを使うとVivadoの動作をコントロールすることができます.リスト4の2行目ではTclで記述されたスクリプトである“digilent_vivado_checkout.tcl”を実行しており,このスクリプトによってVivado上にブロック・デザインが作成されます(図22).

図22 Tclスクリプトを実行すると自動的にブロック・デザインが作成される

問題なくブロック・デザインが生成されたら,ZynqのPLの内部回路を定義するためのビットストリームを作成します.図23に示す“Generate Bitstream”をクリックして,完了するまでしばらく待ちます.

図23 “Generate Bitstream”をクリックしてビットストリームを作成する

Eclypse Z7ボード上のZynqをコンフィグする

Eclypse Z7ボードに“Zmod ADC 1410”と“Zmod DAC 1411”を取り付けます.写真5のように“ZMOD A”側にADCを取り付け,“ZMOD B”側にDACを取り付けるようにします.

写真5 Eclypse Z7ボードに“Zmod ADC”および“Zmod DAC”を取り付ける

Eclypse Z7ボードとPCをUSBケーブルで接続します.ボード上の“JP5”は写真6のように“JTAG”側にします.以上の準備が完了してからボードの電源を入れてください.

写真6 Eclypse Z7ボードとPCを接続する.“JP5”は“JTAG”側にしておく

Eclypse Z7ボードをパソコンと接続した状態で,図24に示す“Open Hardware Manager”をクリックします.すると画面上部に図25のような表示が出るので,“Open target”をクリックして“Auto Connect”をクリックします.

図24 “Open Hardware Manager”をクリックする 図25 “Open target”に続いて“Auto Connect”をクリックする

問題なくEclypse Z7ボードとの接続が完了すると図26のような表示が出るので,“Program device”をクリックします.続いて表示される図27の画面で[Program]ボタンをクリックすると書き込みが始まるので,完了するまで待ちます.Zynqのコンフィグが完了すると,Zmodボードから「カチッ」というリレーが切り替わる音が聞こえます.

図26 “Program device”をクリックする 図27 [Program]ボタンをクリックすると書き込みが始まる

ディジタル・フィルタの動作を確認する

今回は写真7のような測定系で実験を行います.ファンクション・ジェネレータの出力は“Zmod ADC”のCH1に接続します.出力波形はsin波,オフセットは0 V,振幅は500 mVppとしました.

“Zmod DAC”のCH1はオシロスコープのCH1に,“Zmod DAC”のCH2はオシロスコープのCH2にそれぞれ接続します.今回はDACの出力をオシロスコープに直結するので,プローブの電圧減衰率の設定は“x1”(1倍)にしておきます.また,トリガのソースをCH2側に設定しておくことをお勧めします.

今回使用しているファンクション・ジェネレータおよびオシロスコープの端子はBNCコネクタです.一方で,“Zmod ADC”および“Zmod DAC”の端子はSMAコネクタです.これらを接続するために,「SMAケーブル」と「BNC - SMA変換コネクタ」を利用しました.

写真7 Eclypse Z7でディジタル・フィルタを動かしてみた

実験結果を写真8から写真11に示します.入力信号の周波数が10 kHzのときは,ローパス・フィルタの出力(CH1)とループバック出力(CH2)の振幅はほとんど同じです(写真8).

周波数を20 kHzにすると少しだけローパス・フィルタの出力(CH1)の振幅が小さくなります(写真9).

50 kHzだとさらに振幅が小さくなり(写真10),100 kHzにすると振幅はほとんどゼロになります(写真11).このことから,問題なくローパス・フィルタとして機能していることが確認できます.

写真8 10 kHzの正弦波を入力したときの様子 写真9 20 kHzの正弦波を入力したときの様子
写真10 50 kHzの正弦波を入力したときの様子 写真11 100 kHzの正弦波を入力したときの様子

今回のサンプル・プロジェクトで定義されているローパス・フィルタのカットオフ周波数は20 kHz程度なので,低周波アナログ信号向けのシステムであると考えられます.“Zmod ADC”および“Zmod DAC”のサンプリング・レートは100 Mspsなので,これよりも桁違いに周波数が大きい信号であっても問題なく扱えます.また,入力にダウン・コンバート用のミキサを取り付ければRF帯の信号にも対応できます.

なお,ADC/DACのサンプリング・レートとアナログ回路としての性能(アナログ帯域幅)は独立して定まるパラメータなので,高周波信号を扱うときはデータシートをよく確認しておくことをお勧めします.

(c)2021 Nobuyasu Beppu