Hello, my name is Hanako Intl. I work at Macnica providing technical support for Intel® FPGA products.

The user designs the logic circuit inside the FPGA from scratch. Therefore, it is impossible to design without knowing anything at all.

So what exactly should we learn?

For now, around here.

 

  • デジタル論理回路についての知識
  • ハードウェア記述言語とのコーディング能力
  • I/O規格についての知識
  • Knowledge of static timing analysis (STA: Static Timing Analyzer)

 

If you know more, it will be more convenient, but you can start designing if you know this area first.
Let's talk a little bit more about each.

デジタル回路についての知識

FPGA ではデジタル回路を設計します。ちなみに、FPGA の業界ではデジタル回路を 論理回路 と言うのが一般的です。
論理回路を構成するには、

 

  • AND、OR、NOT、フリップフロップなどの基本論理回路
  • 2進数、2進数演算
  • 組み合わせ回路、順序(フリップフロップ)回路
  • 同期式順序回路、非同期式順序回路

 

このあたりのことを勉強しておけば、基本的な回路は設計できます。(みなさんからリクエストがあれば、この辺の技術記事も書きますよ。)

ハードウェア記述言語のコーディング能力

論理回路を設計するためには、ハードウェア記述言語のコーディング能力が必要です。ハードウェア記述言語は通称 HDL (Hardware Description Language) と言われ、現在では主に以下の3種類が使用されています。

  • VHDL(ブイエイチディーエル)
  • Verilog-HDL(ベリログ・エイチディーエル)
  • SystemVerilog(システム・ベリログ)


通常 ユーザーはどれか1種類を使用して設計します。(それぞれの特徴については、また別の機会に紹介します。)どのタイプの言語を選択するかは個人の自由です。会社で決められている人もいれば、設計依頼元の注文によって使い分けるために両言語をマスターする人もいます。それらの言語で、実現したい論理回路を記述します。


Learn basic grammar first. After that, please get used to “expressing logic circuits in language” by imitating sample circuits. Learning the grammar of a language is not that difficult. Rather than that, you may be more worried about how to express the logic circuit you want to realize in a language.
Language design does not describe the smallest unit of gate logic such as AND, OR, and flip-flops as in schematic (circuit diagram) design, but describes “circuit behavior” on a slightly larger scale.

For example, Figure 1 shows a 4-input 1-output multiplexer (selector) configured with gates.

Article header image1  1
Figure 1. A 4-input, 1-output multiplexer configured with gates.

一方、同じ回路を VHDL で記述するとこのようになります。

Library ieee;
use ieee. std_logic_1164.all;
entity mux4to1 is
port (
     data :in std_logic_vector (3 downto 0);
     sel :in std_logic_vector (1 downto 0);
     q:out std_logic
     );
end mux4to1;
architecture logic of mux4to1 is
begin
  process (data,sel) 
  begin
   case sel is
     when "00" => q <= data(3);
     when "01" => q <= data(2);
     when "10" => q <= data(1);
     when others => q <= data(0);
   end case;
  end process;
end logic;

There are no AND or NOT gates like in Figure 1, right?

When you hear the word “4-input, 1-output multiplexer,” the image below probably comes to your mind first. The user describes what kind of input they want to operate (output) and let Quartus® Prime think about the gate configuration inside the box. This is language design!

Article header image2  3
Figure 2. 4-input 1-output multiplexer (image)

論理回路設計を学ぶ本やサイトを参考にする場合には、言語で設計することを前提としたものを見てください。そうでないと、せっかく効率的に論理回路を書ける言語を使っているのに、論理を式で表して回路記号(AND や OR)を並べて設計するような効率の悪い設計になってしまいます。基礎の勉強は大切なことですが、実務で求められているところはそこではありません。“動くもの(論理回路)を作る” と言うことが重要なんです。

とは言え、まずは言語に慣れましょう。その手始めに、“無料で受講できるトレーニング・コンテンツ” をご紹介します。

トレーニング・コース名 Overview
VHDL 基礎編 (68分)
(インテル® HPより)
[日本語/無料]
インテル® PSG 公式のオンライン・トレーニングです。
VHDL 言語の概要およびロジック・デザインでの使用例を学習します。
★関連情報★
インテル® FPGA テクニカル・トレーニングを無料で受講しよう
Verilog HDL 基礎編 (49分)
(インテル® HPより)
[日本語/無料]
インテル® PSG 公式のオンライン・トレーニングです。
Verilog HDL 言語の概要およびロジック・デザインでの使用例を学習します。
★関連情報★
インテル® FPGA テクニカル・トレーニングを無料で受講しよう
はじめてみよう!VHDL
はじめてみよう!Verilog-HDL
[日本語/無料/演習問題つき]
はじめて VHDL、Verilog-HDL でハードウェア論理回路の設計を行う方向けのページです。基礎の基礎から学習でき、演習を実施して理解を深めることができます。

ハードウェア記述言語の使い道は、論理回路を記述する以外にもう一つあります。”記述した論理回路のシミュレーション(動作検証)を実施するための言語”、いわゆる “テストベンチ” を記述するために使用します。
シミュレーションについては、下記ページをご覧ください。


テストベンチの記述については、下記ページをご覧ください。



I/O 規格についての知識

FPGA はデジタル IC です。I/O ピンに入力してきた信号(受信)に対して、それが「High(1)」なのか「Low(0)」なのかを判断し、接続先の IC に信号を出力(送信)することで、「High(1)」か「Low(0)」かを判断させ、周辺デバイスと通信します。High、Low とひとことで言っても、実際基板上では電圧値が関係します。“何V(ボルト)以上が High、何V以下が Low” と言うような電圧値の範囲に規定を設け、それぞれに名称を付けたもの、それが I/O 規格 です。


