大規模なマルチプレクサ/データセレクタ


10

128:1以上の入力を備えたマルチプレクサICを探しています(256はかなりいいでしょう)。私はそのようなデバイスはかなり一般的だと思っていたでしょうが、それを見つけるのに苦労しています。私は間違った場所を見ているかもしれませんが、どういうわけか私は何かが欠けていると思います-おそらく大きな入力マルチプレクサはそれほど頻繁に使用されていませんか?もしそうなら、代替は何ですか?

最大 私が見つけることができたのは、16入力の信頼できるol '74150です。

複数の16入力マルチプレクサを組み合わせることで大きなマルチプレクサを構築できることを理解していますが、より統合されたソリューションを望んでいます。


私は、自動車のワイヤーハーネスの開路と短絡をテストできる回路を設計しています。一般的なハーネスには200本程度のワイヤを含めることができます。現在、回路は128のワイヤを処理するために16のマルチプレクサを使用しています。

マルチプレクサは単一の16入力マルチプレクサに接続され、マルチプレクサはuCに接続されます。同様に、反対側には16のデマルチプレクサがあります。デマルチプレクサは、ワイヤを電圧に切り替えます。同時に、このワイヤはマルチプレクサを介してuC入力の1つに切り替えられます。

ワイヤに問題がなければ、uCの入力に高が表示されます。次に、uCは他のすべてのワイヤをチェックします。それらのいずれかが高い場合は、これらの2つのワイヤ間に短絡があることを意味します。

注:この回路は私が設計したものではありません。これは2003年に行われました。この回路を改善したいと思っています。また、ワイヤーハーネスにはCANデータバスや他の種類のバスが含まれていないことにも注意してください。電力と信号用のその単純なワイヤー。

これは、この投稿のためにすぐに作成した非常に大まかなブロック図です。英語が母国語ではなく、テキストで説明するのに苦労しているので、これで問題が明確になることを願っています。この図はあまり良くありませんが、状況が改善されることを願っています。MCUからdemuxとmuxに横向きに入るラインは、アドレスラインです。

ワイヤの1つが3つに分割されていることに注意してください。これは、一部の接続が1対1ではなく1対多であることを示すために意図的に作成しました。私が見た中で最も複雑なものは、60のジャンクションに分割されたワイヤーです。これが、demuxとmuxに別々のアドレス行がある理由です。demuxが入力番号にある可能性があります。20に対して、muxは20,21,22などを切り替えることができます。ライン20から接続されているすべてのラインを確認します。

ここに画像の説明を入力してください

これを設計するより良い方法があると感じたら、私に知らせてください。


128:1または128倍の2:1をお探しですか?
Majenko、2011

128:1。すみません、言及するのを忘れていました。謝罪します。
Saad

@saad私の経験では、誰かがそのようなことを要求するたびに、根本的に何か間違ったことをしていることが原因です。あなたが解決策であると考えるものではなく、あなたが達成しようとしていることを述べることをお勧めします。そうすれば、16:1のマルチプレクサをカスケードするよりも優れたソリューションを提供できる可能性があります。

@David Kessner、編集をご覧ください。数週間前にこのサイトのデザインについて実際に問い合わせましたが、ほとんど反応がありませんでした。入力時に任意のフォームをいただければ幸いです。
Saad

1
カスケードマルチプレクサーを使用すると、どれだけ速く、どれほどの頻度で、どれだけの頻度で入力が切り替わるかに応じて、ルーティングが大幅に容易になります。256の信号をボード上の単一のスポットにルーティングする代わりに、16の信号を各16のスポットにルーティングし、各スポットから1つの信号を16入力チップにルーティングし、4つの共有信号をすべてのマルチプレクサ。一つのチップを使用して、理論的には一つの直列の2つのトランジスタに対応する単一の「ゲート遅延」と入力から出力まで256の信号のいずれかを取得することが可能になる(立ち下がりエッジ用のN型;上昇のためにP)が、...
スーパーキャット2009

回答:


12

巨大なマルチプレクサ/デマルチプレクサは確かに機能しますが、16:1マルチプレクサの束を接続することは多くの作業であり、問​​題になる場合とそうでない場合があるいくつかの制限があります。より一般的なアプローチは、シフトレジスタを使用することです。「駆動」側にはシリアルイン/パラレルアウトレジスタを使用し、受信側にはパラレルイン/シリアルアウトレジスタを使用します。シフトレジスタの良い点は、デイジーチェーンで簡単に接続して、より長いシフトレジスタを作成できることです。256ビットまたは1024ビットのシフトレジスタでもまったく問題ありません。一部のバッファリングを使用すると、シリアルストリームをケーブルを介して別のPCBに渡すこともできます(これにより作成が容易になります)。

