FPGA実装アルゴリズム難易度LZWに基づく分析と実装

約1つのLZWアルゴリズム
データ圧縮のは非可逆と可逆圧縮に分かれています。非可逆圧縮は、データ圧縮の再構築(解凍)され、元のデータと再構成されたデータは、大きな圧縮率と引き換えに、異なっています。可逆圧縮は、元のデータと同じ再構成されたデータを復元される圧縮されたデータを指します。ここだけLZW可逆圧縮と解凍アルゴリズム。
LZW圧縮アルゴリズムは、圧縮アルゴリズムは、その発明のLempel、ZIF、ウェルチの頭文字にちなんで命名され、可逆圧縮の一般的な方法です。LZW圧縮アルゴリズムは、ソフトウェア、ハードウェアで実現することができる、ソフトウェア圧縮は、一般的に特別な要件の例で実行速度は、リアルタイムデータ圧縮は、一般的にハードウェアで実装するために必要としながら、タイムクリティカルなアプリケーションで使用されています。私たちは、主にFPGAに基づいたLZWアルゴリズムを達成するために、ハードウェアを使用しています(圧縮と解凍を含む)LZWアルゴリズムを達成するために研究しています。
原則2 LZW圧縮
LZWアルゴリズムは、高度な文字列テーブル(文字列テーブル)を使用します。文字列テーブルに、一つのコード(コードワード)と各文字列の最初の発生が示されています。唯一のデジタルアーカイブを保存します。ように、ファイル圧縮効率を保存することができない文字列が大幅に改善されます。圧縮または解凍プロセスかどうか、同じシーケンスを正しく確立されるテーブル、圧縮や解凍が完了すると、文字列テーブルが破棄されます。
すべてのページ番号と辞書にページ番号への辞書、入力文字列(単語)のような文字列テーブル。これは、文字列(単語)で見つかったページ番号とページ番号に復号されます。復元する権利と辞書の基礎を使用してください。(LZWアルゴリズムを使用して、ネットワークリソースを参照することができ、基本的な原則を説明していません)。
困難達成するための3 LZW圧縮
:次の5つの質問解決するためのLZWアルゴリズムのFPGA実装を
辞書容量を選択して、1)
LZW圧縮を実装し、解凍アルゴリズムは、辞書を構築する必要がある場合は、文字列テーブルは、圧縮時に形成されて格納するために使用されます。無制限の増加辞書の容量ならば、それはより良い圧縮率を達成することができるが、LZWアルゴリズムは、実用的なアプリケーションでは、生成された適応辞書ですが、一致する文字列を見つけるための時間が長くなった場合、およびなど増加のコードワード桁レベルは時々減少圧縮効率、衝撃圧縮率、一定の制限に辞書容量対象において生じ得ます。
2)圧縮速度
RAMルックアップは、シリアルアドレス検索に応じて蓄積されているので、データ出力速度に影響を与え、最終的に、入力データのオーバーフローをもたらすであろう方法を見つけるために、構築辞書RAMを使用することによって。例えば、辞書512の深さは、時間がL〜512番目のサイクル(N番目のアドレスが見つかった場合、その後、Nクロックサイクルを必要とする)の範囲を見つけることを必要としました。
3)圧縮比
の異なるサイズの辞書の第一のセットの圧縮比に影響を与える可能性があります。文字列テーブルを辞書マッチングで得られた、時間の非常に短い期間内に充填されたときに辞書が比較的小さく設定されている場合、データ圧縮の影響は、圧縮率が高くないよう、強くありません。
第二に、ディクショナリ更新ポリシーは、圧縮率に影響を与える可能性があります。辞書の限られた能力に起因は、圧縮の過程と共に、辞書が充填され、辞書にない単純な加算場合再確立辞書明確な場合には、圧縮比は、バック低減され、辞書圧縮比の初期確立は非常に低いです。
4)リソース使用率は、
大容量の辞書は、圧縮率を改善するが、FPGA内部アカウントにリソース(リソースFPGA内部RAM)を取る必要があるが、完全にFPGAチップのリソースを使用して辞書を確立します。
5)プログラムの堅牢性
FPGAモジュールパーティション設計プロセスは非常に重要である、優れたモジュールの分割は大幅ロジックおよびタイミングクリティカルパスの最適化機能によって消費される面積を低減することができます。唯一の総合タイミング違反の多数の結果のタイミングを達成するために関係なく、最終的なコードの、論理的な機能を考慮するならば、200MHzのの論理設計、システムクロックよりも、私たちはデザインが信頼できないと言うことができます。
4 LZW圧縮スキーム
1)辞書の容量はどのくらいを選ぶべきなのでしょうか?
通常、文字列テーブル1024,2048,4096は、文字列テーブルが1024,2048,4096、基本的な文字列を保持できていることを意味し、長さはバイト。
2)どのように圧縮率を向上させるには?
まず、システムクロックの周波数を高めるために、2番目の、バイトクロック期間より短く圧縮が必要。この問題を解決するために、我々は、クエリベースのCAM実装を提案します。構造の改善とFPGAデバイスのドアの数を増やし、絶えず充実IPライブラリーでは、CAM FPGAベースの実装が可能となりました。
3)どのように圧縮率を検討するには?
まず、辞書サイズの設定の容量。第二に、ディクショナリ更新ポリシー。
4)どのようにリソースの利用を考えてみましょうか?
まず、辞書サイズの設定の容量。第二に、できるだけ簡単なように辞書のメンテナンスアルゴリズム設計。辞書メンテナンスに伴うメンテナンスの問題の辞書、完了するために、FPGAの内部ロジックを使用しなければならないFPGAのロジックリソースと過ごした時間のリアルタイム圧縮の職業は価値がろうそくであるため、過度に複雑な辞書管理は、圧縮率を向上しますが、考慮する必要があります;および
5)堅牢なプログラムをどのように設計するか
、最初のハードウェアアーキテクチャの設計を考慮し、2番目、クリティカルパスに対処するには、レポートのタイミングを表示します。
LZW圧縮アルゴリズムを達成するためにザイリンクスのFPGAを使用して、LZW圧縮率、圧縮率の問題、リソース使用率を考慮。FPGA内部BRAM辞書を用いて構成され、辞書サイズは2048に設定され、辞書検索技術LZWアルゴリズム、各マッチング処理のために、一度データの効率との関係の重要な部分です。提案された計算速度辞書アドレスを改善するために、CAMクエリに基づいて実装(ハードウェア回路によって連想CAM、高速マッチングに基づきます)。
5 LZW圧縮試験と性能
LZWアルゴリズムのテストは、ソフトウェアのテスト、ハードウェアのテスト、リソース使用率、圧縮率と圧縮率に分かれています。ソフトウェアのテストは、正しさを検証する機能シミュレーション、論理関数であり、ハードウェアテストは、実際のFPGAチップ、オンラインLZWアルゴリズム検証ロジック正確介してデバッグするためのロジック・アナライザで実行するコードであり、リソース使用率試験は、コードは、FPGA合成またはインプリメンテーションの職業を指し内部リソースの使用状況。
1)ソフトウェアテスト
シミュレーションソフトウェアのModelSimシミュレーション論理機能を使用して。圧縮されたデータは、次に、LZW解凍モジュールを介して出力された後、画像LZWデータ圧縮モジュールにテスト刺激入力を書きます。比較ファイル1.TXTに生の入力データ、LZWデータ圧縮解除されたファイル2.txtには、両方のファイルは、これらの2つのツール、バイト0の違いを比較することによって、171520バイトのファイルです、正確な。
2)ハードウェアのテスト
とソフトウェアのテスト方法は、一貫性のループバックテストを使用して、テストは、ハードウェア、元のデータが溶液LZW LZW圧縮モジュール及び圧縮モジュール、一つのテストコードのいずれかを比較することにより、元のデータに解凍されたデータの後に、FPGA BRAMに格納されていますデータが一致している場合は、LZWアルゴリズムは、正しい論理機能を証明する、一貫性のないデータは、LZWアルゴリズム論理関数エラーを実証する場合、ハードウェアデータ一貫した試験結果は、LZWアルゴリズムは、正しい論理機能が正確171520バイト、0バイトの差、であることを証明します。
3)リソース利用
FPGAリソース消費LZW圧縮モジュールに次のように。

