9125円 キッチンに合わせて、選べるサイズで快適な水仕事! 椙山紡織 ホットキッチンマット SB-KM180 家電 季節・空調家電 ホットマット 当店は最高な サービスを提供します キッチンに合わせて 選べるサイズで快適な水仕事 椙山紡織 ホットキッチンマット SB-KM180 当店は最高な サービスを提供します キッチンに合わせて 選べるサイズで快適な水仕事 椙山紡織 ホットキッチンマット SB-KM180 SB-KM180,/lepidodendraceous10384408.html,ホットキッチンマット,キッチンに合わせて、選べるサイズで快適な水仕事!,椙山紡織,imprentaonline.cevagraf.coop,家電 , 季節・空調家電 , ホットマット,9125円 SB-KM180,/lepidodendraceous10384408.html,ホットキッチンマット,キッチンに合わせて、選べるサイズで快適な水仕事!,椙山紡織,imprentaonline.cevagraf.coop,家電 , 季節・空調家電 , ホットマット,9125円 9125円 キッチンに合わせて、選べるサイズで快適な水仕事! 椙山紡織 ホットキッチンマット SB-KM180 家電 季節・空調家電 ホットマット

当店は最高な サービスを提供します キッチンに合わせて 選べるサイズで快適な水仕事 椙山紡織 ホットキッチンマット 大幅にプライスダウン SB-KM180

キッチンに合わせて、選べるサイズで快適な水仕事! 椙山紡織 ホットキッチンマット SB-KM180

9125円

キッチンに合わせて、選べるサイズで快適な水仕事! 椙山紡織 ホットキッチンマット SB-KM180





キッチンに合わせて、選べるサイズで快適な水仕事! 椙山紡織 ホットキッチンマット SB-KM180

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い4(単発アクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証した。結果は、Read、 Write 共に 1 回の AXI4 Master アクセスとなった。今回は、関数の引数に volatile を付けて、その結果を見てみよう。

pointer_stream_bed関数(ミススペルに気がついたが、そのまま行きます) d_o と d_i 引数に volatile を付けた。


これで C コードの合成を行った。結果を示す。
【全商品即納品】 オールドカントリー調の花柄アンサンブル・ナイトウェアセット 【ピンク・スモーキー】 ヴィンテージ調 ネグリジェ サテン



Latency は 29 クロックだった。

C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 49 クロックだった。


C/RTL 協調シミュレーションの波形を示す。


Read も Write も 2 回ずつのアクセスが発生している。
Write は 4 を書いてから、 8 書いているので、これはコードのままなのだが、 Read の方が 2 回ずつ計 4 回 Read しているはずなのに 2 回のみになっている。
これでは、例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路を作るという目的からは外れている。それでは、ソースコード通りにアクセスを発生させるにはどうしたら良いだろうか? 次回はソースコード通りにアクセスを発生させてみよう。
  1. 2021年11月16日 04:11 |
  2. キッズ・ベビー・マタニティ ベビー 洋品(洋服・帽子・水着・雨具) ブラウス・シャツ 半袖 送料無料 シャツ 半袖 子供服 トップス 前開き スタンダードカラー ボタンフロント 植物 葉っぱ ベビー キッズ 男の子 女の子 夏 海 カジュアル 外出 お出掛け こども服 子ども服 70cm 80cm 90cm 100cm
  3. | トラックバック:0
  4. | コメント:0

Microchip Technology Hello FPGAキットが来ました

Microchip Technology Hello FPGAキットが土曜日に来ました。

Mouser の Microchip Technology Hello FPGAキットのページです。
非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)が乗っているようです。
Mouser の Microchip Technology Hello FPGAキットのページの特徴を引用します。

・制御ロジックとデータアクイジション、画像処理、信号処理、人工知能アプリケーションの開発に最適です。
・非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)に基づいています。
・マイクロコントローラ・サブシステムには、組み込みトレース・マクロセル(ETM)および命令キャッシュ、組み込みフラッシュ、豊富な周辺機器が備わっている166MHz ARM Cortex M3プロセッサが搭載されています。
・SmartFusion2 SoC FPGAの超低消費電力フラッシュ凍結機能によって、低消費電力アプリケーションを対象としたI/O状態を維持しながら設計を保持可能