そこ74xx597のような多くの8ビットシフトレジスタチップがありますが、CPLDがあるMUCHこのため、より良いです。ただし、256ピン以上の巨大なCPLDは必要ありません。代わりに、いくつかの小さいCPLDを使用して、それらを一緒にチェーンすることができます。計算はしていませんが、小さいから中程度のサイズのCPLDを使用する方が、1つの大きなCPLDよりも安価であり、BGAを心配する必要がないとかなり確信しています。

このCPLDは、かなりフリップフロップ集中型です。これが意味することは、通常のCPLDアーキテクチャ(ザイリンクスが使用するものなど)は、よりFPGAっぽいものほど良くないということです。アルテラとラティスはどちらも、ザイリンクスよりも1ドルあたりのフリップフロップが多いCPLDを持っています。

CPLDの経験はあまりないかもしれませんが、この設計は非常にシンプルで、CPLDを使用することの利点は非常に大きくなります。このためにCPLDをプログラムする方法を学ぶことは非常に価値があります。

また、マルチプレクサの代わりにシフトレジスタを使用することの利点は、最初はわかりにくいものです。ほとんどの場合、ワイヤーの駆動方法と感知方法に多くの柔軟性が得られます。一度に複数のハーネスをテストすることもできます(十分なシフトレジスタがある場合)。muxesでテストできることはすべて、シフトレジスタでも実行できますが、シフトレジスタではさらに多くのことができます。シフトレジスタの欠点の1つは、速度が遅いことですが、必要な速度よりも高速です(つまり、ハーネスの接続と切断を行う人は、シフトレジスタでテストする時間よりもはるかに遅くなります)。

また、CPLDを使用している場合でも、マルチプレクサよりもシフトレジスタの方が簡単です。主なことは、サイズが小さいことです。ただし、実際の利点/欠点を確認するには、実際に両方でデザインを行い、必要なCPLDのサイズを確認する必要があります。これは、使用されるCPLDアーキテクチャのタイプにかなり依存するため、ザイリンクスで行われた一般化はアルテラには適用されません。

編集:以下は、シフトレジスタを使用して実際にテストを実行する方法のもう少し詳細です...

テストを行う場合、シフトレジスタを使用しているという事実を無視して、データが「駆動側」で駆動され、うまくいけば「受信側」で読み取られることだけを考慮できます。データを(シリアル経由で)やり取りする方法は、ほとんど関係ありません。重要なことは、ドライブできるデータは完全に任意であるということです。

一緒に運転するデータは「テストベクタ」と呼ばれます。読み取りを期待するデータもテストベクタの一部です。ケーブルが1:1の関係で配線されている場合、駆動データと受信データは、駆動データと同じであると予想されます。ケーブルが1:1でない場合は、明らかに異なります。

MUXベースのアプローチを使用した場合は、引き続きテストベクタを使用しますが、テストベクタの種類を制御することはできません。Muxesでは、パターンは「ウォーキングワン」または「ウォーキングゼロ」と呼ばれます。あなたが4ピンケーブルを持っているとしましょう。ウォーキング1では、パターン0001、0010、0100、1000を駆動します。ウォーキングゼロも同じですが、逆になります。

単純な導通テストでは、1と0のウォーキングはかなりうまくいきます。ケーブルの接続方法に応じて、テストを高速化したり、特定のものをテストするために実行できる他のパターンがあります。たとえば、一部のピンを他のピンと短絡させることができない場合は、テストパターンを最適化して、それらのケースを調べないようにして、より高速に実行できます。ウォーキングワン/ゼロ以外のものを扱うことは、ソフトウェア側で処理するのが複雑になる可能性があります。

テストベクターを生成する究極の方法は、JTAGテストのために行われます。バウンダリスキャンとも呼ばれるJTAGは、PCB上のチップ間(およびPCB間)の接続をテストするための同様のスキームです。ほとんどのBGAチップはJTAGを使用しています。JTAGの各チップにはシフトレジスタがあり、各ピンの駆動/読み取りに使用できます。複雑で高価なソフトウェアがPCBのネットリストを調べ、テストベクタを生成します。洗練されたケーブルテスターでも同じことができますが、それは大変な作業になります。

