特許の進捗FPGA対応

現在位置のナビ

トップコンピュータの国雑記帳趣味趣味音響特許 → 特許の進捗FPGA対応

説明

ここでは、特許に関わるFPGA採用の進捗を取り上げます。

2020年9月19日の状況 GALを使って試作

PSoC4 prototyping kitの代替手段を試しました。 PSoC4の代わりにATF22V10CというGALを2個使って、追加変調しています。 ATF22V10Cでは使えるFlipFlopの数が少ないので、PSoC4と比較すると厳密にはヒゲパルスが増えていますが、聴感上は同じに聴こえます。

ATF22V10Cを使ったヘッドフォンアンプ

2020年11月18日追記

GALを2020年にいまさら使うため、 まごころせいじつ堂 を参考にしました。

GALのロジックを組むWinCUPLは、Windows98時代のUIです。 Windows10でもちゃんと動作するのですが、GALのリソースが不足しても警告を出さなかったり、エラーメッセージがエラー内容と食い違っていたりするところに時代を感じます。

2020年12月2日の状況

GALを搭載するプリント基板を作ってみました。

XMOSとGALを使ったヘッドフォンアンプ

評価中ですが、11.2MHzfsのΔ∑ではノイズがでます。 GALのスピードが追いつかないようです。 5.6MHzfsでもノイズっぽいので、GALをこの目的で使用するのは、信号処理のタイミング的に無理があるのかもしれません。

2020年12月8日追記

ノイズの主原因がわかりました。 XMOSにもAmaneroと同じアプリでDoPを送っていたのですが、AmaneroはBigEndianでXMOSはLittleEndianです。 XMOSにLittleEndianのDoPを送るようにしたら、ノイズが減りました。 詳細評価は、これからします。

2020年12月14日追記

5.6MHzfsのΔ∑は問題なく再生しています。 11.2MHzになると、ノイズが乗ります。 GALの動作速度が11.2MHzに追いつかないようですね。

2021年7月10日の状況 試作 Tang Nano

SiPeed Tang NanoというFPGAデバイスを見つけて試しているところです。 Linuxで開発からコンフィグレーションまでできることになっています。 FPGAのコンフィグレーションを書き込もうとすると、SRAMには書き込めますがFlash ROMに書き込めません。 しばっち電機のブログによると、比較的新しいプログラマソフトの問題のようです。 GOWIN社に問い合わせているところです。

2021年7月11日追記

sipeed社のサポートにもメールしておきました。

これこそが、チャイナクオリティですね。

さらに追記

sipeed社のサポートに出したメールがエラーで返ってきました。

<support@sipeed.com>: host mxbiz1.qq.com[203.205.232.191] said: 550 Ip
    frequency limited.
    http://service.exmail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000725
    (in reply to end of DATA command)

まったく、チャイナクオリティですね。

2021年7月13日の状況

Tang Nanoを使ったヘッドフォンアンプできました。

Tang Nanoを使ったヘッドフォンアンプ

Tang NanoのSRAMにコンフィグレーションを書き込むと、正常動作します。 Flash ROMにコンフィグレーションが書き込めれば、完璧なんですけどね。

2021年7月14日追記

gowinのサイトからプログラマの旧バージョンがダウンロードできました。 gowinのサイトはわかりにくいです。 www.gowinsemi.com.cnを表示して英語表示を選択すると、www.gowinsemi.comに遷移して開発ツールはダウンロード出来なくなります。 www.gowinsemi.com.cnの表記は中国語のみなので、chromiumブラウザで翻訳しながらでないと目的地にたどり着けません。

Linuxで、V1.9.5Betaを動かそうとしたら、カーネルがバージョン5.4以降だとstimeシステムコールの問題で動作しません。 最新バージョンのプログラマで、書き込みクロックをいろいろ変えて試していたら、SRAMへのコンフィグレーション書き込みまでできなくなってしまいました。

githubにopenFPGAloaderというレポジトリがあります。 安定バージョン0.4.0を入手してTang Nanoに書き込んでみましたが、最新のGoWinプログラマと同じ挙動でした。

WindowsにV1.9.5Betaをインストールしても、Tang Nanoがdevice not foundになってしまいます。 クロックをいろいろ試していたせいでFPGAが変なモードになってしまったのか、Windowsからも書き込み不可能なのか、現時点で判別つきません。