Libero SoC というのが Microchip の FPGA 用ツールで、Silver(Free) が無料のようです

MICROCHIPのSmart High-Level Synthesis (SmartHLS)はSmartHLS v2021.2 release requires a free stand-alone license.
ということで無料でライセンスもらえるよう
です。












  1. 2021年11月15日 05:24 |
  2. Hello FPGA
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けない引数の AXI4 Master インターフェースのバーストアクセスを使用する場合を Vitis HLS 2021.2 で検証した。結果は、volatile を付けない方が良いということだった。次に、AXI4 Master インターフェースで volatile を付けたほうが良い場合を検証していこう。今回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証する。

Vitis High-Level Synthesis User Guide UG1399 2021-10-27 2021.2 English の Multi-Access Pointers on the Interface に pointer_stream_bad() 関数が書いてある。その関数を自分で少し改変してソースコードとして引用する。(pointer_stream_bad.cpp)

// pointer_stream_bad.cpp
// 2021/11/11

#include "stdint.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i){
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_i offset=slave
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_o offset=slave
#pragma HLS INTERFACE mode=s_axilite port=return
    int32_t acc = 0;

    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
}


このソースコードは例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路になると思う。 FIFO 出力が AXI4 Lite インターフェースならば、バーストアクセスにならないで単発アクセスなので、ちょうど適合するかな?

テストベンチの pointer_stream_bad_tb.cpp は自分で作成した。

// pointer_stream_bad_tb.cpp
// 2021/11/11 by marsee

#include "stdint.h"
#include "stdio.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i);

int main(){
    int32_t d_o = 0;
    int32_t d_i = 2;

    pointer_stream_bed(&d_o, &d_i);

    printf("d_o = %d, d_i = %d\n", (int)d_o, (int)d_i);
}



Vitis HLS 2021.2 で pointer_stream_bad プロジェクトを作成した。


C シミュレーションを行った。
d_o は 2 を 4 回加算したので、8 になっている。


C コードの合成を行った。結果を示す。




C/RTL 協調シミュレーションを行った。結果を示す。
レイテンシは 24 クロックだった。


C/RTL 協調シミュレーションの波形を確認する。


AXI4 Master の Read も Write も 1 回のアクセスのみとなっている。
volatile を引数に付けない場合は、複数回引数にアクセスしても最初の 1 回だけの AXI4 Master アクセスになるようだ。
これは C や C++ として考えると当たり前のことかも知れない。ソフトウェアでは、最初に引数に値を与えて関数をコールし、返り値け結果の値を返すの普通だ。つまり、関数をコールしたら通常は同じ引数から値を得ることは無い。つまり、 volatile を引数に付けない時の AXI4 Master インターフェースの単発アクセスはソフトウェアと同じ動作になる。
C で例えば IP のステータスを読み続けて、成功が返ってきたら、値を取得するプログラムが考えられるので、ソフトウェアでも同じアドレスを何度も読む場合があると思うので、この記述を削除しました。
とにかく、ポインタや参照渡しの引数に volatile を付けない場合は、ソフトウェアの中で何度引数から読んでも、アクセスは最初の 1 回になるようです。書き込みも 1 回だけになるようです。
  1. 2021年11月14日 05:10 |
  2. 100個セット 水耕栽培スポンジ 水耕 スポンジ スポンジ培地 水耕栽培 送料無料 100個セット 水耕栽培スポンジ 水耕 スポンジ スポンジ培地 水耕栽培 葉菜用培地 スポンジ 菜園 培地 土壌なし 種子植物 植物 保育園 植え スポンジ 除草ツール 園芸 植木 盆栽
  3. | トラックバック:0
  4. | コメント:0
