忍者ブログ

EDA Blog

Verilog、SystemVerilog、SystemCなど、ハードウェア記述言語についてのブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ImPulseC/CoDeveloperを使ってみる (2)

CoDeveloper Tutoriaの2番目のGenerating Hardwareでは、DesignWave 2008年2月号の記事でも紹介されていたエッジ検出回路が題材です。
ソフトウェアをコンパイルして実行すると、七五三の女の子(なぜ七五三?)の画像の輪郭を検出したBMPファイルResult1.bmpが作成されます。

 このチュートリアルでは、さらに踏み込んで、生成されるHDLが最適化されるような記述方法を紹介しています。
たとえば、下記のようなコードの場合、ABSは4回計算されていますが、引数は異なるので並列に計算できます。
しかし、4回とも同じ変数pixeldiffに結果を代入しているので、コンパイラは逐次処理と判断してしまいます。
        pixelMag = 0;
        pixeldiff = ABS(pixelSE - pixelNW);
        if (pixeldiff > pixelMag)
            pixelMag = pixeldiff;
            
        pixeldiff = ABS(pixelNE - pixelSW);
        if (pixeldiff > pixelMag)
            pixelMag = pixeldiff;

        pixeldiff = ABS(pixelS - pixelN);
        if (pixeldiff > pixelMag)
            pixelMag = pixeldiff;

        pixeldiff = ABS(pixelE - pixelW);
        if (pixeldiff > pixelMag)
            pixelMag = pixeldiff;


そこで、下記のように書き換えることで、ABS計算を並列に行わせることができます。
pixeldiff1 = ABS(pixelSE - pixelNW);
pixeldiff2 = ABS(pixelNE - pixelSW);
pixeldiff3 = ABS(pixelS - pixelN);
pixeldiff4 = ABS(pixelE - pixelW);
pixelMag = (co_uint8) MAX4(pixeldiff1,pixeldiff2,pixeldiff3,pixeldiff4);
もう一つの例として、R/G/Bを1つのプロセスで逐次処理していたものを、3つの独立したプロセスを生成して、R/G/Bを並列に処理されるように変更したものが紹介されています。
上記の並列性を利用するように書き換えられたプロジェクトもEdgeDetect_2として提供されています。

ライセンスがないので、HDLはまだ生成できないのが残念なところです。

拍手[0回]

PR

ImPulseC/CoDeveloperを使ってみる (1)

CoDeveloper's User Guideに以下の5つのチュートリアルが入っていましたので、まずはこれらのチュートリアルから実行してみたいと思います。
  1. Hello World
  2. Generating Hardware
  3. DES Encryption Part 1
  4. DES Encryption Part 2
  5. The CoDeveloper Pro Tools
CoDeveloper's User Guideは、ImPulseC/CoDeveloperのメニューからHelp -> CoDeveloper's User Guideをクリックすると表示できます。

1. Hello Worldプロジェクトのオープン
ImPulseC/CoDeveloperを起動した後、File -> Open Project...からC:/Impulse/CoDeveloper2/Examples/Generic/HelloWorld/HelloWorld.icProjを開きます。

2. コンパイル
Project -> Build Software Simulation Executableをクリックし、プロジェクトをコンパイルします。
GUIのBuildペインにコンパイル状況が表示され、build_exeが作成されます。

3. 実行
Project -> Launch Software Simultion Executableをクリックし、シミュレーションを実行します。
コマンドプロンプトが立ち上がり、結果が表示されます。
914059f1.PNG

 

"Hello World"の一文字ずつが、2つのプロセスから表示されています。

コマンドプロンプトに表示されるのは、printf文の結果だけで、cosim_logwindow_fwrite文の結果は出力されていません。
シミュレーション実行前にApplication Monitorを起動しておくと、cosim_logwindow_fwrite文の結果も表示してくれるそうですが、ライセンスがないとApplication Monitorを起動できません・・・。
評価用ライセンスを取得してからの楽しみにとっておきます。

拍手[0回]

ImpulseC/CoDeveloper (1)

DesignWave 2008年2月号付属のImpulseC/CoDeveloperをインストールしてみました。
メールを送れば40日間の評価用ライセンスをもらえるそうです。

記事の内容にしたがって、バブルソートとラプラシアン・フィルタのソフトウェアでのシミュレーションだけはライセンスなしでも実行できました。
残念ながら、動作合成はライセンスなしではできませんでした。
DVDにはチュートリアルも入っているようでしたので、それを読んでImpulseCについての理解を深めた後に評価用ライセンスをもらって、動作合成を体験してみようと思います。

HDLはXilinxやAlteraの無償版のツールを使用して、個人でも論理合成ができるようになりましたが、動作合成も無償版のツールが出てきて欲しいところです。

拍手[0回]

はじめまして

はじめまして。
Verilog、SystemVerilog、SystemCなど、ハードウェア記述言語について記述していく予定です。
ある程度まとまったら、ホームページに内容をまとめようと考えています。
よろしくお願いします。
 
 
 

拍手[0回]

カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

フリーエリア

最新CM

[04/11 なつたん]

最新TB

プロフィール

HN:
aston_martin
性別:
非公開

ブログ内検索

カウンター

アクセス解析