幸い、あなたのために、テストベクタを生成するための非常に簡単な方法があります。これが何をするかです...正常なケーブルをシフトレジスタに接続します。ドライビングエンド全体にウォーキングゼロ/ 1パターンを実行します。これを行うときに、受信側で見られるものを記録します。単純なレベルでは、それをテストベクトルとして使用できます。不良ケーブルを接続し、同じウォーキングワン/ゼロを実行すると、受信したデータは以前に記録したデータと一致しないため、ケーブルが不良であることがわかります。これにはいくつかの名前がありますが、すべての名前は、自己学習や自動学習など、「学習」という用語のバリエーションです。

これまでのところ、これは、駆動端の1つのピンが受信端の複数のピンに行く場合を簡単に処理しますが、駆動端の複数のピンが一緒に接続されている他の場合は処理しません。そのためには、バスの競合による損傷を防ぐための特別なものが必要であり、すべてのシフトレジスタピンは双方向(IE、ドライバーとレシーバーの両方として機能する)である必要があります。ここではあなたが何をすべきかです:

  1. 各ピンにプルダウン抵抗を接続します。20Kから50kオーム程度のものが適切です。

  2. CPLDとケーブルの間に直列抵抗を配置します。100オーム前後の何か。これは、ESDなどによる損傷を防ぐためです。グランドへの2700 pFのキャップ(100オームの抵抗のCPLDピン側)もESDに役立ちます。

  3. CPLDをプログラムして、信号をHighのみに駆動し、決してLowに駆動しないようにします。出力データが「0」の場合、CPLDはそのピンをトライステートにし、プルダウン抵抗がラインをLowにできるようにします。このように、複数のCPLDピンがケーブルの同じワイヤーをHighに駆動している場合、損傷は発生しません(CPLDも同じワイヤーをLowに駆動しないため)。

  4. すべてのピンはドライバーとレシーバーの両方です。したがって、256ピンケーブルを使用している場合、シフトレジスタはドライバー用に512ビット、レシーバー用に512ビットになります。駆動と受信は同じCPLDで実行できるため、PCBの複雑さはこれによって実際には変わりません。このCPLDでは、ケーブルピンごとに3つまたは4つのフリップフロップがあるため、それに応じて計画してください。

次に、受信したデータを以前に記録されたデータと比較しながら、同じウォーキング1 /ゼロのパターンを実行します。しかし、今ではワイヤーハーネス内のあらゆる種類の任意の接続を処理します。


どうもありがとうございました。これについては、すぐに詳しく説明します。
Saad

私はこれについて考えてきました。駆動側にSIPOを使用し、rxにPISOを使用するとしました。今、私が正しく理解していれば、MCUの出力ピンと入力ピンのPISOにSIPOする必要があります。ワイヤーがすべて1対1であると想定すると、ハーネスを介してデータを送信する必要があります。そのデータを受信すると、ワイヤーはテストに合格します。これは有効な方法ですか?さらに、受信側で複数に分割される行を処理するには、これをどのように変更すればよいですか?これはあなたが提案していたことですか、それとも私は完全に軌道から外れていますか?
サアド

これらの線についてさらに考えます-4つの入力ワイヤーがあり、そのうちの1つ(4番目)が2つのワイヤーに分割されているとします。したがって、RX側に5本のワイヤがあります。ビット0101をシフトアウトするとします。01011を受け取った場合、すべてのワイヤに問題はありません。しかし、3番目のビットがハイ(01111)であるとすると、3番目のワイヤが短絡していることがわかります。しかし、これでは、どの配線が短絡しているかはわかりません。おそらくより良い方法は、 "1"をレジスターに波及させることです。したがって、最初は1000になり、recになります。10000。その後、1が波及し、0100と01000を取得します。最後のビット0001に到達するまで
Saad

この場合、最後の1つが2つにスプライスされるため、00111を受け取るはずです。4番目のワイヤに短絡があり、0010を送信している場合は、rx 00111を送信します。これは正しくないことがわかっており、短絡の場所を示すエラーを表示できます。この方法はあなたにとって良い音ですか?
Saad

@saad私はあなたのコメントをカバーするために私の回答をはるかに詳細に更新しました。

7

シングルチップソリューションは存在しないと思います。I / Oの数が多いため、またおそらく需要が低いため、コストがかかります。ほとんどの設計では、8個または16個の入力マルチプレクサをカスケード接続します。

