何とか1番やっかいなデジタル・フィルタ部分のプロトタイプを書きあげました。ロジック設計は(も)ちまちました作業の連続で気が滅入ってしまうこともしばしばですが、とりあえずホッとしました。
デジタル・フィルタの仕様は、4倍オーバーサンプリング時が256TAP、2倍オーバーサンプリング時が128TAPのシャープ・ロールオフタイプです。
入力が32kHz/44.1kHz/48kHzなら自動的に4倍モードのフィルタ処理を、88.2kHz/96kHzなら2倍モードのフィルタ処理を、そして176.4kHz/192kHzならNOSで出力します。176.4kHz/192kHzも1サンプルあたりビットクロック32発分(16発/ch)で出力しますので、TDA1541AのI2S入力でも問題ないはずです。
その昔、CS8414では(CS8416でも同じ)176.4kHz/192kHzも1サンプルあたりビットクロック64発分(32発/ch)で出力されるのでTDA1541Aでは再生できなかったことを考えると、これも前進ではないかと・・・。
また、SAA7220PをTDA1541Aの前に置くと、32kHz/44.1kHz/48kHzより高いサンプリング周波数の信号を入れるとSAA7220Pが動かないという状況で、TDA1541AはCD専用と割り切らざるを得ない局面が多かったと思いますが、今回のSDRAM_DAI for TDA1541AならばTDA1541Aを実用的に使えるようになります。
88.1kHz以上の高音質ソースでTDA1541Aを鳴らしても性能が出せるのか?という疑問は置いておいて・・・。
さて、メインのモードが差動出しとなるので、出力はI2S(DATA)が2線になります。そして、内蔵するデジタル・フィルタはオリジナル設計とします。
どうしてもSAA7220Pを使いたいケースを考えて、このSDRAM_DAIには差動ではない1線のI2S出力モードも設け、こちらのモードはデジタル・フィルタを通さない信号をジッタレスで出力できるようにします。NOSがお好みなら32kHzから192kHzまでOKですし、48kHzのソースまでしか聴かないよ、という場合にはSAA7220Pを繋いでもOKです。
説明だけではわかりにくいかもしれませんので、概念図を用意しました。
出力のタイムチャートも描いてみました。
デジタル・フィルタを通る差動モードと、デジタル・フィルタを通らないノーマルモードの切り替えには、基板上のチップジャンパをopen/shortすることで切り替えます(シルクはジャンパにはなってませんが)。現行のPCM179*用基板では非公開のモードへの切り替えとして使っています(有用な機能ではないので非公開のままとします)。
とりあえずシミュレーション上ではデジタル・フィルタが一通り動き始めましたので、そのうちデバッグを始めたいと考えています。設計検証等にも時間がかかるので、リリースは11月に入ってしまうと思います。
あと、設計上の制約から場合によってはメモリをバイパスするTHRU(スルー)モードでは、差動/非差動の両方のモードでデジタル・フィルタを通さないような仕様になるかもしれません。
その前に、回路が現状のFPGAよりサイズの大きいXC3S200に収まりきるかどうかという検証もまだ完全にはできていませんでした(汗)。