• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

灰道三(はい!どうぞ)のブログ一覧

2020年12月19日 イイね!

とりあえず音が出ました

とりあえず音が出ました先日作成したオーディオクロック回路を使ってとりあえず音を出してみたいと思います。

シエンタで使っていた回路記述をベースに組んでみました。



ディレイは入れませんが構造上バッファメモリは必要なのでBRAMを入れます。
IPインテグレーターの仕様上BRAMの記述を内包できないのでBRAMのIPを外出しにしてます。
見にくいので後でメモリブロックのRTLとグルーピングしても良いかもしれません。


繋げるDACは2種類あります。
左のPCM5102Aと右のES9028Q2M基盤


PCM5102A基盤はDSDに対応していませんがES9028Q2M基盤にMCLKの入力が無いので両方用意してます。

高いからやめたけどAK4497買えばよかったと少し後悔(^^;;


今回はMCLKの確認をしたいのでPCM5102Aを繋いでみました。
前回のクロック回路と信号回路をインプリメントしてMCLKを繋ぐと上手く音が出ません。。。。

原因を探るべくオシロを見た結果
こっちがFPGA出力、上の黄色い線がMCLK、下の赤いのがBCLK


こちらがcombo384の出力



BCLKの立ち上がりタイミングが違います。


FPGAはMCLKからBCLKを作るので回路の遅延によりBCLKは右の方にズレてしまうのです。


音が出ないのはこれが原因であろうと推測しました。

ではどうやって直すのか??
答えはここの黄色い部分↓





MMCMという機能を使ってMCLKを位相を90度シフトする様にしました。
こちらが修正後の波形↓



全部確認できたわけではないですが、ズレもいい感じになり音もちゃんと出ました。
MCLKの僅かなズレでも音が出なかったりするんだなと思いました。

combo384の出力をよく見てみるとサンプリングレートで動きが違ったりするみたいで奥が深そうです。
Posted at 2020/12/19 13:20:31 | コメント(1) | トラックバック(0)
2020年12月11日 イイね!

FPGAでサンプリングレートを判定する(続)

FPGAでサンプリングレートを判定する(続)今開発している物は、シエンタに実装しているロジックをベースにしています。
サンプリングレート判定も同様でしたが、BCLKジェネレーターを作りながらオシロとロジアナを駆使して動作検証していたところDSD5.6MHzなのに時々DSD11.2MHzとして認識してしまうことがわかりました。
↓DSD5.6MHzだと赤色のBCLKが不安定






同じくDSD11.2MHzでもDSD5.6MHzで出る瞬間があり100MHzでの判定限界じゃなかろうかと思いました。
シエンタのDACはDSD5.6MHz迄なのでこの問題は起きなかった様です。



まあDSD11.2MHzを使うケースがあるかというとレアだと思うんですがwww





でも面白そうなんでやります!





解決策の案は2つ
(1)単純に判定クロックを200MHzにする。
(2)システムクロックを分周しゲートにしてLRCKを数える。(tomiiさん提案)



まず(1)
判定クロックを200MHzにする場合、システムクロックの12MHzをMMCMで逓倍して100MHzにしているので200MHzにするだけで回路は増えないです。
ただし周波数が高いほどノイズが出やすくなる等の問題に加えて、MicroBrazeで使うクロックは100MHzがデフォルトなので影響が分からないという懸念が...

試しに200MHzでインプリメントしてみましたが安定してました。


BCLKジェネレーターの話は別途(汗

ただ200MHzだとMicroBrazeが気になります。



次に(2)
システムクロックを分周してゲートにする案ですが、ざっと表で計算してみました。


12MHzを15回分周して366Hzを作る必要があります。
MicroBrazeで100MHzは必要なので、別に分周回路が必要です。
あとゲートの間隔分切り替えが遅れます。
ちょっと厳しい気がします。





で、どうしたものかとロジアナをよく見ていると100MHzでの判定は9割方正しく出来ている事が分かりました。
上手くすれば100MHzでもいける???

色々考えたところDSD5.6MHzとDSD11.2MHzの時だけ3回確認してOKならサンプリングレートを変えるという仕組みを入れてみました。
適当にそれらしきコードを入れてみます。






で、結果!!!!





上手くいきました〜
200MHz使わなくてもよくなった!!!
信号系は測定しながらじゃないと難しいですね。
Posted at 2020/12/11 19:45:26 | コメント(0) | トラックバック(0)
2020年12月10日 イイね!

FPGAでオーディオクロックを作る

FPGAでオーディオクロックを作るシエンタのシステムではMCLKとBCLKは入力のままで、LRCKだけリクロックしてました。
今回の基盤はここに外部クロックを入れています。


高精度な外部クロックでMCLK、BCLK、LRCKを作り出すのが目的です。

前回サンプリングレート判定回路と共にブロックデザインに入れていたクロック生成回路でMCLKとBCLKの出力を出せるようにします。




そもそもなぜサンプリングレート判定が必要かといいますと、MCLKとBCLKの周波数がサンプリングレートによって違うからです。
BCLKはMCLKを分周した値なので、回路記述をする前に、どのサンプリングレートの時にどれだけ分周するかを整理してみます。




PCM384KHzになるとBCLKはMCLKと同じですね(^^

サンプリングレート値は表のsrateで、5ビットの信号を使って定義して各ブロックに連携します。
ちなみに0ビット目は22.57MHzと24.57MHzの判定で、LUTに連結することで回路を節約できるようにしました。

簡単ですがコードを書きます。



case文でどれだけ分周するかを決めます。
分周しない場合はMCLKを出力です。


インプリメントしてオシロで確認します。
combo384をPCに繋いでこちらのソフトを起動します。




プルダウンからサンプリングレートを選択するとすぐ信号が変わるので試験に便利です。


まず44.1KHzから、赤いのがBCLKで黄色いのがMCLKです。
左下に周波数をでる様にしました。


48KHz


96KHz


176KHz




192KHz



352KHz





384KHz


DSD2.8MHz


DSD5.6MHz


DSD11.2MHz



合ってるかな?ぱっと見同じ画像だからわかりにくい....
PCM768MHzは対応して無いので試せず。

シエンタの回路はロジアナも無かったしオシロも古かったので大変でしたが今は楽ですね。
周波数自動計測とかしてくれるし手放せません。




Posted at 2020/12/12 11:25:15 | コメント(1) | トラックバック(0)
2020年12月10日 イイね!

FPGAでサンプリングレートを判定する

FPGAでサンプリングレートを判定する以前の開発でも同じ事を書いたのですが、今回はcmod A7-35Tを使って実装していきたいと思います。

とりあえずブレットボードに22.57MHzと24.57MHzの2系統のクロックとcombo384の出力でSDATA、LRCK、BCLK、DSDONを繋ぎます。



サンプリングレートを判定する理由は以下
・MCLK、BCLK、LRCKを高精度な外部クロックから生成
・サンプリングレートでTAのディレイが変わらない様にする

ザクッとブロックデザインを作ります。


サンプリングレートはLRCKで判定するんですが、DSD信号はLRCKにデータが載るのでDSDONのピンでBCLKを見に行く仕様にします。

判定回路とは別にBCLKのクロックジェネレーターと、動作検証用にCPUのMicroBrazeを入れてます。

レートの判定はLRCK(DSDはBCLK)の一周期で何回システムクロックをカウントしたかで判定しますがcmod A7-35Tは12MHzのクロックしか積んでいないので最大で11MHzの信号をカウントするには足りません。
なので一旦MMCMを使い100MHzまで逓倍します。
100MHzを元にバッファを考慮して判定基準を考えて見ます。


RTLで書くとこんな感じです。



カウントする信号の周波数が高くなるほど余裕が無くなりズレやすくなりますので実際に動かしながら修正した方がいいですね。

設計した回路をバイナリにして、先日紹介したXilinx Vitis 2020.2でMicroBrazeのソフトウェアを作ります。
MicroBrazeには信号をカウントするレジスタを繋げてあるので、USB経由でPC上のコンソールにリアルタイムに表示するプログラムを書きました。





実行するとこんな感じで出てきます。



やや安定度が良くないのでVivadoに付いているロジアナで調べてみます。

いろいろロジックを修正して直していきます。若干ケアレスミス発見。
いろいろ直しましたが、再生音源を変えて見ていくとDSDの5.6MHzがDSD11.2MHzで判定されるタイミングがある様です。

これは判定周波数が高い事による揺らぎが原因なので、少し判定のレンジを修正して、安定度を上げる仕組みを入れてみます。


判定出力を追加して安定した事が確認できました。カウンターは想定よりも前後に2ぐらいずれる場合がありますね。

こんな感じで機能ごとに作って動作検証してながら実装していきます。
オシロではピン出力を図ることはできますが、内部レジスタの動きまでは確認出来ないのでロジアナ機能は大変便利ですね。


次はブロックデザインに入れていた外部クロックからBCLKを生成するロジックを作ります。
Posted at 2020/12/10 11:12:43 | コメント(3) | トラックバック(0) | 日記
2020年12月09日 イイね!

Xilinx社のVitis統合環境を使ってみる

Xilinx社のVitis統合環境を使ってみるcombo384を入手し、新しいFPGAも先日届いたので、暫く出来ていなかった開発を進める事にしました。

何気なくバージョンアップしたXilinx社のFPGA用開発ソフトですが、仕様が変わり過ぎたので分かったことをレビューしてみます。


今までFPGAを開発するときは、ハードウェアデザインをVivado、ソフトウェアデザインをVivado HLSと言うソフトでやっていました。
ところがどこかのタイミングでソフトウェアデザインの開発をVitisと言う統合環境に移行したようでVivado HLSが削除されてしまいました。


VITISの説明を見ると、図の様にハードウェアを意識せずソフトウェアを開発する事に主眼を置かれたものの様です。


象徴的なのが最上段のCaffeやTensorFlowですね。
つまりAIのエッジデバイスとしてFPGAなどのデバイスを活用する世の流れに沿ったソフトウェア開発環境を目指しているという事です。

開発に使っているcmod A7-35Tは普通のFPGAなので、AIエッジデバイスとしては役不足です。同社のzynqシリーズというCPUとFPGAを両方積んだ製品が主力になる事を意味しているのでしょう。


以前作ったSpartan 6も現行のVivadoは対象外にされましたし、Artixシリーズも今後どうなるか怪しいですね....
旧製品が置き去りがちなのがXilinxの特徴



さてFPGAのソフトウェア開発環境は何処へ?と言ったところからですが、Vivado 2020.2をインストールするとVitis HLSと言うソフトが入ってきます。

で、インストールされた物から該当しそうなソフトウェアを探したところVitis HLSというVivado HLSに似た名前のソフトがあったので動かしてみました。






結論.......間違いでした。


正解はXilinx Vitis 2020.2というツールの様です。
HLSは元々高位合成と言ってC言語などからハードウェアを設計するツールなので、ハードウェア上で動作させるプログラムを設計するものではない為分離させたのでしょうね。

ちなみにXilinx Vitis 2020.2は今までフリーライセンスユーザーがインストールしていたwebパックと言うバージョンではインストールされ無いようです。
インストール画面でVitis HLSではなくVitisと言うのが入ったパッケージを選ばないといけないようでした。↓




Vitisを起動するとこんな感じで以前に使っていたVivado HLSの面影があるものの、かなり違うツールになってます。





個人的には以前より使いやすいのでは?と思ったのですが、全くの初心者だとこちらの本の内容はほぼ使えなくなりました。


作者さんのブログをみてお勉強します。
ソースコードよりツールとチップセットの理解に費やす時間の方が多い....

Xilinxって凄いんだけど追いつけない、ホビーユースで使いこなしてる人いるのかな?
IntelEdisonといいニッチなデバイスに立ち向かってる私:(;゙゚'ω゚'):
Posted at 2020/12/09 23:51:38 | コメント(1) | トラックバック(0)

プロフィール

「@新横浜支店 さん>銘品の気配がしますね🤭」
何シテル?   06/07 12:26
灰道三です。よろしくお願いします。 グレー(灰)のストリートトリプル(道三)というバイクに乗ってます。 カーオーディオはハイレゾシステムの車載を進めてますが、...
みんカラ新規会員登録

ユーザー内検索

<< 2020/12 >>

  12345
678 9 10 1112
131415161718 19
20212223242526
2728293031  

リンク・クリップ

筑西カーオーディオミーティングに行ってきました。 
カテゴリ:その他(カテゴリ未設定)
2025/06/30 21:24:18
ハイブリッド車の「整備モード」移行方法 
カテゴリ:その他(カテゴリ未設定)
2024/08/03 20:48:58
【デッドニング】天井の施工 
カテゴリ:その他(カテゴリ未設定)
2023/12/19 19:48:22

愛車一覧

トヨタ シエンタ トヨタ シエンタ
P80系からの乗り換えです。 スッと曲がるし、滑らかに加速するし、欲しい機能は付いている ...
トライアンフ ストリートトリプル トライアンフ ストリートトリプル
愛車です。 トライアンフは始めてですが、三気筒のエンジンフィーリングが素晴らしいです。 ...
トヨタ シエンタ トヨタ シエンタ
子供と妻の為にコンパクトでスライドドアのシエンタにしました。 前車も丸目インプレッサでバ ...
ヘルプ利用規約サイトマップ
© LY Corporation