より統合されたソリューションが本当に必要な場合は、CPLDを探す必要があります。256を超えるI / Oを備えたCPLDがあり、Xilinx CoolRunner XC2C512は、270ユーザーI / Oを備えたBGAバージョンで利用できます。256入力マルチプレクサの場合、選択信号用の追加の8入力、もちろん出力、さらにはイネーブルが必要であるため、270 I / Oが多すぎないことを覚えておいてください。

また、パッケージがBGAである可能性が最も高いことに留意する必要があります。あなたがそれを好きになるかどうかわかりません。とにかく、約300ピンのQFPはまだ見たことがありません...


2
ありがとう。私はこれが事実だと感じていました。16個の入力からより大きなマルチプレクサを作成することに固執すると思います。
Saad

@saad-提案されているとおりに大きなPLD(ゲート/ロジックブロックではなくピン数)PLDを取得しない限り、これは最善の策のように見えます(利点はより効率的/サイズが大きく、実際にはそれらの経験やHDLはほとんど必要ありませんが、パッケージは確かに苦痛でしょう-
Oli Glaser

私は実際、学校でHDLとFPGA(Handel-C-これは快適ではありませんでした)の経験があります。私はCPLDに取り組んだことがありません。しかし、私はBGAパッケージを実際にいじったことがなく、本当に苦痛のように思えます。編集:XC2C512はPQFPでも利用可能ですが、HDLやFPGAの経験が少ない人でもこのようなデバイスを動作させることができるのでしょうか。それはまたかなり高価です-ファーネル英国でそれは£60以上の価値があります。
Saad

@saad-PQFPには173のユーザーI / Oしかありません。私の同僚は、CPLD(単純なアプリケーション:アドレスデコーダー)をAbelでプログラミングしました。これは、見たところ、VHDLやVerilogよりもはるかに単純に思えます。おそらくVHDL / Verilogほど強力ではありませんが、アプリケーションにとってそれは問題ではありません
stevenvh

@stevenvh:Abelはいくつかの点で少し見苦しいですが、クロックと方程式の観点からピンの動作を指定することは、VHDLまたはVerilogで詳細に書き込むよりもはるかに自然な場合があります。ツールがより優れた方程式ベースの言語をサポートしていないのはなぜでしょうか。
スーパーキャット2011

3

CPLD / FPGAはピン数が多い場合には適切なように見えますが、通常、自動車用ハーネスは物理的にかなり広がっており、コネクタは適度に大きくなります。そのため、ピン数の多いデバイスから多数のコネクタにファンアウトする代わりに、少数のクロック/シフトラインで相互接続された、たとえばシフトレジスタに16個のIOを備えたモジュラーシステムの方が適切であり、非常にスケーラブルでもあります。
他に考慮すべきことは、ケーブルのテストです。たとえば、抵抗チェーンを使用して16の電圧を16のラインに印加し、アナログマルチプレクサを使用して、もう一方の端のそれぞれの電圧をチェックできます。これはオープンとショートを検出し、安価です。


CLPDの16ビットブロックにシフトレジスタを実装する必要があると言いますか?ほとんどの場合、1つの大きなCPLDを使用してすべての作業を行うことはありません。BGAパッケージは避けたいので、小さいCLPDにこだわるでしょう。現在、新しい「ハーネス」を必要とするすべての新しいワイヤリングハーネスが開発され、これにすべてのコネクタが取り付けられています。これらのコネクタは、上記の質問で説明した回路に接続されます。新しいシステムでは、このメカニズムを維持します。1つのチップに多数のIOを接続すると、どのような問題が発生しますか?
サアド

1

シフトレジスタを使用して多数の入力を読み取るのは、良いパターンです。David KessnerがCPLDの使用を提案したので、別のパターンを提案します。各CPLDが32個の入力を処理するとします。各CPLDに共有クロック入力、個別の有効化入力、有効化出力(次のチップの有効化入力に接続)、および共有データ出力を割り当てます。各チップには、5ビットのカウンターとオーバーフローインジケーターがあります。イネーブル入力がディアサートされたら、カウンターとオーバーフローインジケーターをクリアします。イネーブル入力がアサートされているがオーバーフローインジケーターが設定されていない場合は、カウンターが示す入力ビットの状態を出力します。クロックパルスが受信され、チップが有効で、カウンターがオーバーフローしていない場合は、カウンターをバンプします。オーバーフロービットは、「イネーブル」出力を供給します。このすべてのロジックの正味の効果は、32個の入力を処理するために必要なマクロセルが約8個だけであるということです。したがって、CPLD内に、計算集約型またはレジスタ集約型であるが多くのI / Oを必要としない他の機能を組み込むことができる場合があります。

ピンキーパー回路を備えたCPLDがある場合、特に1つのマクロセルから複数のピンに出力を出力する方法がある場合(各ピンにマクロセルを費やす必要がない場合)、出力に同様のアプローチを使用できる場合があります。チップは、クロックとデータ入力、イネーブル入力、およびイネーブル出力を共有します。内部的には、5ビットカウンター、最初の5とは反対のクロックエッジでラッチされたボトムカウンタービットの追加コピー、オーバーフロービット、およびすべてのピンに供給する共有データ信号が必要です。7つのマクロセルに加えて、入力データ信号をすべてのピンにコピーするために多くのセルが必要でした(ピンの出力イネーブル制御はラッチイネーブルとして機能します)。

このアプローチの美しい特徴の1つは(LCDドライバーで頻繁に使用されます)、データを並列に移動する複数のデータラインがあり、チップ間の単一のデイジーチェーンワイヤしか必要としないことです。また、各入力または出力からラッチ回路を削除できます。


1

接続することになっているピンの最大グループがたとえば20ピンだとすると、これはどのように聞こえますか?オープンコレクターシフトレジスタLEDドライバーチップ(ピンごとに1つの出力)の束を使用します。少なくとも2mAシンクします。各ピンから共通点に1Kの抵抗を接続し、20.1mAで1ボルトを供給する回路を使用し(電流が低い場合、電圧が高い場合は20.1mAで1ボルトであれば問題ありません)、その量以上を描くように作られています。一部のケーブル構成では、1K抵抗を備えていてもケーブルに接続されていない少数の「予備」ピンが必要になる場合があります。1Kの抵抗を備えたスペアピン、1つは500オームの抵抗(または2つの2K並列)、1つは250オームの抵抗(4つの1K ')

ケーブルをテストするには、正確に20本のピンがLowになるシナリオと、21本のピンがLowになるシナリオ(予備のピンが役立つ場合があります)を定式化し、20ピンのシナリオが20.5mA以上を使用しているとは報告されていませんが、21ピンのシナリオはそうです。

たとえば、1-2、3-4、5-6などを39-40まで接続するケーブルハーネスがあるとします。10組のピンのさまざまな組み合わせを選択して短絡をチェックし、各ピンの両方のペアをLowに駆動します。20ピンをLowに駆動します。駆動しているピン以外はLowになりません。そのため、電流は常に20mA未満である必要があります。それが終わると、何かがショートします。過電流を読み取らない10個のペアの組み合わせを見つけることができる場合、何かが過電流になるまで、アクティブなペアを一度に1つずつオフにし、別のペアをオンにします。最後にオンになったペアが、本来あるべきではないものに短絡しています。

予備のピンをLowに駆動し、10ペアのさまざまな組み合わせを選択して、各ペアから1つのピン(奇数ピンと偶数ピン)を駆動して、オープンをチェックします。何らかのオープンがある場合、そのようなアクションは21未満のピンがLowに駆動され、電流不足を読み取ります。その場合は、一度に1つずつ、1つのワイヤが駆動されるペアごとに、両方を駆動します。現在の読み取り値が20.1mAを超える場合、そのペアは開いています。

このアプリケーションにCPLDを使用することもできますが、私が説明したようなシステムの方が優れている場合があります。実際に電流を測定するための回路を追加することで、さらに強化できます(単にオーバー/アンダーインジケーターを生成するのではなく)。このような測定により、抵抗の許容値を設定できます。


1

これはあなたが探しているものですか?

Maxwell 81840-128チャネルマルチプレクサ


おそらく違います。これはアナログマルチプレクサーですが、デバイスの速度を監視している場合は、デジタルマルチプレクサーも多重化できます。また、これはrad-hardデバイスであり、高価になります。
stevenvh

ようこそ!スティーブンは正しいです、それは適切な解決策ではないかもしれませんが、いいキャッチです!リンクの下にコンポーネントの説明を追加してください
clabacchio

ありがとうclabacchio。コンポーネントをどれほど詳細に説明できるかわかりません。今まで使ったことはなく、まだ十分な経験もありません。
Daniel

sweeeeetチップ:)デジタルピアノプロジェクトで使用したいのですが、ググリングだけでは価格がわからない場合は購入できません。
Andrew Wagner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.