2

次の学期は最終学年 (電気およびコンピュータ工学) になり、組み込みシステムまたはハードウェア設計の卒業プロジェクトを探しています。私の教授は、現在のシステムを検索し、ハードウェア/ソフトウェアのコードサインを使用して改善するようにアドバイスし、VHDL または Verilog による専用ハードウェアを使用してシステムを実行できる「自動ナンバー プレート認識システム」の例を教えてくれました。より良い 。

少し検索したところ、システムが正常に動作していることを示すいくつかの YouTube ビデオが見つかりました。

だから、改善の余地があるかどうかはわかりません。特定のアルゴリズムまたはシステムが遅く、 codesign の恩恵を受けることができるかどうかを知る方法は?

4

5 に答える 5

2

コードサインが何であるかはわかりませんが、以前にいくつかのベリログを作成しました。単純な画像 (または信号) 処理タスクは、大量のデータのリアルタイム処理 (できれば SIMD 操作) を伴うことが多いため、このような組み込みシステムに適していると思います。

画像処理タスクは、私たちの脳が気が遠くなるほど複雑な処理を行っているため、簡単に見えることがよくありますが、実際には非常に困難です。このようなシステムが以前に実装されていた場合ではなく、この課題が重要だと思います。ハフ変換を実装し(一般化されたものよりも最初に線と円に対して-画像処理の遅いアルゴリズムと見なされます)、リアルタイムのセグメンテーションを行います。それが進化するにつれて、それは挑戦的な仕事になると確信しています。

于 2011-07-29T14:42:39.950 に答える
2

パーティショニング時に最初に行うことは、データフローを確認することです。各「サブアルゴリズム」がどこに収まるかのブロック図を、出入りするデータとともに描きます。あるドメインから別のドメインに大量のデータを移動する必要があるときはいつでも、問題の一部を分割の反対側に移動することを検討し始めます。

たとえば、エッジ検出、しきい値との比較、さらに処理を行う画像処理パイプラインを考えてみましょう。エッジ検出の出力は、(たとえば) 16 ビットの符号付きの値で、各ピクセルに 1 つです。最終的な出力はバイナリイメージです (ビット セットは「重要な」エッジがどこにあるかを示します)。

ハードウェアでエッジ検出を行い、エッジ イメージをソフトウェアに送り、しきい値を設定するという 1 つの実装 (明らかにナイーブですが、要点を説明します) が考えられます。これには、16 ビット値のイメージ全体を「分割して」出荷することが含まれます。

より良いのは、ハードウェアでもしきい値を実行することです。次に、8つの「1ビットピクセル」/バイトをシフトできます。(または、ランレングスでエンコードすることもできます)。

適切な帯域幅パーティションを作成したら、各ドメインに収まるブロックがそのドメインに適しているかどうかを確認するか、別のパーティションを検討する必要があります。

于 2011-08-01T12:27:36.867 に答える
2

特定のアルゴリズムまたはシステムが遅く、 codesign の恩恵を受けることができるかどうかを知る方法は?

多くの場合、これはアーキテクチャに関する問題であり、大量の経験、または大量のシステム モデリングと分析によってのみ答えが得られます。他のケースでは、封筒の裏を 5 分間見ただけで、専用のコプロセッサによって数週間の作業が追加されたものの、パフォーマンスが向上しなかったことが示される場合があります。

ハードケースの例は、最新の携帯電話プロセッサです。TI OMAP5430を見てください。さまざまなタイプの少なくとも 10 個のプロセッサ (PowerVR ブロックだけで複数の実行ユニットがあります) と、数十のフルカスタム周辺機器があることに注意してください。「メイン」CPU から何かをオフロードしたいときはいつでも、考慮しなければならない潜在的なバス帯域幅/シリコン領域/市場投入までのコストがあります。

簡単なケースは、あなたの教授が言及したようなものでしょう。DSP/GPU/FPGA は、2D 畳み込みなどの画像処理タスクを、CPU よりも桁違いに高速に実行します。しかし、ファイル管理のような「ハウスキーピング」タスクは、FPGA で取り組むものではありません。

あなたの場合、あなたの教授はあなたが「本物の」ことをすることを期待しているとは思いません。彼が求めているのは、CPU/GPU/DSP の得意分野と、カスタム ハードウェアの得意分野を理解することだと思います。バイオインフォマティクスの問題など、興味深いニッチな問題を探したいと思うかもしれません。

于 2011-07-31T21:35:12.140 に答える
1

一般に、ハードウェア/ソフトウェアのコード設計は、コストを削減する場合に役立ちます。

組み込みシステムには 2 つの主なコスト要因があります。

  • 開発費
  • 生産コスト

生産量が多いほど、生産コストが重要になり、開発コストは重要ではなくなります。

今日、ハードウェアの開発はソフトウェアよりも困難です。つまり、今日のコードサイン ソリューションの開発コストは高くなります。つまり、主に大量生産に役立ちます。ただし、現在、コード設計を行うには FPGA (または類似のもの) が必要であり、それらには多くの費用がかかります。

つまり、必要な FPGA のコストが、問題の種類 (CPU、GPU、DSP など) に対する既存のソリューションよりも低い場合、両方のソリューションが他の要件を満たしていると仮定すると、コードサインが役立ちます。現在、FPGA は高価であるため、これは (ほとんどの場合) 高性能システムに当てはまります。

したがって、基本的に、システムが大量生産され、高性能デバイスである場合は、システムを共同設計する必要があります。

これは少し単純化されており、10 年ほどで誤りになる可能性があります。ハイレベルなスペックからHW/SW合成の研究が進んでいる+FPGAの価格が下がっている。つまり、10年ほどでコードデザインがほとんどの組み込みシステムで役立つようになるかもしれません。

于 2011-08-20T21:52:35.087 に答える
0

最終的にどのプロジェクトを実行する場合でも、パフォーマンスを比較するためにアルゴリズムのソフトウェア バージョンとハードウェア バージョンを作成することをお勧めします。開発時間などを比較することもできます。これにより、何かを公開することを選択した場合、プロジェクトがより科学的になり、他のすべての人にとって役立つものになります。ハードウェアがソフトウェアよりも速いと盲目的に考えるのは得策ではないため、プロファイリングは重要です。

于 2011-07-30T14:14:10.987 に答える