”
intel HLS コンパイラを試してみる13(mm_slave その3)”の続き。
今回は、examples\tutorials\interfaces\explicit_streams_buffer を試してみよう。
これは、”
intel HLS コンパイラを試してみる7(image_downsampleを試す1)”でもやったAvalon Streaming インターフェースだが、ihc::buffer<>でストリーム入力が宣言されている。
image_inversion.cpp だがハードウェア化関数は、img_invert1() と img_invert_buff() がある。
二つの関数の宣言部分を引用する。
component void img_invert(int W,
int H,
ihc::stream_in<unsigned char> &a,
ihc::stream_out<unsigned char> &b) {
component void img_invert_buff(int W,
int H,
ihc::stream_in<unsigned char, ihc::buffer<64> > &a,
ihc::stream_out<unsigned char> &b) {
上に示すように、 img_invert_buff() の方の入力が、ihc::stream_in
で定義されている。それでも同様に a.read() でストリームのデータを読むことができる。これは、ストリームのバッファの容量を指定する方法のようだ。
build.bat のDEVICE を CycloneV に変更した。

build default を実行した。

tutorial-msvc.exe、tutorial-x86.exe、tutorial-fpga.exe すべて PASSED だった。
F:\intelFPGA_lite\17.1\hls\examples\tutorials\interfaces\explicit_streams_buffer フォルダを示す。
tutorial-fpga.prj フォルダができていた。

さて、ModelSimで波形を見てみよう。
全体波形を示す。

上の背景が白の信号名が、img_invert1() の信号で、その下の信号が img_invert_buff() 用の信号だ。
img_invert1() でデータ転送している部分を拡大する。

入力のa_ready, a_valid、出力の b_ready, b_valid が 1 で転送が連続していることを示している。
次に、 img_invert_buff() で転送している部分を示す。

こちらも同様に、入力のa_ready, a_valid、出力の b_ready, b_valid が 1 で転送が連続している。
- 2017年11月27日 05:12 |
- intel HLS
-
| トラックバック:0
-
| コメント:0