Tang Nano側の端子はUSB typeCです。 開発ホストとTang Nanoをつなぐケーブルは、100円ショップで買えるUSB 2.0で使えました。

2021年7月15日追記

seeedstudio.comで売っているTang Nanoのコメントコーナーに、「最新プログラマでFlash ROMに書き込めない」と英語で書いてみましたが、1日も経たずに消されました。 自分に都合の悪い情報はなかったことにするなんて、日本の政治家みたいなチャイナクオリティですね。

2021年7月16日追記

Tang NanoのFlash ROMに書き込み成功しました。

何度リブートしてもTang Nano デバイスを認識しなかったWindows10ですが、1晩寝たらCOMポートとして認識するようになりました。 書き込み成功するまでにいろいろ試したので、何が決定的な原因だったか切り分けできていません。 成功条件は、以下です。

数時間放置したら、またSRAMへのコンフィグレーション転送まで受け付けなくなりました。 Flash ROMに一旦書き込んだコンフィグレーションも無効です。 不安定なFPGAですね。

2022年1月5日追記

Tang Nanoバージョンのヘッドフォンアンプに問題を発見しました。 Bump Of Chickenの『なないろ』を再生すると、ヴォーカルにビブラートがかかているかのように強弱変化します。 強弱変化は、ドラムのタイミングに同期して低音が出るとヴォーカルが弱くなります。 手元のヘッドフォンアンプはTang Nanoの他にPSoC4や Tang Primer、74HCシリーズなどを使ったバリエーションがありますが、この問題はTang Nanoバージョンだけに発生します。

念のため、消費電流を測ってみました。

Tang Nanoバージョン
未再生時0.14A、無音再生時0.16A、再生時0.17A
Tang PrimerやPSoC4バージョン
未再生時0.14A、無音再生時0.15A、再生時0.16A

平均消費電流は0.01Aの違いですが、電源回路の2200μFの電解コンデンサーでは、Tang Nanoが出力スイッチするときに消費する電流で電圧降下が起きているのかもしれません。

2022年4月5日追記

ビブラート問題が解決しました。 FPGA内部でイベント処理に使う信号を、Tang Nanoのクロック端子に入れればよかったのでした。 我が家にはFPGAの入門本が4冊あるけど、どれにもクロック端子の説明が書いてないぞ。

2022年7月23日追記

備忘録です。

Tang Nano の入力にXMOSの出力がつながっている時、Tang Nanoよりも先にXMOSの電源が立ち上がると誤動作します。 Tang Nanoの9ピン(基板の9ピンJTAG接続にも使う FPGAの20ピン)を入力ピンとして使用しているからかもしれません。

2022年7月27日追記

どうも、Tang NanoやTang PrimerのFPGAコンフィグレーションツールには、論理合成のバグがあるみたいですね。 Verilog HDLで書いたとおりに動作しません。 GNU cverのシミュレーション結果は期待通りに動作するので、コンフィグレーションツールのバグだと思います。

2022年7月29日追記

Tang Nanoの出力をLAP-Cのロジアナでチェックしていたのですが、Tang Nanoに問題があるのではなくてロジアナが故障したようです。 ロジアナ上では音楽になりそうもない信号が出ていますが、ヘッドフォンを繋ぐとちゃんと聴こえます。

2023年5月17日追記

ロジアナは正常でした。 一見音楽に見えない信号でも、音楽としてちゃんと聴こえていました。 コンフィグレーションツールのバグを回避して、期待の信号を作ることに成功しました。 HDLの if else条件分岐に頼らず、入力信号とそのラッチを組み合わせて、論理演算で出力信号を作るようにしたら、期待通りに動作しました。 中国製コンフィグレーションツールのチャイナクオリティなのか、HDLツールはみんなこの程度なのかは、HDLの経験が少ないので評価できません。

2021年7月27日の状況 部品発注

AliExpressにTang Nanoを注文していたのですが、届いたのは蛍光色のステッカーでした。 AliExpressサイト上でDispute手続きに入りました。 ショップの名前は、"WAVGAT authorization Store"です。 チャイナクオリティですね。

AliExpressへの注文が3回連続して届きませんでした。 中国も悪い人ばかりでは無いと思いますが、こうも続くと信用できなくなります。 それでいて、「中国人を馬鹿にするとただじゃおかないぞ」とか言うから嫌われるんですよね。