リソース使用率図
4)圧縮
ソフトウェアのテスト、ファイルデータは、LZW圧縮3.txtに136,633.75バイト、79.68パーセントの圧縮率の統計が格納されます。
5)の圧縮率
で圧縮単一バイトが15クロックサイクル(T = 5nsの)、仕事率12.72メガバイト/秒を必要とします。
結論6 LZWアルゴリズム
ザイリンクスFPGAに基づいてLZW圧縮アルゴリズムを達成するために。より高い動作速度を必要に応じてハードウェアシミュレーションと検証結果が仕事率12.72メガバイト/秒(20%の圧縮比を得るために、このアルゴリズムのFPGA実装を示した後、唯一のシステムクロック、250MHzのクロック、作業性を向上させることができます率15.89メガバイト/秒)、FPGAのリソース使用率は、完全にリアルタイム処理のニーズを満たす、非常に低いです。技術的なアドバイスをしてください電子メール通信:[email protected]
もし周期T = 5nsの、仕事率19.07メガバイト/秒現在LZWアルゴリズムの改善、単一バイト圧縮は、10回のクロック・サイクルを必要とする周期T =は4ns、仕事率23.84メガバイト/ sの場合。説明:数のFPGAリソース使用率の相対的な増加。

オリジナルの記事は、0を発表 ウォンの賞賛0 ビュー20

おすすめ

転載: blog.csdn.net/m0_46498597/article/details/104919346