やまちゃんのオーディオブログ

真空管アンプ、最近は資金調達のためのFX,MetaTrader4ネタもやっています。

FPGA

DE1-SOC(FPGAボード)を買いました

投稿日:2017年7月30日 更新日:

前回の記事で紹介したように、ラズベリーパイから、44.1k系列、192k系列のオシレータを切り替え、かつ分周比を切り替えるよう、gpioでビットを出力し、それに基づいて、64倍fsのサンプリング周波数をラズベリーパイに入力する必要があり、論理回路を組む必要がある。
論理回路を組んでもよいが、動作確認をしたいと思うようになり、FPGAによると、プログラミングだけでそれできるらしいと分かり、かなり遠回りではあるが、FPGAの勉強を始めた。
調べてみると、DE0がおすすめであり、近年はラズベリーパイのようにリナックスを動作させるマイコンであるsocと連携することが重要視されているとのことで、DE1-SOCを買うことにした。
170730_0441~01.jpg
170730_0441~02.jpg
デジキーでは3万円ほどであるが、ヤフオクで安く買うことができた。
上記したsocとの連携部分から、de1-socが初心者にむつかしいとの声もあって心配であったが、その機能を使わなければ、DE0とほぼ変わらない。もっとも、de1-socは、搭載チップの要請から大量のメモリーを食う。具体的には、そのコンパイルソフトでは、年年高まるFPGAの論理規模の拡大からメモリー消費が大きくなり近年のバージョンでは64ビットOSが必須で、かつde1-socの場合は特に8G以上のメモリを必要とする。もともと8Gのメモリを積んでいたが、メモリエラーが出たので、現状では16Gを積んでいる。大したプログラムを組んでいないし、供給されたサンプルプログラムをコンパイルしているだけなのにメモリエラーがでたのは、おそらくソフトのバグなどの加減であるとも思えたが、慌ててメモリを買いに行った。

えっとそのまえに、そもそも、64ビットマシンなど持っていなかった。また、自宅のコピー機が古くなり、コピー機上でボタンを押すとパソコンにデータが転送される機能が、win7搭載のパソコンでしか、スキャンデータを受け付けなくなり、win7が使えるマシンを探したところで、2世代前の5200uなら保障対象であることを確認し、5200uというcpu搭載のノートパソコンをヤフオクで落札した。3万+α円也。お安い買い物であり、現状そのような値段で買うことはできない。とある機能がないということで、敵もおらず、直前のスナイプ入札でお安く買えたからである。
もっとも、このマシンがwin10マシンでありダウングレードの方法もよくわからず、ssdの入れ替え(480Gで1万4千円)、メモリ16Gで1万6千円(実は要らなかったかもしれない)、USBhdd(8千円)にwin7が入ると思った誤算と(実はインストールが相当困難)、win7の購入とで、かなりの痛い出費である。
結局、win7は、ノートPCの内蔵HDDに仕込まなければならず、win10を残すには、現状のwin10とのダブルブート1択しかなくなった。しかし、後述するコンパイルできない不具合の試行錯誤で、すでにqualtusの複数バージョンのインストールをすることになりSSDはお腹一杯になっており、さらに大容量のSSD(480G,
実容量440G)を買う必要があった。
ちなみに、win7とwin10のダブルブートは、まずもとのシステムSSDを裸族+HDDコピーソフトで丸ごとコピーし
、コピーした先の新しいSSDのパーティションを、220Gずつになるよう、コピーしたシステム領域を拡張し、裸族に設置した新しいSSDを、ノートPCにあった古いSSDと入れ替え、残りの220Gに、win7をクリーンインストールし、あっさりおしまいであった。
このノートPCはDVDがついておらず、別のマシンで、ネット上にあるソフトを用いて、DVDの内容をUSBへコピーして、CDの代わりにUSBからウィンドウズのインストールが起動可能になるようUSBブートディスクを作った。驚くべき速度でwin7をクリーンインストールできた。おそらく10分ぐらいしかかかっていない。

FPGAネタにもどって、
ソフトは、altera(現在intelが買収)のqualtus primeである。fpgaの供給元は、alteraとxilinxその他があるがソフトの使い勝手からこの2択に絞られる。
qualtusのバージョンがたくさんあるが、原則として最新のものをダウンロードする。無償版のliteを使う。その際、ユーザー登録をする必要がある。新しくなるほど、複数のコアを使用できるようになったりして、コンパイルの時間が短くなるようだ。
ただし、最新のもの(17版)は、私のマシンと相性が悪いのか、コンパイルの段階で、メモリーエラーで止まった。メモリを追加しても症状が変わらなかったので、やむなく14版をダウンロードしたりした。こちらの14版は論理回路のコンパイルは通るものの、若干コンパイルが遅くなり、後述するniosというソフトマイコンのプログラムをコンパイルする段階で、動作しなかった。当然コンパイルできるべきサンプルプログラムが、コンパイルできない状態だった。ネット上で調べたところコンパイラーが古すぎることを原因として、つまりOSに対しコンパイルが古すぎること(win10では動かないこと)を原因として、動作しなかった。ネットではコンパイラーを最新のものをダウンロードせよとあったりしたが、対処できなかった。15版も似たような症状だった。こちらの環境では、16版をダウンロードして、ようやくこれらのエラーがないことを確認した。