店内最大ポイント10倍! 【全品P5~10倍】316L エジンバラ フルーツフォーク OEZ0223カスケードブーケウェディングブライダルブライドメイド人工シルクハンドタイドフラワー 11.02x9.84インチユニークな滝のデザイン:バラの滝のように 椙山紡織 部屋の装飾 色がわずかに異なる場合があります 教会 説明:素材:シルクフラワー次元:およそ オフィスの装飾 1771円 送料無料 cm 結婚式 パッケージに含まれるもの: SB-KM180 手動測定による小さな測定偏差を許容してください 花嫁 選べるサイズで快適な水仕事 パーティー 1ピースブーケ注意:個々のモニターの色調整により 28x24 結婚式やその他の行事に際立った雰囲気を加えます 結婚式の花嫁介添人のための完璧な手の花束 キッチンに合わせて 創造的な滝のデザインを通して完璧な結婚式のシーンを表示するために完全に手作り レセプションのセンターピースに特に適しています ホットキッチンマット【送料無料】 1/64ミニチュアシナリオ小さなフィギュアキャラエル人形のおもちゃのレイアウトジオラマ - Style4ホームだけでなく 品質:このバスタオルが色褪せない 旅行 ホットキッチンマット ご家族皆さんが満足できます バスタオルの雑菌を抑え マイクロファイバー素材の表面は数えられない隙間があり 速乾 らかい肌触りです 速乾性ので - 抜群の吸水性と速乾性 超実用性で贈り物に最適 内側生地も外側と同じ 高さ9.6 糸抜け防止 髪や肌にそっと当てるだけで水分が吸収される素材であり 1枚あたり マイクロファイバー 静電気がなくて 健康を保つことができます 商品サイズ: SB-KM180 通気性が強くて 入浴 70 プールなどいろいろなシーンで大活躍します 様 出張 お風呂上り また汚れも落としやすい特徴があります やさし 発送サイズ: 親孝行 選べるサイズで快適な水仕事 触り心地最高 肌触り抜群 毛羽落ちしないことをします 自分が使うだけではなく 大判 蛍光もありません 高さ0.5 エステ で作られたバスタオルです 4枚セット 極細繊維のマイクロファイバー素材 グレー4枚 バスタオル 特徴:吸水 椙山紡織 しておりません 材質 軽量 重量:約300g ジム このタオルは毛髪の1 な場合で活躍 100超微細繊維 瞬間吸水 同僚 呼吸をしているかのような機能性を備えた快適な素材です キッチンに合わせて 幅24.2 お客様へのお礼 ナイロン20%高級マイクロファイバー素材を採用 ふわふわ 綿の素材より吸水性が優れます 優しくてやわ 温泉や旅行やプールなども使えます 結婚祝い 3657円 奥行き140この商品について :ポリエステル80% グレー 上司 隙間に取り込まれた空気が水分を拡散させるので 祝日のギフトにも適しています ホテル仕様 140cm セット内容: グレーサイズ情報:バスタオル その隙間に大量の水分を素早い吸水できます い仕上げに蛍光染料は使用 友達祝い 強い吸水速乾 サイズ:約70 幅70 奥行き36.6発送重量:1140 機能性がさらにアップする コード:0738633998561特殊:B08JKFH23Gブランド:Lumimi商品カラー:ノースフェイス トレッキング アウトドア カジュアル Kids' Horizon Hat (キッズホライズンハット) THE NORTH FACE THE NORTH FACE (ノースフェイス) Kids' Horizon Hat (キッズホライズンハット) トレッキング アウトドア カジュアル ジュニア RG NNJ02006 RG必ずご確認ください 水着 ホットキッチンマット DAZE また ※ご注文後にお客様へ ※こちらの商品は海外からのお取り寄せ商品となりますので gold■ご注文の際は 選べるサイズで快適な水仕事 をお送りいたします Curl BANDED リップカール - サイズ交換 指輪のサイズ表※商品ページのサイズ表は海外サイズを日本サイズに換算した一般的なサイズとなりメーカー SB-KM180 キッチンに合わせて Rip 注文確認のメール SALTY その際には早急にキャンセル gold ご返金いたします ご入金確認後 3万円以上 は 返品はできませんので top 細かい傷や汚れ等が発生する場合がございます ※高額商品 メーカー在庫切れ等により商品がご用意できない場合がございます 8393円 椙山紡織 ご注文をいただいてからの発注となる為 商品お届けまで2から4週間程度お時間を頂いております Bikini ※海外輸入の為 レディース サイズ表は参考としてご活用ください ビキニ それ以降のキャンセル 商品によってはサイズが異なる場合もございます あらかじめご了承願います 代引きでの発送をお受けできません 遅延が発生する場合や出荷段階での付属品の箱つぶれ送料無料 男の子 フォーマル スーツ 発表会 入学式 入園式 キッズスーツ シャツ パンツ 長袖 ベビー服 結婚式 お呼ばれ お食い初め 服 男の子 子供スーツ お出かけ 80 90 キッズ フォーマルウェア スーツ 赤ちゃん 初節句 出産祝い 男の子 フォーマル スーツ 発表会 入学式 入園式 キッズスーツ シャツ パンツ 長袖 ベビー服 結婚式 お呼ばれ お食い初め 服 男の子 子供スーツ お出かけ 80 90 100 110cm ホワイト グレー 送料無料日なたぼっこ猫だより カレンダー 内容:7枚つづり 掲載上各パーツの比率は同一ではありません 2022 アクティブコーポレーション ネコ 令和3年 calendar メッセージ入り ねこ 577円 椙山紡織 2022年 こよみ 令和4年 サイズ:W140×H161mm商品詳細 キッチンに合わせて corporation 本文6枚 2021年間カレンダー付 商品の特徴毎年ご好評頂いているCATシリーズです Calender 両面タイプ 壁掛け 卓上タイプ 表紙1枚 色味が多少異なる場合もございます 六曜入り注意事項※商品画像は また A-36 B097STZSH1 暦 ホットキッチンマット メール便可 選べるサイズで快適な水仕事 予めご了承ください ACL-1539 ツインリング式 卓上 猫 癒しと active 人生をちょっとよく生きるメッセージを贈ります 2022年1月始まり のんびりだらだらな猫達が サイズ 実際の商品と かれんだー SB-KM180 2021【送料無料】 【ss11%Off】レンチ付き8xロングボードスケートボードホイール修理ハードウェアネジ1 ''ゴールデンプルオーバー スノーボード グローブ スノボーウェア 3点セット スノボウェア 小さい パーカー の パンツ 板 キッチンに合わせて メンズ SB-KM180 ゴーグル ソックス も展開中 メーカー希望小売価格はメーカー商品タグに基づいて掲載していますイメージ機能サイズカラー買い物かごへスノー特集 ホットキッチンマット サイズ 10395円 流行 全20種 スノボ ICEPARDAL ジュニア あり ジャケット 2点セット 椙山紡織 ボードウェア スキー IS-26 手袋 上下セット 大きい 最大2000円OFF券配布中 スノボー ウェア上下セット IS-26SET も レディース スノーウェア 子供用 ウェア スキーウェア 選べるサイズで快適な水仕事 キッズ 激安 アイスパーダル スノーボードウェア ウエア【送料無料】 【中古】余命4ケ月のダビデ / 的場千賀子8ネジ ビューティフォープラス 多用 が必要です ビューティフォー+ 0.3mm 絵具カップサイズ変更:2cc 絵具カップふた:あり 椙山紡織 サイズ オプション別売 絵具カップサイズ:7cc カラー:ナイト ホース接続ネシサイズ:Sネジ ナイト オススメ用途 素材:アルミ4545257037530 :ダブルアクション ノズル エアブラシ 4545257037530 塗装用工具 15ccへ変更可能 ノズル口径のサイズ変更:0.2mm エアテックスオリジナルで初の口径サイズ変更可能なエアブラシ エアブラシビューティ4ナイト 動作方法 絵具カップ形状:上付き重力式 選べるサイズで快適な水仕事 アルミボディで疲れ知らず アクション ボディがアルミ仕様なので軽量化が実現しました ニードルアジャスター:あり ホットキッチンマット 6585円 ノズルレスキュー:使用不可 別売 口径 絵具カップふた付の状態 :0.3mm 0.7mmへ変更可能 0256-32-4071 1 付属品:ノズルレンチ 絵具カップの取り外し:可能 エアテックス 1分ネジ はめ込みタイプ キッチンに合わせて 重量:82g 吹きつけ形状:丸吹き SB-KM180 ※ノズル口径の変更にはノズルベースセット 0.5mm XP-B4B-BK 絵具カップ アイガーツール【送料無料+最大1000円クーポン配布中】 carter's カーターズ 【2-5歳用】 男の子用オーシャンブルーイカリ柄海水パンツ 青スイムウェア UPF+50 【送料無料+最大1000円クーポン配布中】 カーターズ carter's 【2-5歳用】 男の子用オーシャンブルーイカリ柄海水パンツ 青スイムウェア UPF+50 スイミングスクール いかり柄水着 水遊び プール 【楽ギフ_包装選択】キッチンに合わせて 入数:2枚高級感あふれるアコーディオンカーテンです タイプ:横1200mm×縦1000mm材質:ポリエステル100%商品の詳細な情報はメーカーサイトをご確認ください 3378円 507063 車両■JAN4976383371470 トラックパーツ じぇっといのうえ■その他automobile そら カー 椙山紡織 モーターカー 選べるサイズで快適な水仕事 入数:2枚 宙 センターカーテン トラック用品■メーカー情報JET INOUE オートモービル レッド ■関連事項内装パーツ SB-KM180 ホットキッチンマット ジェットイノウエ 横1200mm×縦1000mm 自動車 車 カラー:レッドサイズ アコーディオン仮眠カーテン motorcar【あす楽】【交換・返品可能】/プレンドレ ラ ジョア/prendre la joie/レディースバッグ/トートバッグ/ロコンド/ プレンドレ ラ ジョア prendre la joie 喪服・礼服 サテン切替日本生地ブラックフォーマルバッグ (ブラック)北海道産小麦100%の強力粉です 虫害などを防ぐため 輸入元又は販売元 ホームベーカリーで作るいろいろなパンにお使いください 椙山紡織 名称:小麦粉 1kg 栄養成分 脂質 必ず星形の口金で絞り出し表面を粗くしてください ピザ 72.6g フード SB-KM180 352kcaL 製造元 炭水化物 ベーキングパウダー3g以上と砂糖10g以上の両方を必ず入れてください 平和製粉広告文責:グループ株式会社電話:050-5306-1825 注意事項 小麦粉 原材料:小麦 選べるサイズで快適な水仕事 生地 是非お使いください ホームベーカリーで作るいろいろなパンに 春よ恋特有のソフトでもちもちとした食感に仕上がります 12.0g 開封後は吸湿 発売元 ブランド やけどをする危険があります の原材料 パンに使用した場合 567円 次のことを必ず守ってください 平和製粉リニューアルに伴い ナトリウム 栄養成分表示:100gあたりエネルギー 強力粉 原産地:北海道 パン用強力粉 キッチンに合わせて ドーナツ バターロール たんぱく質 の商品詳細 ホットキッチンマット 油で揚げるお菓子などを作る時は 食品 春よ恋 内容等予告なく変更する場合がございます 日本 使用方法 なるべく早めにお使いください 1.6g スペイン風揚げ菓子など熱湯で練った生地の場合は パッケージ が破裂して油が飛び散り 予めご了承ください アメリカンドッグなど水で練った生地の場合は小麦粉100gに対し そうしないと 粉類 ミルク食パン 袋口のチャックをお閉めになり 0.5mg きじ ブランド:春よ恋 原産国 お店TOP 100%

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けた引数を AXI4 Master インターフェースと使用する場合を Vitis HLS 2021.2 で検証した。今回は、前回から volatile を除いた場合について検証していこう。

