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

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

FPGA ラズベリーパイB

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

投稿日:2018年3月27日 更新日:

13 ラズパイの信号に応じて、クロックを切り替えるボード
 この点をどのようにするか、基板を起こす方法もあるけれど、試行錯誤が多いと思えるので、
FPGAを用いて、プログラム的に、信号切り替え、分周などの論理回路を作成することを考えた(過去記事の「DE1-SOC(FPGAボード)を買いました」。
このボードには、DACがすでに接続されていて、かつ、40ピンのgpioヘッダが用意されており、内部配線をプログラム的に接続すれば足りる点で、その点でも、試行錯誤がやりやすい。
40ピンのgpioヘッダは、ラズパイと対応するように内部配線をプログラム化することもできる。
その点で、基板の作成能力がなくても、外部クロックの仕組みを体感できる。
また、PLLも用意されているので、最終的な理想からは外れるものの、外部クロックを用意しなくても、クロックの変更の仕組みを動作検証できる。(後でマスタークロックを用意し、配線を修正すればよいだけのことである。)

(クリックすると拡大します。)
<2018.4.13 修正>
現在動作確認を終えた。28.224となっているところは22.5792の誤りで、notの演算子が入っているところは、24.576ではなくて、22.5792のほうに入れる。現在の図だと全く信号が出ない。

 すべてをverilogで作るのではなくて、回路図を構成し、その中のモジュールだけをverilogで作る。
 PIN_AF14は、50mhzのクロックに接続し、PLLにより、22.5792mhz,24.576mhzの周波数を作り出す。これらのマスタークロックの系統をPIN_AC18により、切り替える。
 PIN_AC18により選択されたクロックの系列につき、counter1-3は、2分周、4分周、8分周の方形波を作り出す。
上記ボードで採用しているのは、wm8731なので、11.2896mhz,12.288mhzが必要なので、2分周したクロックを1部で取り出す(PIN_G7)。PIN_Y18は、DACのデータ入力であり、内部的にDACとGPIOとを接続している。

 2分周、4分周、8分周の方形波は、2ビットのPIN_Y17により、MUXで選択し、これを、ビットクロックとしてラズパイへ出力する。また、ビットクロックの出力として、ボード内部のDACにもプログラム的に出力する。
 
 さらに、選択したビットクロックから、counter6により、2の6乗つまり、64分周にしたクロック(LRクロック)取り出す。
 LRクロックは、ビットクロックに基づいて、ラズパイから出力されるが、ラズパイのモードには、カーネルのrpi_dac.cを変更してLRCLOCkも入力できるモードがありそれを試すために用意している。

 FPGAについては、上記のボードを用いたが、使用しているFPGAの型番設定を変え、pin plannerでピンの特性を変更するだけで、ほかのalteraのボードにも容易に移植できる。
 上記のボードでは、my_first_fpgaというpdfがあり、pllで作成したクロックを、分周により周波数を落とし、LEDを点滅させるという初心者向けの文書があり、それを参考にして拡張していけば、pll + MUX + 分周 の組み合わせにより、gpioの信号の組み合わせに応じて、所定の周波数のクロックを、ラズパイに送ることができる。

現状のプロジェクト(バージョン16LITEエディションで作成)は、グラウンド接続や、ラズパイのピン配置には未対応で修正が必要であり、これを修正し、動作検証をしていきたい。

-FPGA, ラズベリーパイB

執筆者:


comment

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

CAPTCHA


関連記事

no image

ラズベリーパイのi2s外部クロック、ついに動作確認

やりました! とうとうやりました。 PLLではなく、外部クロックでラズベリーパイを鳴らせることができました! bckも外部クロックで駆動しています。 使ったクロックは、キョーセラの7050k(22.5 …

no image

ラズベリーパイBのi2s外部クロックでサンプリング周波数に応じたgpio出力

ラズベリーパイB(モデル1)です。すいません。 もはや中国のalliexpressなどでしか入手できないかもしれません。 <追記:ラズベリーパイ0へ応用できるかもしれません。> 以前の記事の通り、ラズ …

no image

ラズパイのi2sで一般的な24ビットファイルを再生するために・・・(aplayex, for playing general 24bit 3LE files(SNDRV_PCM_FMTBIT_S24_3LE),converting 24bit LE(SNDRV_PCM_FMTBIT_S24_LE) automatically while playing, on raspberry pi)

aplayexを使います。 see http://www.geocities.jp/onsei2007/kousaku/PI_I2S_DAC.html, and http://www.nakata-j …

no image

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

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

no image

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

とりあえず、デバイス:de0-soc、DAC:wm8731用のクロックジェネレータのプロジェクトを公開。de0-socの開発CDに含まれているmy first fpgaを参考にした。 (図をクリックす …

[最近の記事]
2018年3月
 123
45678910
11121314151617
18192021222324
25262728293031