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

既存のブログをこちらへ順次移動します。

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エディションで作成)は、グラウンド接続や、ラズパイのピン配置には未対応で修正が必要であり、これを修正し、動作検証をしていきたい。

Follow me!

-FPGA, ラズベリーパイB

執筆者:


comment

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

CAPTCHA


関連記事

no image

コマンドラインで動く、汎用i2sハイレゾモジュールの作り方(これまでのまとめ)。 (How to make a general i2s hi-resolution play-module with external bck clock using command-line on raspberry pi. And you can use gpio for operation)

これまでののうち、コマンドをまとめました。 <2018.4.28 追記 以下は、24ピンのラズパイBノーマルバージョンかつ当時のカーネルを使うことが前提になります。 今のカーネルには、bcm2708- …

no image

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

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

no image

ラズベリーパイ nanoでの行番号の表示の仕方

find / -name “nano*”で、nanorcを探す。 私のラズベリーパイの場合、 /etc/nanorcで発見できた。 nano /etc/nanorcで、設定ファ …

no image

ラズベリーパイ LANクロスケーブル接続を外部ネットへ ネットワークブリッジ 接続トラブル

ラズベリーパイとPCとを直接つないで、かつ、ラズベリーパイを外部ネットワークにつなぐ方法 トラブル対策 ラズベリーパイには、私はvolumioを入れたが、基本はリナックスなので、リナックスベースのプロ …

no image

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

やっと動きました!!音が鳴りました!! まずは、カーネルを改造せず、ラズベリーパイから提供されるBCLK、LRCK、DATAに加え、de0-socのpllで作成したマスタークロックのxckで音を鳴らし …

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

3PR エリア3 タイトル