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%デューテイ比等難しいと思いますし、割り込みが入るとクロックとしての信頼性が減りますよ。
  • IKUZO san

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

    takase
  • fujita さん。

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

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

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

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

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

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

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

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