質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • CUDA

    95questions

    CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

  • FPGA

    18questions

現役FPGAエンジニアに質問したいことがあります。

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,042

carnage0216

score 124

  1. 質問1
    なぜFPGAエンジニアになろうと思ったのでしょうか?
    CPUやGPUで処理できないことを処理させるためでしょうか?もしそうならばCPUやGPUを使う必要はないのですが、そうでもない場合はCPUやGPUを使わずにFPGAを使っている理由は何でしょうか?是非詳しく知りたいです。
    FPGAは画像処理、最近では機械学習などで使われていますが個人的にはCPUとGPUを使っての処理のほうがコストが安いことや処理速度がアルゴリズムによりますが比較的速い事や、開発に時間があまりかからないことがメリットとして言えます。

  2. 質問2
    FPGAでの設計では論理回路などは紙に書いたり、設計図を作るのでしょうか?
    高位合成などがありますが、常に高位合成から得られるハードウェアプログラムは適切とは言えないので、時にはC言語プログラムからハードウェアプログラムを考えて設計したりするのでしょうか?

0. 質問3 最後に迷っていることがあります。将来FPGAで画像処理と機械学習を用いた仕事かCPUやGPUを用いて画像処理と機械学習を行う仕事につきたいのですがどちらにしたらよいかだいぶ悩んでおります。

編集
質問4 
FPGAなどのハードウェア設計では組めない回路やプログラムはどのようなものがありますか?
例えばソフトでは開発できるがハードでは開発できないものはどんなものがあるでしょうか?
複雑な演算回路などはハードではなくソフトでの方が組みやすいなど。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • YomogiKOBO

    2018/05/26 18:47

    あと、サイトとしてこのあたりも読まれるといいかもしれません。昔はトラ技の情報待ちだったりしたものです。(遠い目) http://ednjapan.com/edn/articles/1105/13/news145.html

    キャンセル

  • YomogiKOBO

    2018/05/28 06:36

    関連記事として記載します。https://teratail.com/questions/115877

    キャンセル

  • carnage0216

    2018/05/31 15:23

    どうもありがとうございます。

    キャンセル

回答 3

+4

またおまえか案件ですか。

そりゃCPUでできないことをさせるためにFPGAを使うってだけの話ですな。
設計のときは回路図書いたりすることもあるけど、たいがいいきなりソース書き始めますな。
C言語なんか使いません。ちゃんとHDL言語覚えましょうよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

質問1、いろいろやってたら結果的にFPGAエンジニアになっていた、というのが近いかもです。
CPU,GPU,FPGA、当然それぞれ得意不得意な分野があります。設計目標を実現するためにリーズナブルな手段を選んだ結果FPGAが必須な分野もあります。一般的に有名ではない特殊な用途もあります。

質問2、
紙には書きません。頭のなかに浮かんだものをコードに落とすだけです。ちなみにいうと、高位合成の結果が適切ではないとは思いません。ちゃんと理解して使えば、非常に便利なものです。

質問4、
ソフトがハードの上で動く以上、論理的にはハードで書けないものは無いと思います。ただし、抽象度が高いものは現実的な時間内で実装が難しいものは多々あると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

■質問1

  • なぜFPGAエンジニアになろうと思ったのか
    趣味としてデジタル回路設計をやりたかったからです。
    ASICは個人では無理です。また、ユニバーサル基板にロジックICを並べるのは時間も費用も大変です。
    FPGAはデジタル回路をソフト的に扱える点が良いなと思いました。
    就職という点では、技術者も少ないので貴重がられるといいなと思いました。
    ソフト・ハード両方の知識が必要になりとても楽しいです。

  • CPUやGPUを使わずにFPGAを使っている理由
    CPU、GPUではスペックを満たすことが出来ないからです。
    例えば、PCI Expressを10個並べてそれぞれと通信をするとかです。
    大抵の案件ではコストの面でCPU、GPUが有利です。とても悲しいです。

■質問2
FPGAだからといって特別に変わることはありません。
普通にソフト設計やアナログ回路設計などをやるのと手順は変わらないです。技術的な内容だけが違います。

時にはC言語プログラムからハードウェアプログラムを考えて設計したりするのでしょうか?

ソフトウェアでも、時にはアセンブラを考慮して設計することもあるでしょう。同じです。
シビアな部分や、実現性に関わるところはしっかり考えます。
それほど性能を求められていない所はあまり深く考えません。必要なだけきちんと手抜きを行います。

■質問3
画像処理や機械学習をやりたい場合は、FPGA設計者をチョイスするべきではありません。
FPGAはあくまで実現する手段です。画像処理や機械学習に対する知識が求められるわけではないのです。
それは、画像処理屋であったり機械学習屋であったりして、FPGA屋ではないのです。

アルゴリズムや構成を考えたら、FPGA屋なり組み込み屋なりに外部委託してください。
数ヵ月後に自分が思い描いたものが動く実機が納入されることでしょう。
おそらくあなたがやりたいと思っているのは、委託先に投げる為の仕様を検討することだったり、納入された実機を使ってアルゴリズムをつめたりすることだと思います。

■質問4
○ハードで組めないもの
例えばアナログ回路です。
FPGA自身が無線通信をすることはできない、といえば伝わりますでしょうか。
もちろん無線通信モジュールがデジタルI/Fを持っていれば、デジタル回路で制御できます。

○ソフトでは開発できるがハードでは開発できないもの
可能不可能、というより得手不得手はあります。
CPUもハードですから、不可能なことはないといえるでしょう。
(ここでは現実的かどうかは目をつぶります)

ハードは開発コストがソフトに比べて大きいです。
従って、頻繁に変更があるもの、あやふやなものは苦手です。
変更があるとモノを作り直さなくてはいけないからです。

FPGAはソフト的な面もありますが、ソフトに比べてコンパイルにものすごく時間が掛ります。
LEDを点滅させるだけでも数分、ちゃんとしたものを作ると十数時間掛ることも珍しくありません。
1行いじっただけでも実機でうごかすならコンパイルは必要ですので、とても開発コストが掛ります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • CUDA

    95questions

    CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

  • FPGA

    18questions