FC2ブログ

[SystemC][HLS] ラプラシアンフィルタを SystemCで記述してみる。

この記事は HDL Advent Calendar 2013の 19日目の記事でした。

まだまだ参加者募集しております!!!


概要

皆さん @marsee1さんが書かれているブログ


FPGAの部屋


をご存知でしょうか?
その中に、Vivado HLSに関してのトライアルをした記事などがあります。

もう身近に高位合成が出来る時代になりましたね!


さて、今回のその記事の中からこちらを引用したいと思います。


SystemC版を作ってみよう

記事では C言語ですが、せっかくなので SystemC版を書いてみました。
※ただし、高位合成出来るかは試していません

  • laplacian_filter.h

  • #pragma once
    
    #include <stdlib.h> 
    #include <systemc.h>
    
    SC_MODULE( laplacian_filter ){
      sc_in_clk   clk;
      sc_in<bool> xreset;
      sc_in<int>  x0y0;
      sc_in<int>  x1y0;
      sc_in<int>  x2y0;
      sc_in<int>  x0y1;
      sc_in<int>  x1y1;
      sc_in<int>  x2y1;
      sc_in<int>  x0y2;
      sc_in<int>  x1y2;
      sc_in<int>  x2y2;
      sc_out<int> out;
      
      void process();
      
      int  _x0y0;
      int  _x1y0;
      int  _x2y0;
      int  _x0y1;
      int  _x1y1;
      int  _x2y1;
      int  _x0y2;
      int  _x1y2;
      int  _x2y2;
      int  _exe;
      
      SC_CTOR( laplacian_filter ):
         clk("clk")
        ,xreset("xreset")
        ,x0y0("x0y0")
        ,x1y0("x1y0") 
        ,x2y0("x2y0") 
        ,x0y1("x0y1") 
        ,x1y1("x1y1") 
        ,x2y1("x2y1") 
        ,x0y2("x0y2") 
        ,x1y2("x1y2") 
        ,x2y2("x2y2") 
        ,out ("out")
      {
        SC_CTHREAD( process, clk.pos() );
        async_reset_signal_is(xreset, false);
      }
    };
  • laplacian_filter.cpp

  • #include "laplacian_filter.h"
    
    void laplacian_filter::process() {
      out.write(0);
      wait();
    
      while (1) {
        { //input
          _x0y0 = x0y0.read();
          _x1y0 = x1y0.read();
          _x2y0 = x2y0.read();
          _x0y1 = x0y1.read();
          _x1y1 = x1y1.read();
          _x2y1 = x2y1.read();
          _x0y2 = x0y2.read();
          _x1y2 = x1y2.read();
          _x2y2 = x2y2.read();
        }
    
        { // execute
          _exe = abs(-_x0y0 -_x1y0 -_x2y0 -_x0y1 +8*(_x1y1) -_x2y1 -_x0y2 -_x1y2 -_x2y2);
        }
    
        { // output
          out.write(_exe);
        }
        wait();
      }
    }
スポンサーサイト



続きを読む

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
11 | 2013/12 | 01
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 - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数