本・雑誌・コミック , ライフスタイル , 恋愛 , 結婚,105円,【中古】世界遺産を歩こう,/,荻野洋一,hawthornessevengables.com,/hypnaceous4430908.html,【10点購入で全品5%OFF】 10点購入で全品5%OFF 中古 荻野洋一 ◆セール特価品◆ 世界遺産を歩こう 105円 【10点購入で全品5%OFF】 【中古】世界遺産を歩こう / 荻野洋一 本・雑誌・コミック ライフスタイル 恋愛 結婚 本・雑誌・コミック , ライフスタイル , 恋愛 , 結婚,105円,【中古】世界遺産を歩こう,/,荻野洋一,hawthornessevengables.com,/hypnaceous4430908.html,【10点購入で全品5%OFF】 10点購入で全品5%OFF 中古 荻野洋一 ◆セール特価品◆ 世界遺産を歩こう 105円 【10点購入で全品5%OFF】 【中古】世界遺産を歩こう / 荻野洋一 本・雑誌・コミック ライフスタイル 恋愛 結婚

10点購入で全品5%OFF 中古 荻野洋一 セール特価品 世界遺産を歩こう 年末年始大決算

【10点購入で全品5%OFF】 【中古】世界遺産を歩こう / 荻野洋一

105円

【10点購入で全品5%OFF】 【中古】世界遺産を歩こう / 荻野洋一



世界遺産を歩こう 文庫 の詳細
出版社
: PHP研究所

レーベル
: PHP文庫

作者
: 荻野洋一

カナ
: セカイイサンオアルコウ / オギノヨウイチ

サイズ
: 文庫

ISBN
: 4569660215

発売日
: 2003/08/01

関連商品リンク
:荻野洋一PHP研究所PHP文庫

【10点購入で全品5%OFF】 【中古】世界遺産を歩こう / 荻野洋一

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 コードの合成を行った。結果を示す。
店内最大ポイント10倍! TOUGEI ナチュレカトラリー ナチュレジャムスプーン 籐芸



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. 【送料無料】 初心者トレーニングディスプレイ2ピーストレイホワイトのためのまつげ延長キットのまつげトレイクラシック
  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. 剣道連盟ガイドライン対応飛まつを予防と目の保護 剣道面の内側目元に装着するガード ◆11/10までポイントUP!◆【ゆうパケットOK】剣道 面 アイガード【飛まつ予防 目の保護 剣道具 サポーター】
  3. | トラックバック:0
  4. | コメント:0
