CRC32のハード・ソフト 最適分割の研究

巡回冗長検査CRC32の
ハード/ソフト最適分割の検討
電子情報デザイン学科
B4 伊藤大喜
2009/2/27
研究背景・目的
• LSIの開発環境の高度化に伴い、ハード/ソフト協調
設計の技術が求められている。
• 巡回冗長検査CRCをはじめとしたエラー検出はファ
イルの送受信の処理時間に大きく影響する。
ハード、ソフトでCRC32を設計し、最適な分割案を
検討する。
研究の流れ
アルゴリズムを理解
動作をC言語で記述
モジュール分割案を考案
ハードウェア設計
モジュールを考慮したC言語記述
ハード/ソフトの分割案を検討
CRC(Cyclic Redundancy Check)32とは
2進数とみなす
送信データ
+
送信データ
CRC
CRC
生成多項式で割る
チェックビットとして
付加して送信
送信データ
CRC
余りが0ならデータは正
しく受信出来ている
送信側
名称
生成多項式
主な用途
CRC-1
x+1
パリティビット
CRC-16
x16+x15+x2+x1+1
SDLC、USB
CRC-30
x30+x29+x21+x20 +x15+x13+x12+x11+x8+x7+x6+x2+x1+1
CRC-32
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1
CDMA
V.42, MPEG-2, PNG
CRC32のアルゴリズム
例 : 入力ビット列 : 11010011101100
除数ビット列 : 1011
EX-OR
結果
00000000000010
10010011101100
1011
00100011101100
00000000000010
CRC32のモジュール分割案
・ memoryモジュール
入力するビット列を保持しておき、他モジュールにその値を1ビットずつ送信。
値が終了すればその合図としてbit_countを返す。
・
calculatorモジュール
memoryモジュールから値を受け取り、bit_countを受け取れば受信を終了。
そこから演算を開始し、除数ビット列の終端が入力ビット列の終端まで達した
ら演算終了。
memory
信号名
方向
幅(bit)
詳細
out_data
output
8
送信データ
bit_count
output
1
受信停止信号
memoryの信号線
data
bit_count
calculator
モジュール図
信号名
方向
幅(bit)
詳細
in_data
input
8
受信データ
bit_count
input
1
受信停止信号
calculatorの信号線
実験結果・考察
memory
27%
calculator
73%
負荷割合
分類
ハードウェア処理部
A
ソフトウェア処理部
memory, calculator
回路規模
実行クロック数
0
126597
B
memory
calculator
457
-
C
calculator
memory
1999
-
D
memory, calculator
2456
324
分割パターンと結果
まとめ
• ハードウェア・ソフトウェアでの設計
C言語、verilog記述方法の習得
• 結果を用いた分割パターンの検討
ハードウェア化、ソフトウェア化による効果と
性能向上におけるハード/ソフト分割の重要性
今後の課題
• MicroBlazeを用いFPGA上への実装を行
い、より精密な予測を行う。