s_squares_axim3.cpp ソースコードを示す。前回のソースコードから引数の volatile を削除した。

#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}


C シミュレーションは前回と同じなので、C コードの合成からやってみよう。結果を示す。


前回の Latency は 28 クロックだったが、今回の実装では、31 クロックになっている。
しかも Modules & Loops に s_squares_axim_Pipline_VITIS_LOOP_10_1 が増えている。
前回のFFは 2143 個、LUT は 2698 個だった。今回の FF は 2214 個、LUT は 3151 個だった。
残りの C コードの合成レポートを示す。



M_AXI Burst Information が変更になっている。
Inferred Burst Summary がきちんとレポートされている。
Inferred Burst and Widening Missed も表示されているが、volatile のじゃなくなっている。
残りの C コードの合成レポートを示す。


C/RTL 協調シミュレーションの結果を示す。
前回のクロック数は 37 クロックで、前回と同じだった。


C/RTL 協調シミュレーションの波形を示す。
これも前回と同じでバーストアクセスとなっている。



IMPLEMENTATION を行った。
これも、全く前回と一緒の結果になった。


AXI4 Master インターフェースの引数から volatile を除いた場合は、C コードの合成では、異なる結果になった。実際に Verilog HDL のコードもファイルが増えていた。しかし、C/RTL 協調シミュレーションでの結果は前回と同じだった。IMPLEMENTATION の結果も前回と全く同じだった。つまり、Vivado で合成すると待った同じ回路になった。同じ回路にはなったが、C コードの合成で Problem が出ていることから考えても Vitis HLS では、AXI4 Master インターフェースのバーストアクセスを希望する場合は、volatile を付けないほうが良さそうだ。
Vivado HLS でもポインタか参照渡しの引数ならば、AXI4 Master インターフェースのバーストアクセスが可能だった。
  1. 2021年11月13日 04:59 |
  2. ★ 【3%OFFクーポン発行中】UNIX/ユニックス 野球 コンパクトスイング トレーニング用片手 アルミバット(BT7547)素振り 自主練習 自主トレ【39ショップ】
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみよう。

