2020年7月22日水曜日

STM32でDCCを作る方向で (30) feedbackの研究

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.

ーーーー
STM32でDCCを作ろう!         INDEXページへ

DDCじゃなかったっけ?とたまに思うのだが、たしかDCCで合ってると思うけど、何の頭文字なのかは忘れちゃったんだ.

feedback、難物だ.アゲアゲ/サゲサゲのNFBだがHOSTの挙動がよく判らないのでloopを安定させるのが難しい.

各部を検証していたところ、しょーもない事実を知ったのでここに記しておこう.

繰り返しになるけど、feedback値の定義は、1マイクロフレーム(125uS)内にFsが何発あるか? である.

現状この実装をどうしているかというと、
・STM32のTIMを使う
・外部クロック512FsでTIMをclockingする
・SOF割り込み(125uS)毎にTIM counterを採取する
・1つ前の採取値との差分でfeedback値を得る

SOF割り込みのSOFとはStart Of Frameの略だったと思う.SOF割り込み周期=マイクロフレーム周期である.SOFの検出はUSB packetをhardware的に処理していると見えて、時間変動はほとんどない事を確認済である.

ところが、SOF割り込みは時間変動がとても大きくてこの写真のようになっている.ひどいぶれぶれだ.これではfeedback値を高精度に測定するのは不可能だろう.平均化処理をたくさんやってもどこまでいけるか怪しい.
(SOF割り込み周期が短くなった様に観測されているがそれは前回が遅れていたせい)

hardwareによるSOF検出は高精度なのに、SOF割り込みは写真の様な低精度になってしまっている.その原因は、packetが来た瞬間はいろんな割り込みが同時発生するので多忙なのだろう.
STM32は割り込み優先度をある程度調整できるのでUSBを高優先度にすれば軽減できるかもしれない.datasheetを読むとデフォでUSBの割り込み優先度は全体の中で低い部類のようだ.

何か解決策を探します.

かしこ

3 件のコメント:

  1. >DDCじゃなかったっけ?とたまに思うのだが、たしかDCCで合ってると思うけど、何の頭文字なのかは忘れちゃったんだ.

    残念ながら、この意味では
    「DDC」
    が、正解のようです。Wikipediaにも、項目がありました。
    https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB-%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E5%A4%89%E6%8F%9B%E5%9B%9E%E8%B7%AF

    このページの図が判りやすいです
    http://amata.info/archives/4777203.html
    (元ページは、消滅している模様)
    USB入力を、S/PDIF, I2S, AES/EBU などに変換する機器

    -----
    どうでもいい話ですが、私は古い人間なので、「DCC」というと、つい
    「デジタルコンパクトカセット」
    を、思い出してしまいます・・・
    ※今では考えられないが「DCC(固定ヘッド) vs DAT(回転ヘッド)」なんていう戦いがあったのでした。
    ちょうどこの頃私は、音響機器開発の仕事をしてたので、「オーディオフェア」とか、
    よく行ってたんだよな。説明員とかもやったことありますよ。

    ※まぁ結局、今となっては両者とも「半導体記録装置(要は、フラッシュメモリ)」に、
    飲み込まれてしまったわけですが・・・

    返信削除
    返信
    1. 「ぼくは・・・取り返しのつかないことをしてしまった・・・!」(アムロ)
      というわけで次回からはDDCと名乗ることにしようそうしよう.

      Philipさん、よくDCCなんつうものを作ったものだと当時感心しました.
      わたしはDAT屋でしたけど.

      鉄道模型のCPUコントローラをDCCと呼ぶらしいです.

      削除
    2. オーディオフェア説明員一回やった気がしますー

      削除