Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

GPIO の代わりに高速でON-OFFできるI/Oは?

毎々お世話になります。

GPIOのPort出力で CLKを作ろうとしたのですが周期が750nsと遅いので、もっと速い

出力はないでしょうか?

お手数ですがよろしくお願いします。

高瀬

  • > GPIOのPort出力で CLKを作ろうとしたのですが周期が750nsと遅いので、もっと速い
    > 出力はないでしょうか?

    PWM 出力やらでそれより速い出力も可能と思いますが、それ以前の話として GPIO の ON/OFF でももっと早い出力は可能と思います。
    要求仕様として必要な周波数はあると思いますがその点は明らかにできない理由等あるのでしょうか? 簡単な方法としては外部にオシレータモジュール等を用意する方法も考えられます。RZ という比較的高価なマイコンを使用して GPIO の ON/OFF でクロックを作るという意図は正直推し量れないものがあります。
  • takaseさん
    GPIOでなくてもタイマー出力やらシリアルI/Oとかマニュアルを読むと沢山候補はあると思いますよ、GPIOでやると50%デューテイ比等難しいと思いますし、割り込みが入るとクロックとしての信頼性が減りますよ。
  • In reply to IKUZO:

    IKUZO san

    どうもありがとうございます。 
    ターゲットはRZ/A1LU または RZ/A1H なので タイマー出力を使用してみます。

    takase
  • In reply to fujita nozomu:

    fujita さん。

    投稿どうもありがとうございます。

    ターゲットはRZ/A1LU または RZ/A1H なのです。

    外部のICに 8ビットパラレルデータを与え、 それを立ち上がりのエッジでラッチさせるのにGPIO を使用しようとしています。 ラッチの周期を10MHz程度にしたいのです。 
    8ビットパラレルデータもGPIOなのでそれらもスピードアップしないとなりません。
  • In reply to takase:

    takaseさん
    「外部のICに 8ビットパラレルデータを与え、 それを立ち上がりのエッジでラッチさせるのにGPIO を使用しようとしています。 ラッチの周期を10MHz程度にしたいのです。」
    それに適しているのはDMACではないでしょうか、外部バスでないといけないですが。
  • takaseさん、こんにちは。NoMaYと申します。

    RZ/A1に詳しくないですが、今までも、がじぇるね や かふぇルネ で、ポート出力が遅い、という話を何度か読んだ記憶があります。それらの結論は、どれも、RZ/A1はそういうもの、でした。(つまり、GPIOのアクセスのウェイトを短くするレジスタがあるよとか、ライブラリ関数を使うと遅いけれども直接叩くとずっと速いよとか、そういう話は無かったと記憶しています。)

    ライブラリ関数を使うより直接叩けば何がしか速くなるのは当然ですけど、今回は、直接叩いても、欲しい速さが出ないということですよね? 具体的に、どういうCコードで、どういうアセンブラコードが生成されて、オシロ上でどういう波形になっているのか、教えて頂くことは出来ますか?

  • In reply to NoMaY:

    NoMaYさん
    GPIOのアクセスで10M Byteは無理じゃないでしょうか?1Mだと500nSですからこれをやるとプログラム実行する時間がなくなっちゃう。2コアでもあれば?
  • In reply to IKUZO:

    IKUZOさん、こんにちは。NoMaYです。

    400MHz動作のRISCプロセッサですよ。基本的には1命令実行の時間は2.5nsですよ。RL78では、GPIOアクセスにウェイトは入らないので、(それだけに掛かりきりになれば)32MHz動作なら16MHzのパルスが出せるはずですし、RXでは、120MHz動作でも内蔵周辺バスのクロックは60MHzまでなのに加えて数クロックのウェイトが入りますけど、(それだけに掛かりきりになれば)10MHz弱ぐらいのパルスは出せそうに思うのです。他方、RZ/A1は400MHz動作の割に何か異様に遅い(らしいっぽい)のですよ。(というのが、がじぇるね や かふぇルネ で、私が受けた印象なのです、、、でも、念の為、アセンブラコードも確認しておきたいな、と思ったのです、、、) あと、もしGPIOアクセスに非常に多量のウェイトが入る回路設計になっていたとすれば、DMAを使っても非常に多量のウェイトが入るだろうと思いますので、DMAを使っても速くならないかも、と思ったのです、、、

  • In reply to NoMaY:

    NoMaYさん
    ほんとによく調べて頭が下がります、なんと2.5nsなんですか、私の頭が古いのかもしれませんね、私の苦労した経験では8Bit同時出力でタイムラグというのがどれぐらいなんでしょうか、GPIOアクセスでそれぞれ1nS以内とか、それぐらいだとパソコンの USBの2.0でPCI BUSで最大20M Byte ぐらいでしたから、それ以上ぐらいはできるということでしょうか、でも1GHzのマイコンなんていうのもありますが、そんなに早いような感じはしないのですが、多分ですがCPUのクロックと周辺機器に供給するクロックとは別なんでしょうね。
  • 現在 MMU を OFFにしているのですが ONにしたら少しははやくなるでしょうか?
  • In reply to しげやん:

    > ONにしたら少しははやくなるでしょうか?

    何がですか?
  • Takaseさん
    SRAMインタフェースを使えばパラレルアクセスが超高速の2クロック30nsec単位でアクセスできますよ。
  • takaseさん、こんにちは。NoMaYです。

    たまたま がじぇるね のスレッドを見ていて、こういう書き込みがあることに気付きました。実は、ライブラリ経由でも、充分に速いのかも知れません、、、(WS28212BはNeoPixelのテープLED、digitalWriteはGR-PEACHやGR-LYCHEEのArduinoライブラリの単純にポートをHighにしたりLowにしたりするライブラリ関数、です。)

    japan.renesasrulz.com/gr_user_forum_japanese/f/gr-rose/5893/neopixel-and-current-meassurement/32882#32882

    WS28212Bはおよそ100ns程度でのポート制御が必要なのですが、GR-PEACHやGR-LYCHEEは処理が早いため、単純にdigitalWriteでのピン操作を追加しているだけになってます。

  • takaseさん、こんにちは。NoMaYです。

    また がじぇるね のスレッドですが、その書き込みの後で、こういう書き込みがあることに気付きました。ポートのHigh/Lowの長さの微調整を100ns程度で行っている、ということで、100ns程度の幅のHigh/Lowを作るような制御をしている訳では無さそう、でした。振り出しに戻ってしまったようで、どうもすみません。

    japan.renesasrulz.com/gr_user_forum_japanese/f/gr-rose/5893/neopixel-and-current-meassurement/32914#32914

    テープLEDに使われているLEDは1個あたり24ビットでRGBを表現しており、1ビットは約1.2usのため、1個で30usかかります。420個の場合、全LEDの表示を変えるのに12msぐらいかかることになります。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page