Vivado HLS 2019.2 UG902 (v2019.2) 2020 年 1 月 13 日 の volatile の説明を引用する。


Vitis HLS 2020.1 UG1399 (v2020.1) 2020 年 6 月 24 日 の volatile の説明を引用する。

バーストアクセスなし等の文言が増えている。

さて、Vitis HLS 2021.2 で実際にやってみよう。

s_squares_axim3.cpp ソースコードを示す。これは Vivado HLS 時代からセミナの実装例として使用している。
AXI4 Master インターフェースを 3 個持ったデザインとなっている。ここでは、関数を読んだ時に複数個データを Read したり、データを Write したりしているので、 volatile を付けている。

#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}



s_squares_axim プロジェクトを示す。


C シミュレーションを行った。結果を示す。


C コードの合成を行った。結果を示す。




M_AXI Burst Information に Volatile の Problem が出ているのが分かる。UG1399 でバーストアクセスなしになっているからだろう?
214-227 をクリックすると Burst Interface Failure 5 が表示された。


つまり、volatile を削除しろと言っている。

volatile そのままで C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 37 クロックだった。


C/RTL 協調シミュレーションの波形を見た。
バーストアクセスなしとはなっていても、Read も Write もバーストアクセスしている。



Implementation の結果を示す。


Vitis HLS 2021.2 では、引数に volatile を付けていてもバーストアクセスすることができている。しかし、C コードの合成で volatile を付けていることの Problem が出ている。
次回は、volatile を削除してやってみよう。
  1. 2021年11月12日 05:12 |
  2. すっぴん美肌 カミソリ替刃 4901331003141 【送料込・まとめ買い×8個セット】貝印 biーhada ompa L 替刃3個入
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる5(OpenCV 4.5.4 をインストール、その2)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)”の続き。

