2021-03-01から1ヶ月間の記事一覧
小数を含む演算は、浮動小数点ユニットを使用する為、処理速度が遅くなります。 しかし、その式に乗算とビットシフトを追加することで演算速度が速くなります。 その方法を順を追って、また、ソフトウェア(C言語)とハードウェア(半導体設計)に分けて説明しま…
ASICでも、FPGAでもリセット回路(非同期リセット)について気を付ける必要があります。 (ASICではDFTも考慮する必要があります。) 製品の使用環境と基板上に関して、入力端子リセットにノイズが乗るのかなど、予め確認してからリセット構成を検討します。 リ…
対向モデルのSPI(マスタ側)の記述例です。 このモデルもUART同様、モデル内のACパラメータ(real)とタスクを実行する構成となっています。 タイミング 先にタイミング図を示します。 このSPIは、CSがネゲート時、CK(シリアルクロック)はLowとなり発振しません…
NIOSやMicroblazeなどのソフトマクロCPUは便利です。
実機確認でprintfを使用する場合に気を付けることです。
上位階層でタスクを実行することができるので、便利です。
ターゲット回路に双方向端子がある場合、どのようにしてテストベンチを記述するかの説明になります。
タスク(task)の記述
実務に沿ったテストベンチ記述を説明します。 私のやり方ですが、参考にして頂ければと思います。
FPGA内にCPUを配置した場合、CPUからLogic内のレジスタにアクセスする時のC言語記述についてです。 CPUからレジスタにリード/ライトする場合、C言語の予約語「volatile」が重要になります。 volatileは、C言語ソースをコンパイルする時の「最適化を抑止」し…
ハードとソフトのトレードオフについて、どう考えますか? ここでいうハードとはASIC/FPGAのロジック部分、ソフトはARMやNIOSなど組み込みソフトのことをいいます。 私の切り分けは、以下の通りです。 【ソフトウェア】 ・ユーザーと通信を行う箇所 例えば、…
画像処理の拡大と縮小処理です。(メモリを使用する場合) 基本概念は以下の通りです。 【拡大処理】 入力された画像データをメモリに格納し、変倍カウンタに応じて、 メモリからリードして拡大します。 【縮小処理】 変倍カウンタに応じてメモリに格納し、1ラ…
画像処理で過去のラインを使ってマトリクス演算する場合です。 例えば、 フィルタ処理、JPEGで使うDCTなど 外部デバイス(CCDなど)からライン毎に画像データが入力される場合、 フレームメモリを使用せずラインメモリを使って、必要な過去ラインデータを 取得…
画像処理を設計する上で私は画素データとは別に以下の信号を準備して、 画素データと一緒にパイプライン処理させます。 ①フレーム開始信号(パルス信号) ②フレーム終了信号(パルス信号) ③ライン開始信号(パルス信号) ④ライン終了信号(パルス信号) ⑤画像データ…
ソフトウェアとハードウェアの違いはわかりますか? FPGAというデバイスができてから、FPGAもソフトウェアと言えるとも思います。 ハードウェアを「簡単に書き換えられない」、 ソフトウェアを「簡単に書き換えられる」 と定義すれば。。。 そうなると、ハー…
はじめに。。。 半導体の設計の仕事について記載しています。