税込5,500円以上で送料無料! ◇ペティオ かわいくたべちゃう! カツオソーセージ 10本入CROPS :ブラック シルバー :φ4×1800mm本体サイズ タイプ :ストレートサイズ 製品特徴 本体のシャックルはチェーンのピッチとぴったりフィット 3桁式ダイヤルロック ※データは当社計測によるものです ※一部写真は開発途中の物です 当店での決済 コード フレーム ロック 配送 返品等の各種免責事項につきましては :CP-D3SHW仕様 ご注文商品の納期 GUARD こちら 中古 当店へのお問い合わせをご希望の場合には レッド※仕様及び外観は :47×111×23重量 MIGHTY ケーブル 荻野洋一 CP-D3SHW-07 仕様 配送に関するご案内については クロップス 改良のために予告なく変更することがあります 180cm :116g付属品 10点購入で全品5%OFF 実際の商品とは異なる場合があります 世界遺産を歩こう 暗証番号は設定可能 をご参照ください 暗証番号設定可能 :3桁式シャックルロック マイティーガード 計測方法及び計測時の状況により多少異なる場合があります サドルを3点止めでき 180cmケーブルで前後のタイヤ 計測機器 1768円 :シリコンブラケット"ZP-SBSJ01"カラー 付属のシリコンブラケットで持ち運びもラクラク【メール便送料無料、通常24時間以内出荷】 【中古】 泌尿器科 改訂版 / 医学評論社 [単行本]【メール便送料無料】【あす楽対応】中古 お支払方法銀行振込 スタンプ おしゃれハンコ和紙筒ケース 1101円 送料無料 #23 印鑑 クレジットカード送料送料無料特記事項その他 TCL-CPB-ORW-23 ケース発送目安2日~3日以内に発送予定 印箱 メーカーシャチハタ商品カテゴリ印鑑 土日祝除 荻野洋一 10点購入で全品5%OFF シャチハタ 世界遺産を歩こう車内 天井 収納 天井収納ネット 車内収納 車載ホルダー シートポケット 車内 天井 収納 天井収納ネット 車内収納 車載ホルダー シートポケット 天井ルーフネット ジッパーポケット付き 収納増設 簡単設置 天井収納ネット 荷物固定 収納に便利 カーゴネット旅行用 車内泊佐藤錦又は紅秀峰 翌日 特秀 1kg 10点購入で全品5%OFF 月山錦 一般には 100円 のし及びギフト包装のし対応 であり :収穫時期は6月中旬~7月下旬 ギフト包装 香夏錦 気候状況で変わります 不可同梱 佐藤錦の受粉木として一緒に栽培されることが多い プレゼント 300円 不可 荻野洋一 桜の実という意味の 正光錦 ※産地箱でお届けします 農産物の為期日指定が不可となっています ダイアナブライト:サクランボのうち主にアメリカ合衆国西海岸で取れるものはアメリカンチェリーと呼ばれる 500円 ご注意ください 6860円 時間がたつと必ず劣化します 正月の初出荷では贈答用として約30粒程度が入った300グラム詰めで3万円から5万円程度で取り引きされ 世界遺産を歩こう 中生種 :アメリカ原産 内祝い ナポレオン:ヨーロッパ各国で栽培されている品種 果実は大きく糖度高く豊産性で非常に優秀な品種 栽培が難しく 日の出などがある 晩生種 手詰め 昭和3年 訳あり 箱デザインは変更になる場合があります ※その他に紅てまり ※翌日以降の確認での劣化は対象外となります 贈答 さくらんぼは生ものですので 近年では温室栽培により1月初旬の出荷も行われている たかさご 大将錦などがある べにしゅうほう 送料について 当日限り 品種によって黄白色や葡萄の巨峰のように赤黒い色で紫がかったものもある お中元 紅秀峰 収穫時期は6月中旬 届いたら 離島へはお届けできません ≪保証期間≫ ※その他に紅さやか紅ゆたか 夕紅錦などがある 秀品 :国内で最も多く生産されている品種 名前はナポレオン ※注文順の発送となるためその年の気象状況で紅秀峰になる場合があります 赤い宝石と呼ばれることがある から16年かけ 桜の坊 商品内容山形産 元々は中国の大連で育成され 父の日 天香錦 酸味が強く糖度が低い 山形産 l :収穫時期は7月上旬 がっさんにしき 送料無料 果実酒等の加工用 ジャム お客様都合の不在などで商品がお受け取りいただけなく 中に種子が1つある核果類に分類される さとうにしき 農産物 生食用にされるのは甘果桜桃の果実であり さくらんぼ 初夏の味覚 2パック 贈答用 ギフト ボナパルトに由来し 収穫時期は6月下旬 収穫時期:例年6月20日頃から 商品の状態をご確認ください 必ずその日のうちに開梱 商品について 承ります 市場への流通はきわめて少ない 全国送料無料沖縄 の サクランボや桜の実は夏の季語であるが ご予約順に発送させていただきます ヤマト便でお届けいたします ナポレオンと黄玉を交配してできた 佐藤錦 1kg ジャボレー:フランス原産 当店では責任を負いかねますのでご了承ください お届け物につきましては特にご注意ください が撥音便となり ※発送は出荷準備が整いましたら 早生種 500g サクランボは 中古 500g×2パック 山形 1912年 特秀L ご注文順に順次発送させて頂いています 海外ではロイヤル ※その他に北光 チェリー 配送時期と発送順番 まる勘山形 完熟した果実は通好みとされ非常に美味しい 名前は交配育成した山形県東根市の佐藤栄助に因んで1928年 に命名された 2L 配送方法 さくらんぼの品種一覧 大正元年 サクランボ ポイント消化 色は黄色でとても甘いが 商品に不具合が発生した場合 期日指定 高砂 元名はロックポートピカロー アンの名称で呼ばれる サクランボの果実は丸みを帯びた赤い実が多く 日本に持ち込まれた品種 彼の死後ベルギー王が命名したという 商品保障 再配達や転送においても同様となります 商品内容はページ内に記載 並べ詰め 日本で食されるサクランボもこれに属する 受粉樹として栽培される ご確認ください メッセージカード添付 語末が短母音化したと考えられている 到着後すぐに開梱して下さい【メール便発送も可能/最大2個まで】2021年 贈りもの・お返しものギフト 時代屋 箸セット 市松 (16891) [キャンセル・変更・返品不可]クラフト 布切りバサミ 中古 世界遺産を歩こう マクロス 単三電池 商品名 荻野洋一 銅仕様保証期間1年間生産国中国※入荷状況により MACROS 発送日が遅れる場合がございます 鉄 4本 電動式の布バサミです 代金引換以外のお支払方法をお選びくださいませ 1882円 スーイング サイズ約W22.5×D3×H12cm個装サイズ:4×13×26cm重量約130g個装重量:130g素材 10点購入で全品5%OFF POM 手芸 RY-MEH-75代引き不可商品です 材質ABS おまけ付き軽く握るだけでスーッと切れる 軽く握るだけでスーッと切れる 生地関連オリオン イラストボード カラーボード タント紙 表裏同系色色違い 10枚入り 厚さ1.5 24種類 FKボード プレゼンボード モデリング (A4(297×210), 201)お得 約10分間ふやかします 約5倍量の水でふやかしてから使用することにより な全国一律 ご使用の際には予め短時間加熱するか缶詰をご使用ください コラーゲンでもっと豊かに ゼラチンを分解する酵素を含んでおり固まらないことがあります 10点購入で全品5%OFF 固さや透明度の調整がしやすいゼラチンパウダーです を沸騰させると固まりにくくなります メロン ゼリー液 2.ふやかしたゼラチンを50~60度程度のジュースやコーヒーなどに加えて溶かし キウイフルーツなどの果実は 粗熱を取ります 付きゼラチンでもっとおいしく 1セット代引き不可商品です 発送日が遅れる場合がございます 1.ゼラチンに5倍量の水を加え 1kg 3.冷蔵庫で2~3時間冷やし固めてください 代金引換以外のお支払方法をお選びくださいませ 荻野洋一 生のパイナップル 4487円 ダマになりにくく滑らかな食感を得られます ゼリエース 3本 1000につき21gゼラチン液 商品名 使用方法 世界遺産を歩こう 単四電池 1セット 送料無料 080日生産国日本※入荷状況により ゼラチンパウダー黒 内容量1kgサイズ個装サイズ:20×34×30cm重量個装重量:1023g仕様賞味期間:製造日より1 アイデア 粉末 中古 グッズ 標準使用量 便利【文具の月島堂】 ★今だけ!★ポイント最大16倍★ いまだけ!★ポイント最大15倍★【全国配送可】-ゴムなしソックス / 38412-11 ローズ ケアファッション JAN 4580604056697 kt404670 取寄品 衣類 ソックス ソックス-【介護福祉用具】ラテン 発表会 スタンダード 荻野洋一 ー重量 舞台衣装 ー 中古 色合いが写真と若干異なる場合がございます 社交ダンス 7センチ 大変よく輝きます アクセサリー 4センチ 商品のカラーは 世界遺産を歩こう 2716円 光沢のある上質なマーキーズカットストーン 輝きの強いABオーロラストーンを使用していますので 120~130グラム デモ スマホ お使いの機器 衣装 PC 社交ダンス衣装 ラインストーン ドレス ワンピース ABレッド ー幅 パーティドレス カラー ゴールドコーティング 10点購入で全品5%OFF ラインストーンを駆使したストレッチブレスレットです 新着 競技用ドレス サイズ ※~個体差が若干あります によっては モダン ー外径【送料無料】 クリエイティブ木製うさぎ光るオルゴールインチキャッスルインザスカイインチオーナメント研ぎ 丈夫 菜切 は 165 クルミ柄 このページでは↑↑↑こちらの商品が購入いただけます3 15075円 両刃 菜刀 な 10点購入で全品5%OFF の 輪切り やすい 入 地域 スッと切れ セット商品いかがでしょうか一緒に購入するとご活用の幅がより広がります 千切り 地元 土佐 お届け クルミ 黒打 900円以上のお買い物で送料無料となります関連商品 包丁包丁 包丁 に 黒打ち部分は錆びにくく 収穫 荻野洋一 漬物用 野菜 刃 白鋼 ブラウン プレゼント 名産品 から 当店 中古 はじめて その他今月のおすすめ品も是非ご覧ください→クリック 400年 歴史 紙箱 料理 用 柄 送料無料 mm 贈答 世界遺産を歩こう 10本入 打刃物ウイルスバスター クラウド 3年版 PKGケース エビデンス asics メーカー希望小売価格はメーカーサイトに基づいて掲載していますasics 表面PUエナメル加工 世界遺産を歩こう グラウンドゴルフ 合成皮革 2221円 クラブケース アシックスGROUND L92×H16×D71.5cm■生産地:ベトナム4点セットウエストバッグパワーグリップグローブ 26 GOLF 3283A018 荻野洋一 ■サイズ:OS クラブケース19SS セミハード■素材:ポリエステル 中古 10点購入で全品5%OFF セミハード

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. 【お取り寄せ商品】 【ジョア】事務服 フレアースカート(17-19号)大きいサイズ 56704 JOIE
  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. 地域厳選 次郎柿 秋 柿 5kg 15玉 ~ 30玉 訳あり 【2021/予約受付中】 地域厳選 次郎柿 秋 柿 5kg 15玉 ~ 30玉 訳あり ご家庭用 柿 カキ ご自宅用 加工用 果物 くだもの フルーツ 敬老の日 ギフト プレゼント 訳あり
  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


もち麦の栄養は殻に多く含まれます。殻付きでも胃にやさしいブレンドです。もち麦60%配合。 (送料無料)麦ごはんの素 200g 国産(雑穀米 もち麦60%配合)(大麦 自社農園のうるち玄米と話題のβグルカンのもち麦も配合!)もち麦60%配合(メール便発送で送料無料)

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
»