2

このFPGA回路で使用されているアルゴリズムを理解するのに問題があります。冗長な数値形式と非冗長な数値形式を扱います。非冗長形式の数学的(正式な)定義を見たことがありますが、実際には理解できません。

アルゴリズムを説明するこのペーパーからの抜粋:

図3に、スケーラブルなMontgomery乗数のブロック図を示します。カーネルには、合計wpビットセルのpwビットPEが含まれています。Zは、桁上げ保存冗長形式で保存されます。PE1がZ ^(e-1)を終了する前にPEpがZ ^ 0を完了した場合、PE1が再び使用可能になるまで結果をキューに入れる必要があります。[5]の設計では、結果を冗長形式でキューに入れ、エントリごとに2wビットを必要とします。nが大きい場合、キューはかなりの領域を消費するため、図4に示すように、キュースペースの半分を節約するためにZを非冗長形式に変換することを提案します。最初のサイクルでは、 Zは0に初期化されます。キューイングが不要な場合、桁上げ保存加算器のレイテンシを回避するために、桁上げ保存冗長Z'は直接バイパスされます。非冗長Zの結果は、システムの出力でもあります。

そして図: 図3は高レベル、図4はFIFOであり、非冗長フォーマットを使用することで「改善」されています。

そして、これが「改善された」PEブロック図です。これは、「改善された」PEブロック図を示しています-「改善された」は、いくつかの無関係な側面と関係があります。
「改善された」PEブロック図

「改善されていない」FIFOの写真はありませんが、それは単なる通常のFIFOだと思います。私が理解していないのは、FIFOのCPAと3入力MUXが何らかの形でフォーマット間で変換されるのかということです。

(具体的な例では)冗長フォーマットと非冗長フォーマットを理解することが最初のステップであり、この回路がどのようにそれを実現するかを理解することはステップ2になります。

4

1 に答える 1

3

少し背景を説明し、users.ece.utexas.edu /〜adnan / vlsi-05-backup / lec12Datapath.pptを見ると、次のことがわかります。

キャリーを適切に伝播するのに時間がかかるため、適切なバイナリ追加を行うと、比較的時間がかかり、領域を消費します。

ビット単位で並列に作業する場合は、3つの2進数を取得し、各番号の同じ位置にあるビットを合計して、2つの2進数を生成できます。

スライド27は、0001 + 0111 + 1101 = 1011 + 0101(0)であることを示しています。

乗算器は多くの加算を行う必要があるため、3つの数値を2つの数値に減らしたコレクションとして加算器ツリーを構築し、最終的には出力としてabcde....zとABCDE...Z0の2つの数値になります。これは冗長形式の出力であり、本当の答えは実際にはabcde ... z + ABCDE...Z0です。

于 2011-04-06T04:46:14.043 に答える