I/O 規格には様々な種類があり、現在 インテル® のデバイスでは、シングルエンド規格や差動規格など多彩な I/O 規格(下図参照)をサポートしています。ただし全ファミリが以下を全てサポートしているわけではありませんので、各ファミリのハンドブックを確認してください。

Article header image3  3

先程お話しした “何V(ボルト)以上が High、何V以下が Low” と言うのはシングルエンド規格の考え方で、1つの信号がその規格で定められた電圧値よりも高いか低いかで High か Low かを判断させます。シングルエンド規格には LVTTL、LVCMOS などがあります。また、シングルエンド規格の中には、外部からリファレンス電圧を供給し その基準値との差で High か Low かを確定する規格もあります。


LVDS、LVPECLなどは差動規格です。2つの信号の電位差が規定値以上か以下かで High か Low かを確定させます。
Quartus® Prime で FPGA を開発する際、作成した論理回路の入力、出力、双方向ピンをターゲット・デバイスの各ピンに割り当て(アサイン)します。その際にピン番号だけでなく、各ピンをどの I/O 規格に準拠させたいのかオプション設定します。そのため、ユーザーは必要な I/O 規格の特徴を知っておいてください。

FPGA は1チップで複数の I/O 規格に対応させることができます。それは、FPGA が内部を動作させるための電源(通称 コア電源)と、I/O 端子が外部デバイスと通信するための電源(通称 I/O 電源)を別々に持っているからです。各 I/O 電源でドライブできる I/O ピンの領域(グループ)を “I/O バンク” と呼んでいて、インテル® FPGA は1チップ内に複数の I/O バンクを保有しています。I/O バンクごとに異なる電源電圧が供給できるため、FPGA は1チップで I/O 規格の異なる様々な周辺デバイスと接続することができます。


The user checks the I/O standard of the peripheral device that connects to the FPGA and the electrical characteristics of that I/O standard, and selects an FPGA family that can support that I/O standard. You should also download the datasheet for your chosen (or planned to be chosen) FPGA from Intel's website and check the input and output DC characteristics.

Knowledge of static timing analysis (STA: Static Timing Analyzer) and timing constraints

Timing analysis means checking whether the logic circuit you have created operates "properly" at the required clock frequency and whether it satisfies the timing specifications. Among the analysis methods, simulators such as ModelSim are used to simulate circuit operation using input signal data (also called test patterns or testbenches). , the method of analyzing (comparative verification) against the timing requirements (constraints) set by the user is called “static timing analysis”.

 

FPGA circuit elements have inherent delays, so if the required clock frequency is high or the scale of the logic circuit is large, part of the logic circuit may not work. Therefore, we have to perform timing analysis and confirm that it works correctly according to the specifications. It is no exaggeration to say that if timing analysis is neglected, it is not an exaggeration to say that FPGA will not work on the actual device. STA is one of the important tasks in current FPGA development.

 

スタティック・タイミング解析をするには、ユーザーの回路に対するタイミング要求情報(タイミング制約)が必須です。そのタイミング制約を FPGA 開発ツールである Quartus® Prime に対して指示することで、ツールはそれを目標値として論理合成や配置配線(いわゆる “コンパイル”)を実行します。Quartus® Primeはタイミング制約に、ASIC 開発で標準的に使用されている “SDC(Synopsys Design Constraints)” ファイル・フォーマットを採用しています。

 

最も基本的なタイミング制約の例は、クロック周波数の指定です。これ以外にも、設計要求に応じてさまざまな制約が必要です。例えば、FPGA (ユーザー回路)の入出力ピンには入出力データの遅延制約が必要ですし、論理回路に複数のクロックがあれば、そのクロック同士の相関関係を制約として定義することが必要です。その内容を SDC ファイルに記述します。

You don't have to worry about "Do I have to learn SDC in addition to writing logic circuits in HDL?" SDC doesn't have to be learned from scratch like an HDL language. The development software Quartus® Prime has a dedicated editor for writing timing constraints (SDC), and you can easily write commands by entering the necessary information in the prepared dialog Box.

Article header image4 prime  2

ただし、SDC を書く前に、タイミングの基本概念(例えばセットアップタイムやホールドタイムと言った考え方)を知っておく必要があります。これを知らないと、どういった内容で制約を書けば良いかわかりませんし、回路構造に応じた適切なタイミング制約を与えないと正しい解析結果が得られません。
タイミング解析は FPGA 設計での必須の作業工程です。正しく動作する製品を作るために、タイミング制約や解析の知識を習得しましょう。詳しくは、また別の機会にタイミングについてはお話ししていきたいと思います。



今回は、どんなことを勉強しておいた方が良いのか ザックリとご紹介しました。これをきっかけに、知識を徐々に深めて行ってください。
次回は、FPGA 開発の流れ(手順)をご紹介します。

 

 

Note:
本記事では 読者に親しんでいただくためメーカーサイトは日本語ページをご案内していますが、併せて英語ページも必ずご確認ください。日本語ページは情報の更新が遅れる場合がありますので注意してください。サイト内の言語切り替えは、ページ下の REGION(地域)により行えます。なお、言語を切り替えてもすべてのページが日本語になるわけではありませんのでご了承ください。

Click here for recommended articles

ほんとのほんとの導入編 その1.FPGA 開発をはじめるための環境づくり
ほんとのほんとの導入編 その2. FPGA 開発をはじめるために準備するもの
ほんとのほんとの導入編 その3. FPGA 開発をはじめるために必要な知識
ほんとのほんとの導入編 その4. FPGA 開発の流れ
ほんとのほんとの導入編 その5. 役立つコンテンツの紹介