qualtusによると、論理回路をプログラミングしたり、すでにプログラミングした論理回路が登録されており、ソフト上で配線をつないだり、また、標準ロジックの74系列の論理回路も用いることができる。また、PLLが内蔵されており、めんどくさい周波数の信号供給も、ソフト上の配線だけで、行うことができる。

では、どうやって、FPGAを具体的に勉強するかであるが、実質的には、論理回路のプログラミング回路のvelilogHDLを学ぶことになる。しかし、qualtusというソフト自体の操作も容易ではないという面があり、「FPGAスターター・キットで初体験!オリジナル・マイコン作り」という書籍にのっとりやるのがおすすめであり、ネット上の情報量の少なさから、結論としてそれ一択だと思える。

170730_0440~01.jpg


ここで、なぜに「マイコン作り」という本なのかということである。変ではないかと思われるかもしれない。そこで説明するのであるが、まずそもそも、niosはその論理回路から構成されたソフトウェアマイコンであり、c言語プログラムで通常のマイコンと同じような動作をさせることができる。もっとも配線などは内部で行われ、ソフトウェアで完結できるので、回路を起こす必要もはんだごてを用いる必要もない。
次に、話は戻って論理回路を勉強するのになぜマイコンなのか、ということであるが、
論理回路は、シークエンス処理が苦手なので、あれやって、これやって、スイッチの入力に基づいて、これやってということが容易ではなく、その動作に限界が生じやすい。また、論理回路だけを組む場合でも、試行錯誤するうえで、若干のパラメータ変更をするだけでも、コンパイルに3、4分かかってしまい開発速度が遅すぎる。マイコンから特定の数値について出力させるなら、マイコンのソフトを書き換えるだけでよいので、コンパイルが数十秒で終わり、コンパイルの速度が速くなる。音楽データの送出も将来的には、リナックス動作可能なFPGA単独で完結したい。
というわけで、ソフトを含めて手順を体系的に学べるこの本で学習するのが一番良いと考えられる。
ネット上の説明は本稿の当時では、情報が少ない故、特にソフトの操作については断片的なものが多く、体系的に学ぶことがむつかしい。

なお、この本では、DE0というFPGAボードを例にとって書いているので、ほかのボードでは若干の変更が必要になる。ほとんどの動作はソフト完結なので、ALTERAのFPGAを搭載しているボードであればどのようなボードでも全く同じように、この本の通りに従うことができるのであるが、ピン配置が違うので、そこは、ボードマニュアルをみてどのピンがどの機能に内部接続されているか確認し修正する必要がある。もっともそれはマニュアルを見て修正すればいいだけで、困難とは言えない。

なお、FPGAのメリットとすれば、論理回路によればスーパー並列動作が可能で、画像処理など並列処理ができるものはマイコンなどでは到底できないような高速処理が可能である点にあるとされている。

-FPGA

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

ラズベリーパイのi2s外部クロック、その後7(2018年度版)

過去記事では、ラズパイ2のi2s方式での音楽再生について、ラズパイ側がクロックスレーブとなる形式(ラズパイの外部からクロックを供給する形式)で再生するためのi2sのドライバーの改造方法、FPGAを用い …

no image

ラズベリーパイのi2s外部クロック、その後8(2018年度版)

やっと、外部クロックで、ラズパイを動かすことができました!!! ラズパイからは、GPIOでサンプリング周波数を指示し、これに基づいて、外部ボードであるde0-socが周波数を切り替え、マスタークロック …

no image

ラズベリーパイのi2s外部クロック、その後3-3(2018年度版)

(以下、コンパイルの説明をする。コンパイルをしてしまうと後で戻ることは難しくなる。  ここで、パソコンにSDカードのデータをセーブする必要がある。セーブするにはsdformatterを使う(後の回に説 …

no image

ラズベリーパイのi2s外部クロック、その後4(2018年度版)

13 ラズパイの信号に応じて、クロックを切り替えるボード  この点をどのようにするか、基板を起こす方法もあるけれど、試行錯誤が多いと思えるので、 FPGAを用いて、プログラム的に、信号切り替え、分周な …

no image

ラズベリーパイのi2s外部クロック、その後3-2(2018年度版)

11 カーネルソースの編集 編集すべきは、以下の3つ。 (1) rpi-dac.c  (snd_soc_rpi_dac) (2) bcm2835-i2s.c (snd_soc_bcm2835_i2s) …

[最近の記事]
2017年7月
 1
2345678
9101112131415
16171819202122
23242526272829
3031