• ベストアンサー

シリアル・データ転送の変換について

お世話になります。ゲートアレイを使うまでも無く、単にシリアルデータ(現在H8を使用し元振16MHz)を早いクロックで転送したい変換ロジックを考えています。出来るだけ簡単簡潔にコンバートする方法を教えてください。データは8ビットです。

質問者が選んだベストアンサー

  • ベストアンサー
  • umamimi
  • ベストアンサー率39% (144/362)
回答No.6

No.1、No.2補足欄を読みました。 クロック (SCKのこと?)を途中で早くしたい? H8の内部設定をよく知りませんが、H8内部レジスタの設定変更でSCKの周波数アップできるのでは? 既に上限だとか? それに途中での変更が問題ないか、です。不確定なら、いっそ最初から高速にしとけば 心配ないです。途中で変える理由がなければ、ですが。 シリアル出力側 SDO は SCK と同期して出てくるので、外付け回路で通信速度アップはできませんよ。 シリアル入力側 SDI は与える SCK に同期して受け取るので可能でしょうけど。 No.3補足欄では現状のSPI とは別に 74HC595とHC165 で別経路を加するならって事ですか? これらのICでは、シリアルデータ8bitの区切りなんて関知しませんから、 No.4さんが言われるように、例えば送信時にクロックを8発だけ出す、というような制御回路も要ります。 送信側は8bitデータの他にクロック8発出すトリガとなる「送信開始だぞ」という信号、 受信側はソフトが受け取る為に「8bitデータがそろったぞ」という信号も、 ソフト・ハードの間でやり取り、つまり最低でもPIOポートが要ります。 尚、データが連続してやってくるようなら、ハードウェアのバッファも設けないと 取りこぼす恐れが出てきます。 H8マイコンにI2Cが余ってるなら、これをSPIに変換する回路をCPLDで作った例があるので、 FPGA に組み込んでもらうのがいいかも。 (速度アップするのか、等の調査確認は全く行ってません) CPLD でシリアル・バス (I2C-SPI) 変換を実現 http://www.altera.co.jp/products/cpld/functions/i2c_spi.html MAX II CPLDよるSPI-I2C変換 - 日本アルテラ http://www.altera.co.jp/literature/an/an486_j.pdf

noname#173521
質問者

お礼

有り難うございます、懇切丁寧なご報告に感謝申し上げます。やはりFPGA設計で無いと無理なのでしょうか?私もFPGAが組めないものですから、ハードロジックで構成するのが手っ取り早いのですが、このあたりを外注に任せるとFPGAで設計してきますね。どうしても外部PLCとのやりとりでスピードを4MHzに上げなければなりません。H8も3048なので1MHzが精一杯なのです。

その他の回答 (6)

  • kaoaru
  • ベストアンサー率33% (42/127)
回答No.7

>単にシリアルデータ(現在H8を使用し元振16MHz)を早いクロックで転送したい変換ロジック 元の転送レートが遅ければ何の効果もでないですが・・・。最初から早いレートで転送しないと意味がないです。 もっとも、115kbpsを超えると実用性というか実現がむずかしくなります。マイコン系ではこのあたりがひとつの目安です。16MHzのH8なら115kbpsできるハズですが・・・。SCIでもソフト転送でも。 それなら、パラレルに切り替えたほうが早いのでは?8ビットだし。

  • uruz
  • ベストアンサー率49% (417/840)
回答No.5

回答としてはNo4さんの回答となりますが 質問の背景がまったく見えないですね RS-232Cならボーレート固定の低速機器と高速機器間の接続で途中でボーレート変更が必要なケースが無いとは言えないがSPI通信は同期通信なので途中でクロックを上げる意味が全く想像できない・・・・・ 途中でクロックを上げても送信レートは送信元の速度でしか通信できないですし・・・・

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.4

結局、8ビット分のクロックをどうするかですね。 8ビットのみクロックを動かして止めないといけないのかとか、イネーブル信号を制御しないといけないとか、そうなってくるとFPGAでやったほうが楽ですね。 後は、PICとかワンチップマイコン持ってくる以外には方法は無いですね。

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.3

8ビットのデータを1バイト送るだけなのか、連続したデータを送るのかによって方法は変わりますね。 DIOのSCKを早くしたいだけなら、CPUのクロックを25MHzまで上げるとか方法もあるし。 ソフト的にはforループで8ビット分DIOを制御するとか。

noname#173521
質問者

補足

ソフト処理は無理なので、ハードで何とかクリアしたいのです。単純にHC595とHC165の組み合わせで可能ですかね?クロックはエプソンなどで用意されているオシレータなどを使用して・・・・・。素人考えは甘いかな。

  • umamimi
  • ベストアンサー率39% (144/362)
回答No.2

>出来るだけ簡単簡潔にコンバートする方法 目的、用途、状況によって変わってきます。 シリアル通信の方法が公的規格に準拠してるものなら、それ用のインターフェースLSIの 既製品を使うのが、細かい箇所を1から設計しなくてよく、 設計・デバグの手間時間コスト、バグ発生リスクがない点で簡単簡潔です。 使う為の勉強と調達の手間時間コストは要りますが。 H8マイコンでシリアルインタフェースを内蔵してるものなら、それを使うのがメリット多いです。 通信速度やソフト負担が許せるなら、パラレル入出力ポートで ソフトウェアでシリパラ・パラシリ変換することだって可能です。

noname#173521
質問者

補足

H8マイコンの方はソフト的に負担は増やせないと言ったところです。現在外注ではFPGAを使用した変換回路を組んでおります。私の方でFPGAは組めませんが、それを何とかハード・ロジックで工面しようとしております。シリアルクロックをUPしたい事が目的です。どうも良い方法が浮かびませんね。

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.1

そのシリアルとは何を指しますか?プロトコルは? ただ単に8ビットパラレルをシリアルに変換したいなら74HC165/74HC166等のシフトレジスタを使えばいいよ。

noname#173521
質問者

補足

あっ、ごめんなさい、マイコンからSCK、SDI、SDOの3本です。そのクロックを途中早くしたいのです。厳密にどれほどとは言えませんが、可変出来ると良いですね。シリアルからパラレル、そしてパラレルからシリアルといった変換が必要なのでしょうか?

関連するQ&A