2021年8月4日追記

AliExpressのDispute手続きは、中途半端です。 WAVGAT authorization Storeは、2回連続して「返金しないぞ」と言ってきました。 このまま返金されないと、AliExpressがVISAカードのブラックリストに載ることになるんですけどね。

Seeedに注文していたTang Nanoが届きました。 Tang Nanoを注文するのはSeeedがよさそうです。 Windows10で開発ツールのV1.9.5Betaを使用して、フラッシュROMに書き込みできています。 ようやく作業が進みそうです。

2021年8月12日追記

AliExpressはRefund手続きに入りました。

昨日の深夜からTang Nanoの開発ツールの認証に失敗します。 開発ツールが起動しないので、開発できません。 相変わらずチャイナクオリティですね。

2021年8月17日追記

Tang Nanoの開発ツールは、翌日には使えるようにもどっていました。 今、USB type C端子から給電したときと、5V端子から給電した時の挙動の違いで困っています。 24MHzのクロック(FPGAの35ピン入力)でウォッチドッグタイマを作ったのですが、5V端子から給電するとうまく動作しません。 公開されている回路図を見る限り、給電方法による違いは見つかりません。

2021年10月13日追記

SeeedのTang Nanoは、在庫0個で止まっています。 AliExpressに新たにSipeed直営ショップがオープンしたようです。 今AliExpressに注文している基板が届いたら、Sipeed直営ショップを試してみます。

2021年12月19日追記

Digikey でTang Nanoを扱うようになりました。 12月14日に発注して、UPSで今日届きました。 中国から発送するより早く届きます。

2022年4月3日の状況 試作 Tang Primer

FPGA の tang primer でI2S信号をPDMに変調することに成功しました。

Amanero出力をPDM変調するTang Primer

これで一般的なI2S信号をPDM出力できるようになりました。 もう、AK4137はいりません。 Amanero出力ならPCMでもDSDでもPDM出力できます。 Amanero以外にS/PDIF信号とか、7.1chデコーダーとか、Raspberry Piの出力もPDM出力できます。 一気に応用範囲が広がりました。

2022年4月4日追記

あれほど安定して動作していたFPGAですが、一晩寝て起きたら動作しません。 AK4137もそうだったけど、最近の半導体って不安定ですね。

2022年4月12日追記

何度かコンフィグレーションをやり直したら、またFPGAが安定動作するようになりました。 Tang Primerではなくて、Tang NanoでもPCMをPDM変調できるようになりました。 回路自体は2021年7月13日の写真と一緒です。

2022年4月17日追記

FPGAによるPCMのPDM変調が安定しているので、1ヶ月ほど評価試験中です。 評価試験が終わったら、インプレッションを書きます。

2022年4月25日追記

おまたせしました。 インプレッションです。

比較試聴の条件

まずFPGAによる⊿∑変調のスペックを書きます。 入力のI2S PCMを64倍のサンプリング周波数を持つ⊿∑に、1次変調器で変調しています。 入力がCDDAだったら、⊿∑は2.8224MHzになります。 入力が352.8kHzfsだったら、⊿∑は22MHzになります。 サンプリング周波数を64倍する時に、ローパスフィルターは使っていません。 階段状に64個同じデータを並べています。

今まではAmaneroに⊿∑を送らないとPDM再生できなかったので、ソフトウェアで⊿∑変調までしていました。 入力がCDDAの場合、まず8倍周波数352.8Khzにして同じデータを8個並べます。 次に32bit浮動小数点演算で8191タップのFIRで20kHz以上の音声データを急峻にカットしています。 次に352.8kHzを32倍周波数の11MHzの⊿∑に1次変調器で変調しています。

⊿∑をPDMに変調するのはFPGAに任せます。 入力がPCMでも⊿∑でも、PDM変調はFPGAがやります。 PDM変調の動作はPSoC4とまったく同じです。

Webmasterのインプレッション

PCM入力でも、⊿∑入力でも、出音は非常に近いです。 違いがわからないくらいです。 AK4137で⊿∑変調していたときは、出音に丸みがついたような印象がありましたが、今回はそんなに違いません。 あえて言うならば、ソフトウェア変調の方が滑らかで、FPGAで⊿∑変調すると硬いような気がします。

