nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

2021-03-01から1ヶ月間の記事一覧

浮動小数を使用せず演算

小数を含む演算は、浮動小数点ユニットを使用する為、処理速度が遅くなります。 しかし、その式に乗算とビットシフトを追加することで演算速度が速くなります。 その方法を順を追って、また、ソフトウェア(C言語)とハードウェア(半導体設計)に分けて説明しま…

リセット回路について

ASICでも、FPGAでもリセット回路(非同期リセット)について気を付ける必要があります。 (ASICではDFTも考慮する必要があります。) 製品の使用環境と基板上に関して、入力端子リセットにノイズが乗るのかなど、予め確認してからリセット構成を検討します。 リ…

SPI(マスタ側)対向モデルの記述例

対向モデルのSPI(マスタ側)の記述例です。 このモデルもUART同様、モデル内のACパラメータ(real)とタスクを実行する構成となっています。 タイミング 先にタイミング図を示します。 このSPIは、CSがネゲート時、CK(シリアルクロック)はLowとなり発振しません…

CPUを含めた回路はFPGAが便利

NIOSやMicroblazeなどのソフトマクロCPUは便利です。

NIOSでprintfを使用する場合

実機確認でprintfを使用する場合に気を付けることです。

上位階層でタスク実行

上位階層でタスクを実行することができるので、便利です。

テストベンチでの双方向端子処理

ターゲット回路に双方向端子がある場合、どのようにしてテストベンチを記述するかの説明になります。

タスク内で制御

タスク(task)の記述

シミュレーション環境とテストベンチ構成

実務に沿ったテストベンチ記述を説明します。 私のやり方ですが、参考にして頂ければと思います。

組み込みソフトでレジスタにアクセス

FPGA内にCPUを配置した場合、CPUからLogic内のレジスタにアクセスする時のC言語記述についてです。 CPUからレジスタにリード/ライトする場合、C言語の予約語「volatile」が重要になります。 volatileは、C言語ソースをコンパイルする時の「最適化を抑止」し…

ハードとソフトのトレードオフ

ハードとソフトのトレードオフについて、どう考えますか? ここでいうハードとはASIC/FPGAのロジック部分、ソフトはARMやNIOSなど組み込みソフトのことをいいます。 私の切り分けは、以下の通りです。 【ソフトウェア】 ・ユーザーと通信を行う箇所 例えば、…

画像処理の基本 その3

画像処理の拡大と縮小処理です。(メモリを使用する場合) 基本概念は以下の通りです。 【拡大処理】 入力された画像データをメモリに格納し、変倍カウンタに応じて、 メモリからリードして拡大します。 【縮小処理】 変倍カウンタに応じてメモリに格納し、1ラ…

画像処理の基本 その2

画像処理で過去のラインを使ってマトリクス演算する場合です。 例えば、 フィルタ処理、JPEGで使うDCTなど 外部デバイス(CCDなど)からライン毎に画像データが入力される場合、 フレームメモリを使用せずラインメモリを使って、必要な過去ラインデータを 取得…

画像処理の基本 その1

画像処理を設計する上で私は画素データとは別に以下の信号を準備して、 画素データと一緒にパイプライン処理させます。 ①フレーム開始信号(パルス信号) ②フレーム終了信号(パルス信号) ③ライン開始信号(パルス信号) ④ライン終了信号(パルス信号) ⑤画像データ…

ソフトウェアとハードウェアの違い

ソフトウェアとハードウェアの違いはわかりますか? FPGAというデバイスができてから、FPGAもソフトウェアと言えるとも思います。 ハードウェアを「簡単に書き換えられない」、 ソフトウェアを「簡単に書き換えられる」 と定義すれば。。。 そうなると、ハー…

経験ブログ はじめに

はじめに。。。 半導体の設計の仕事について記載しています。