BusSSO_Reducer(Verilog.zip)

*****購入・使用に関する注意事項および、ダウンロードに関すること*****
ライセンスについては、購入された個人様に限り、何度でもご使用頂ける形態とさせて頂きます。つまり、購入された方がご自身でコーディングされたコードと同じ扱いということです。自己責任でお使い頂く分には、申し訳御座いませんが、弊社への問合せは応じかねます。
SNS等へのアップロード等による内容公開・情報流布については禁止事項とさせて頂きますこと、ご理解とご了承の程、お願い申し上げます。
デジタルコンテンツである当商品はクレジットカード決済しか出来ません。複数購入や、他の商品との同時購入は出来ませんので、御了承下さいませ。
決済後に送付されるメールからダウンロードして頂きますよう、お願い申し上げげます。ダウンロード可能な時間はメール取得後72時間以内になります、ダウンロードは3回までとなっております。
スマートフォンやタブレット端末からはダウンロード出来ない場合がございます。

バスの同時変化する信号数を減らす目的で作ったモジュール(SSO はSimultaneous Switching Output の意)です。
話はシンプルで、出力段のフリップフロップに新しい値をロードする際に、前回の値から変化するビットの数を数えて、一定数以上変化する場合には
そのままロードするのではなく、反転した値をロードして、別途反転フラグとともにデータ伝達しようというものです。
ソースコードでは32 ビットのバスを例としています。出力フリップフロップにデータをロードする際、前回出力した値と比べて17 ビット以上異なる場合に、
反転した値を出力します。もちろんこれだけだと受け側で正しい値を取得できませんので、データが反転したものか否かを示すビットを追加し、それに
応じて受け側でデータを再反転することが必要です。
同時スイッチング問題に直面した際の切り分け用に、あるいはマルチドロップによってインピーダンスが極めて低くなってしまったラインをFPGA で直接
ドライブしなくてはならない場合の緊急救済策の1つとして等々で、出番があるかもしれません。
なお、32 ビット出力データの変化ビットの計数は、前後のデータの各ビットのXOR を取り、その1 の数を数えています(Population Count)。
1 の数を数えるのは、よくある3 ビットスライスアダーと7 ビットスライスアダーの組合せで記載していますが、他にもいくらでもやりようはありますので、
工夫してみると面白いかもしれません。ちなみに3 ビットスライスアダーだけで32 ビットのPopulation Count を作ると、32-6+5=31 個のスライス
アダーで記載できます(3 ビットスライスアダー1 個をフル活用すると3 ビットが2 ビットになり1 ビット減る→32 ビットを最終的に6 ビットにするので
26 個必要→しかしフル活用されずに2 ビット入力2 ビット出力として使用するスライスアダーが5 個存在する→つまり32-6+5=21 個)。
中間変数となる信号名の付け方・まとめ方がめんどうで間違い易いですが、後で最適化され易いのはそちらの方かもしれません。Verilog 版には
限定でそのサンプルを付けておきます。


言語はVerilogを使用しており、Verilog95以降の環境に適合します。
字下げはハードタブを使用しています。タブの設定はタブストップ4でご覧下さい。

ドキュメントはこちら->http://www.gopher-tec.jp/web_store/DOC/BusSSO_Reducer.pdf

¥ 30,000

※こちらの価格には消費税が含まれています。

※こちらの商品はダウンロード販売です。(403940 バイト)

<>外部サイトに貼る
外部サイトへの埋め込み方

下記コードをコピーして、あなたのwebサイトのHTMLに貼り付けてください。