第3者のインプレッション

第3者にも聴き比べをお願いしました。 「PCM入力のほうが、音像の定位や音場感が良い」との感想をいただきました。 Webmasterがよく聞くR&Rでは、その違いがよくわかりません。 オーケストラのワンポイント録音音源ならば、違うような気もします。

PDM方式の弱点

PDM方式は⊿∑を追加変調しているので、⊿∑の欠点が出ます。 エレキ工房No.5に書いたように、少レベル信号は⊿∑変調すると可聴帯域にノイズが乗ります。 初期のCDは低レベルで取り上げたユーミンのMISSLIM4曲めを再生すると、ノイズが聞こえます。 ノイズの出方はPCM入力のときとソフトウェア変調のときで違いますが、楽曲を邪魔するノイズが聴こえることに変わりはありません。 ⊿∑変調器を高次にするとノイズが減るかもしれませんが、未確認です。 AK4191が入手できたら、FPGAの代わりに⊿∑変調させてみたいです。

2022年4月28日追記

試作機のうち、AK4137でPCM→DSD変調する個体でユーミンのMISSLIM4曲めを再生してみました。 ノイズは聴こえません。 昔SHARPが作った7次変調器のような工夫をこらした⊿∑変調器ならば、ノイズは解決できそうです。

FPGAを使った最新試作機のブロック図を掲載します。 ブロック図の中の青い箱は買ってきた部品をそのまま使っているところで、オレンジの箱はwebmasterが作った部分です。

最新試作機のブロック図

部品がある間は、オレンジ部分の部品を有償で提供できます。 ご希望の方は、webmaster@nakata-jp.orgまでご連絡ください。

2022年7月2日追記

ふと思いついて、自宅の試作機全部で順番にユーミンのMISSLIM4曲めを再生してみました。 AK4137を搭載しているかどうかとは関係なく、ノイズの大きい個体と小さい個体があります。 もう少し、原因究明した方が良さそうです。

2022年7月5日追記

FPGAでノイズが乗る原因の一つは、わかりました。 ネットに広まっているTang Nano, Tang Primerのピン配列の情報の中に間違っているものが混ざっています。 それ以外にも問題を発見したので、追跡中です。

https://dl.sipeed.com/shareURL/TANG/Premier/IDEで配布しているTang Primer向けIDEツールのライセンスファイルがおととい期限切れになりました。 support@sipeed.comにメールしたらエラーで返ってきました。 現在、Tang Primerでの開発ができません。

2022年7月6日追記

昨日の記述を書いた後で、新しいライセンスファイルが公開されました。 Tang PrimerでもTang Nanoと同様の出力になりました。

2023年5月12日の状況 試作 PCM2706

Amanero Combo384ではなくてPCM2706のI2S出力を tang nano でPDMに変調しました。

PCM2706出力をPDM変調するTang Nano

Amanero Combo384の出力をPDM変換すれば、品質的にも機能的にも充分です。 わざわざPCM2706とつないでみせたのは、「I2S入力なら多様なデバイスに対応していること」と「安く作れる」ことを示すためです。 性能的には、TCXOクロックからI2S信号を作るAmaneroよりもPLLでI2S信号を作るPCM2706の方が不利です。 CDDAの再生でどのくらい音質に差が出るか、調べてみます。

2023年6月5日の状況 試作 MAX10

Amanero Combo384の出力をIntelのFPGAであるMAX10で変調できました。 Verilog HDLはTang Nanoと同じです。

Amanero Combo384出力をMAX10でPDM変調する

2023年11月20日の状況 試作 Raspberry PiのI2S直結

Raspberry PiのI2S出力をTang Primerで変調しました。 ⊿ΣoverI2Sにも対応しています。 スピーカー向けの出力信号も出ていますが、今回はヘッドフォンだけ実装しました。

Raspberry Pi I2S出力をTang PrimerでPDM変調する

2024年11月6日の状況 試作 Tang Nano 9k

FPGA の tang nano 9k でI2S信号をPDMに変調することに成功しました。

Amanero出力をPDM変調するTang Nano 9k

Tang Nano 9k を使うための小手調べで、ヘッドフォンアンプを試作しました。

テーマ別の話題

更新日

2022年12月16日 記事を分割

2024年11月6日 追記


back button 特許へ