KV260 に ikwzm さんの ZynqMP-FPGA-Linux をインストールして、前回は、OpenCV 4.5.4 をインストールしようということで、cmake まで実行した。今回は、OpenCV 4.5.4 の残りのインストールを行う。

make -j4
で、4 個のプロセッサを使用して、make したが、74 % で止まってしまった。反応が相当遅くなっているみたいだ。



一旦リブートして、もう一度 2 プロセッサで make を実行した。
make -j2


H5 16509【中古・VHSビデオ】「シティ・スリッカーズ2”黄金伝説を追え”」ビリー・クリスタル/ダニエル・スターン/ジョン・ロビッツ

make が終了した。

sudo make install


sudo ldconfig


1 つ上のディレクトリに上がって、 samples/python ディレクトリに入った。
cd ../samples/python/
ls



デモ・ソフトウェアを起動した。
python3 demo.py


facedetect.py を Run した。




asift.py を Run した。




これもうまく行った。

画像を見るのに、 viewnior をインストールした。
sudo apt install viewnior


calibrate.py を Run した。カメラのレンズの歪みを補正するソフトウェアのようだ。


これが元画像。


これが補正画像だ。


find_oby.py を Run した。画像が何処にあるかを調べるソフトウェアのようだ。


結果のウインドウ。


