楽天市場
[無料でホームページを作成] [通報・削除依頼]

ビット列の並び替え その2

ビット列の並べ替え その2

前ページで紹介した方法を用いて、512ビット列の並べ替えを考察します。

<考え方>
①RAMのデータを64ビットのブロックで8つに分け、各々のブロックで行・列変換を実施
②各ブロックをビット位置により縦方向の8ビットごとのサブブロックに分割(図1)
図1のS0~Z0、以下同様にS1~Z1、・・・S7~Z7と定める(図2)
③図2で示す配列をさらに並べ替える。

img_20130527-162847.jpg
図1.

img_20130527-162924.jpg
図2.


以下に図2の配列の並びを変換するプログラムを示します。
(FSREG0にRAMの先頭を指定してサブルーチンmatrix8を8回コールする。)
使用レジスタ(ユーザー定義) FSRREG0、INDEX0、FSRREG1、count

FSRREG0の値は出口で8加算されます。FSRの値はFSREG0とFSREG0+7の間を移動します。
FSRREG1の値はFSRREG0~最終アドレスまで変化し、FSRの値はFSREG0と最終アドレスの間を移動します。

(変換結果の例:数値は16進数)
左:元データ
中:64ビットずつ行列変換後
右:512ビット行・列変換後(最終結果)
img_20130527-105859.jpg

img_20130527-163040.jpg