ホーム フォーラム Texas Instruments マイコン C2000 TMS320F28075 演算処理について

このトピックには5件の返信が含まれ、3人の参加者がいます。6 年、 6 ヶ月前Ge Ge さんが最後の更新を行いました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #1376 返信

    fluto
    参加者

    TMS320F28075 演算処理について

    デバイス型番:TMS320F28075

    CLAの演算機能 FPU、TMUなどはメインプロセッサと何処まで同等に使用できますか、また、メインタスクでFPUなどの演算処理をしている最中に割り込みハンドラーないで演算処理がなされた場合にレジ素などの退避(演算中の値の保護)はなにも意識する必要はありませんか?

    #1377 返信
    Ge
    Ge
    従業員

    CLAにつきましては、コプロセッサの位置づけとなっており、メインCPUと同等の性能を持つものではございません。

    CLAの特徴につきましては、少々古い資料となりますが、以下の資料が参考になると思います。

     

    ○TMS320C2000:Piccolo MCUのソフトウェア開発入門(JAJA230A)

    http://www.tij.co.jp/jp/lit/an/jaja230a/jaja230a.pdf

    p.186 「10 CLA(Control Law Accelerator:制御補償器アクセラレータ)」

    本資料は、TMS320F2806xシリーズに搭載されるCLAについて記載されております。

    TMS320F28075では少し異なる点がございますので、本資料にて概要をご確認いただいた後は、

    テクニカルリファレンスマニュアル(SPRUHM9D)のCLA章をご一読ください。

     

    以下にTMS320F28075のCLAの特徴について、記載させていただきます。

    ・割り込み専用のプロセッサとなっており、通常CPUにある割り込みハンドラ以外のプログラムは動作しません

    – C2000のPIEに定義される割り込みから8つの割り込みをCLAに入力できます

    ・スタックを持っていないため、多重割り込みおよび、2段階以上の関数呼び出しには対応していません

    割り込みドリブンのプロセッサで多重割り込みには対応しておりませんので、コンテキスト(レジスタ)のセーブ

    などを意識する必要がなく、割り込み禁止などの制御も考慮する必要がありません。

    ・C言語の標準ライブラリ(printfやstring関連、itoaなど)には対応していません

    ・CLAは独立したバスを持っており、一部ペリフェラル・メモリのアクセスに制約があります

    (JAJA230に記載される内容と異なっている点になります)

    – アクセス可能ペリフェラル/メモリ:

    PWM, HWPRM, ADC, SPI, McBSP, GPIO

    LSx RAM, Dx RAM, CPU-CLA間MSG RAM

    – アクセス不可ペリフェラル/メモリ:

    SCI, I2C, USB, CAN, EMIF

    Mx RAM, GSx RAM, FLASH, OTP

    ・CLAのFPUはメインCPUと独立していますので、メインCPUの浮動小数点演算のタイミングには依存せず処理可能です

    ・CPUのTMUハードウェアアクセラレータは使用できません

    ・汎用レジスタは32bit x 4, 16bit x 2となっております

    (メインCPUの汎用レジスタは32bit x 8)

    #1498 返信

    mickey.mouse
    参加者

    メインプロセッサで、FPU、TMUを用いた少数点演算をしている最中に、割込みが発生してハンドラー内で異なった小数演算をしたことにより割り込み処理から戻った時に、影響(メインで計算していた途中のデータ)がでないことゆう認識でよろしいでしょうか、

    #1509 返信
    Ge
    Ge
    従業員

    FPU及びTMUは、どちらもFPUレジスタを使用して演算されます。このFPUレジスタは割り込み時にスタックにPUSHされ、割り込みから戻ったときにPOPされますので、演算結果に影響はでません。

    また、FPUにはHigh Priority割り込みと、Low Priority割り込みの2種類の割り込みが用意されております。これらの割り込みの使い分け方法については、以下のドキュメントの241pageに記載ございますので、併せてご参照いただければと思います。

    TMS320C2000:Piccolo MCUのソフトウェア開発入門
    http://www.tij.co.jp/jp/lit/an/jaja230a/jaja230a.pdf

     

    #1510 返信

    mickey.mouse
    参加者

     

    回答有難うございます。

    最後に、下記ダウンロードしたオブジェクトをデスアセンブルしたものですが、割り算やルート演算は、FPUもしくはTMUでを使用しているコードで間違いないでしょうか、

    判断方法があればコメントお願いします。

     

    デスアセンブルリスト

    #1514 返信
    Ge
    Ge
    従業員

    FPU Fast RTSライブラリでFPUを使用した演算は行われているようですが、TMUは使用されておりません。
    TMUの命令セット一覧は以下となります。


    TMUはIntrinsics関数を使用することで呼び出し可能です。
    controlSUITEに用意されている以下のサンプルプロジェクトが参考になると思いますので、こちらを参考にプログラムいただけますでしょうか。C:\ti\controlSUITE\device_support\F2807x\v210\F2807x_examples_Cpu1\tmu_sinegen

    また、TMU向けの各Intrinsics関数については、下記のコンパイラのマニュアルに156pageに記載がございますので、併せてご利用下さい。

    TMS320C28x Optimizing C/C++ Compile v18.1.0.LTS User’s Guide
    http://www.ti.com/lit/ug/spru514p/spru514p.pdf
    Table 7-8. C/C++ Compiler Intrinsics for TMU

6件の投稿を表示中 - 1 - 6件目 (全6件中)