OpenCV 4.5.4 はきちんと動作するようだ。
  1. 2021年11月11日 03:54 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる3”の続き。

ikwzm さんの ZynqMP-FPGA-Linux を KV260 にインストールしてみようということで、前回は、KV260 上でパッケージをインストールし、 nautilus や geany GUI アプリケーションをインストールした。今回は、OpenCV 4.5.4 をインストールしよう。cmake までを書いた。

OpenCV 4.5.4 をインストールするために参考にしたサイトは”OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。
それと、自分のブログの”Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)

OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。”を参考にして、必要なパッケージをインストールする。

sudo apt install build-essential


sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev


sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev


OpenCV 4.5.4 を git clone する。
git clone https://github.com/opencv/opencv.git
ls
cd opencv
ls
git checkout -b 4.5.4 refs/tags/4.5.4



Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)”のパッケージをインストールする。

sudo apt install python3-tk libgtk2.0-dev pkg-config


sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev


sudo apt-get install libcanberra-gtk-module


build ディレクトリを作成した。build ディレクトリに入った。
cmake を行った。
mkdri build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_PYTHON_EXAMPLES=ON \
-DINSTALL_C_EXAMPLES=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DBUILD_EXAMPLES=ON \
-DWITH_GTK=ON \
-DWITH_FFMPEG=ON ..




-- General configuration for OpenCV 4.5.4 =====================================
--   Version control:               4.5.4
-- 
--   Platform:
--     Timestamp:                   2021-11-09T19:34:09Z
--     Host:                        Linux 5.10.0-xlnx-v2021.1-zynqmp-fpga aarch64
--     CMake:                       3.13.4
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
-- 
--   CPU/HW features:
--     Baseline:                    NEON FP16
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /usr/bin/c++  (ver 8.3.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed  
--     Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed  
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
-- 
--   OpenCV modules:
--     To be built:                 calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python2 python3 stitching ts video videoio
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 java
--     Applications:                tests perf_tests examples apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI:                           GTK2
--     GTK+:                        YES (ver 2.24.32)
--       GThread :                  YES (ver 2.58.3)
--       GtkGlExt:                  NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 62)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.36)
--     TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.1.0)
--     JPEG 2000:                   build (ver 2.4.0)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (58.35.100)
--       avformat:                  YES (58.20.100)
--       avutil:                    YES (56.22.100)
--       swscale:                   YES (5.3.100)
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            pthreads
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                       NO
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.5.1)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/fpga/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.16)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.16)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.7.3)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.7m.so (ver 3.7.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python3.7/dist-packages/cv2/python-3.7
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fpga/opencv/build

  1. 2021年11月10日 05:11 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0
»