ご購入はこちら．
http://shop.cqpub.co.jp/hanbai/books/MTR/MTRZ201604.htm

見本

第1部

第

MAX 10 デバイスと評価ボードのハードウェア

1章

1

最新のFLASHメモリ内蔵型FPGAがあなたの手に

2

CQ版MAX 10評価ボードの誕生
●はじめに

3

本書は，アルテラ社の FLASH メモリを内蔵した最新版 FPGA（Field Programmable Gate Array）MAX

模が大きい論理回路を実装することができます．
MAX 10 は，デバイス本体にコンフィグレーショ

10 を搭載した基板およびその開発環境一式を収録しン・データ格納用の FLASH メモリを内蔵しているのた DVD-ROM を付属しています．
FPGA はその中に CPU（Central Processing Unit），
メモリ，通信機能，タイミング・シーケンサ，演算アで，外部に ROM を置く必要がありません．
さらに FLASH メモリの一部はユーザが使用でき，かつアルテラ社のソフト CPU コア Nios II も実装でクセラレータ，画像処理機能，音声処理機能，ディジ
タル・フィルタなど自分の好きな論理機能を自由に組
み上げることができます．仕事でも趣味でも，手軽に自己実現できるデバイスであり，大いに楽しむことがきます．12 ビット A-D 変換器も内蔵しており，3.3V
単一電源で動作するデバイスもラインアップされています．MAX 10 があれば，ユーザ独自の FLASH メ
モリ内蔵マイコンを自作することもできるのです．

できるものです．
特 に 今 回 採 用 し た ア ル テ ラ 社 の MAX 10 は，FLASH メ モ リ を 内 蔵 す る な ど 優 れ た 特 長 を 持 つFPGA であり，とても使いやすいものです．
しかし一般的に FPGA をコンフィグレーションする（論理機能を書き込む）
ときには，JTAG（Joint Test
Action Group）ケーブルという専用ツールが必要です．CQ 出版社の過去のいくつかの雑誌付属 FPGA 基
板では，ここがあまりよく練られておらず使い勝手がよくなかったように感じます．そこで今回の付属基板にはアルテラ社の USB Blaster と等価な機能を持つ
USB-JTAG 変換基板もしっかり用意しました．これ
ら付属基板と DVD-ROM だけで FPGA の開発全てを行うことができます．大いに遊んでいただきたいと思います．

アルテラ MAX 10 FPGA とは● MAX 10 は FLASH メモリ内蔵マイコンを自作できる FPGA

アルテラ社の MAX 10 は，不揮発性 FLASH メモ
リ を 搭 載 し た TSMC
（Taiwan Semiconductor
Manufacturing Co., Ltd.）社の 55nm プロセスを使用した最新型の FPGA です．従来の MAX シリーズはCPLD（Complex Programmable Logic Device）
でした
が，MAX 10 は本格的な FPGA デバイスであり，規

4
5
6
7

●付属基板に搭載する MAX 10

8

MAX 10 は，ロジック・エレメント数として 2,000個の最小規模品から 50,000 個の最大規模品まで 7 段
階の製品がラインアップされています．今回の付属基
表19

付属基板に搭載する MAX 10 FPGA の仕様

実際に基板に搭載されるデバイスは ES（Engineering Sample）
品である．

項 目
ベンダ
製品シリーズ
製品型名

内 容
アルテラ
MAX 10 FPGA
10M08SAE144C8G
TSMC 55nm Embedded FLASH
プロセス
プロセス技術ロジック・エレメント
8K
M9K メモリ
378K ビット
2496K ビット（コンフィグレーション
FLASH メモリ
用＋ユーザ用合計）
1376K ビット（ユーザ用最大値）
18×18 乗算器
24 個
PLL
2個
専用 Rx/Tx チャネルまたはエミュレ
LVDS
ーション出力チャネル ×41 ペア
最大 2 コンフィグレーション・イメー
コンフィグレーション数
ジを記憶可能12 ビット ×1 ユニット，変換レート
A−D 変換器
1MSPSmax，アナログ入力端子 ×9 本
リング・オシレータ内蔵
クロック発振器（55M 〜 116MHz）
I/O 本数101 本
電源3.3V 単一電源
EQFP−144（20mm×20mm，パッケージ
ピン・ピッチ 0.5mm）

10
11
12
13
14
15

見本

アルテラ MAX 10 FPGA とは

9

第

2章

1

FLASH内蔵によるFPGAの新たなパラダイム

MAX 10 FPGAデバイスのハードウェア研究

2
3

●はじめに

4

ます．FPGA の可能性とその奥深さ，面白さを感じ

5

本章では，最初に FPGA とはどういうデバイスなのか，またどういうことができるのかを簡単に解説し取ってほしいと思います．その次に，付属基板で採用したアルテラ社の MAX 10 についてそのデバイスの詳細を説明します．
FPGA というデバイスは，それ自体は大変複雑で高度な技術が使われています．ところが，ユーザはそのデバイスの中身を事細かに理解しきる必要は必ずしもありません．別章で解説する開発ツールが細かいことはほとんどサポートしてくれます．ユーザは自分が実現したい論理機能の設計に集中すればいいのです．
本章で解説する MAX 10 デバイスの各機能の多くも，知識として知っておく程度で十分でしょう．
ただし，FPGA できちんと認識しておかないとい
けないことは，その制限事項です．FPGA はとても柔軟なデバイスですが，実現できる論理規模やメモリ容量などには上限があり，クロック配線，端子機能，特殊機能，コンフィグレーション機能などにどうしても注意事項や制限事項が存在します．それらのうち，特に重要と思われるものは本章や後続の章で説明を加
えてありますので，よく理解しておいてください．

FPGA とは何か● FPGA は論理設計のための広大なキャンパス

6
図1

7

FPGA は論理設計のための広大なキャンパス

る，または独自の論理回路を自由奔放に設計するための 広 大 な キ ャ ン パ ス が FPGA で す． 論 理 機 能 は，

9てくれるのです．

●ディジタル・デバイスの主流組：SoC や MCU

ディジタル処理機能を持つ論理デバイスの代表格としては，スマートフォンやタブレット PC に入っている ARM Cortex-xx を内蔵したプロセッサなどの SoC（System on a Chip）
や，多くの電子機器に組み込まれているマイコン（MCU：Micro Controller Unit）
があ
り ま す．SoC や MCU は， 図 2（a）に 示 す よ う に，CPU や周辺機能などの論理機能や，A-D 変換器など

データ処理やシーケンス処理など，ディジタル処理機能が必要なシステムの論理設計をする場合，ひと昔
前までは，大量の TTL（Transistor Transistor Logic）

アナログ・モジュールなど，さまざまな機能モジュー
ルが詰まっています（最近の SoC と MCU はその構造がほとんど同じであり，違うとすれば，MCU が SoC

IC や小規模 PLD（Programmable Logic Device）を組み合わせたプロトタイプ基板を作成するなど非常に手間がかかる思いをしましたが，ご存知の通り，今ではよりも若干論理規模が小さめで，かつ不揮発性のFLASH メモリを搭載している点くらいである）．
SoC や MCU は，性能，消費電力，コストを最適化することができる一方で，１枚のシリコンに固定化されているため一旦作ってしまうと機能変更できませFPGA という強力な武器があります．
図 1 に示すように，CPU（Central Processing Unit），
メモリ，周辺機能などの IP（Intellectual Property：
既存の設計資産やライブラリ）を自由に組み合わせ

8

Verilog HDL や VHDL というハードウェア記述言語（HDL）で 記 述 す れ ば，FPGA 用 の 開 発 ツ ー ル がFPGA デバイスの中のハードウェア・リソースに自動的にマッピングして，設計した通りの機能を実現しん．また SoC や MCU は，設計をスタートしてから実際のデバイスを手にするまでに何ヶ月もかかり，マス

10
11
12
13
14
15

見本
FPGA とは何か

31

第

3

実験に，試作に，趣味に，

1

章 あれこれ手軽に使える小型FPGA基板

MAX 10 FPGAを搭載した
MAX10-FB基板のハードウェア詳説
本書付属 DVD-ROM 収録関連データ
格納フォルダ内 容・MAX10-FB 基板のガーバ・
CQ-MAX10¥Board¥MAX10-FB
データ
・関連ドキュメント

●はじめに

本章では，MAX 10 FPGA を搭載した付属基板 MAX

10-FB 基板のハードウェアについて詳しく解説します．

MAX10-FB 基板の概要● MAX 10 FPGA を気軽に使うためのブレー
クアウト基板FLASH メモリを内蔵し単一電源で動作する FPGA
デバイス MAX 10 を，ブレッド・ボードや自作のユニ
バーサル基板などの上で気軽に使うためのブレークア
ウト（脱獄）基板が MAX10-FB 基板です．その外観を
写真 1 に，仕様を表 1 に，ブロック図を図 1 に示します．

● FPGA の I/O 電源はフレキシブルに設定可能

MAX 10 デバイスの外部 I/O 端子の各バンクの電源やアナログ・リファレンス電源は，それぞれ独立した電圧に設定できるので，全てを基板の外部コネクタに引き出してあります．それぞれ 3.3V で良い場合は，基板裏面のはんだジャンパで 3.3V 電源に接続できます．

表1

2
3

MAX10-FB 基板の仕様

項 目
内 容
基板外形 55.88mm×35.56mm（22000mil×14000mil）
層数 / 部品
2 層基板 / 両面実装
実装面
FPGA
アルテラ MAX 10「10M08SAE144C8G」
裏面未実装，パターンのみ．
搭載可能デバイス例は下記の通り
・512M ビット：AS4C32M16SA−6TCN/7TCN
SDRAM（Alliance Memory）
・256M ビット：AS4C16M16SA−6TCN/7TCN（Alliance Memory）
外部 3.3V 供給（各 VCCIO ，VCCA ，ADC_VREF ，REG_GND は個別に電源コネクタに引き出してあり，はんだジャンパで共通の 3.3V と GND に接続可能）
ユーザ用 48MHz 発振器搭載可能（未実装）
クロック SG8002DC−PCB−48MHz（エプソントヨコム）
ユーザ用
3 色 RGB フル・カラー LED×1 個
LED
ユーザ用
プッシュ・スイッチ ×1 個
スイッチ
コンフィグ
nCONFIG 用プッシュ・スイッチ ×1 個
レーション
CONFIG_SEL 用ジャンパ ×1 個
回路
FPGA 信号 ブレッド・ボード用の上下１列コネクタに 38 本
引き出し 引き出し（2.54mm ピッチのコネクタに合計 49 本引
端子
き出し）
FPGA
付属基板「MAX10−JB」を重ねて，電源供給＋コン
コンフィグ フィグレーション可能
レーション（アルテラ社または 3rd Party 製の USB Blaster でも方法
コンフィグレーション可能）

4
5
6
7
8
9
10
11

るパターンがあります．54 ピン TSOP II パッケージに封入された SDR（Single Data Rate）
型の SDRAM（Synchronous DRAM）
を実装できます．動作を確認

12

MAX 10 デバイスは，リング発振器を内蔵していますが，デバイス内蔵の PLL（Phase Locked Loop）に直接接続できませんので，PLL に接続できるグロー

済みの推奨品は，256M ビットまたは 512M ビットの
16 ビット幅の SDRAM です．アルテラ社が提供する
SDRAM コントローラで簡単にアクセスできます．大13

バル・クロック端子に外部発振器（48MHz）を接続してあります．内蔵 PLL によりさまざまな周波数のクロックを合成できます．

量のデータを扱うときに便利です．

●基板上にクロック発振器を搭載● SDRAM を搭載して大容量メモリ空間を自由に使える

MAX10-FB 基板の裏面には，SDRAM を実装でき●動作確認用のフル・カラー LED とプッシュ・
スイッチ
MAX10-FB 基板にはユーザ動作確認用のフル・カ

ラー LED とプッシュ・スイッチを搭載してあります．
この基板単体でも簡単な論理設計の実験や，Nios II

14
15

見本

MAX10-FB 基板の概要

51

4Quartus Primeから直接操作！

章 コンフィグレーションにもデバッグにも使える！

1

コンフィグレーション＆デバッグ用
MAX10-JB基板のハードウェア詳説

2

第本書付属 DVD-ROM 収録関連データ
格納フォルダ内 容・MAX10-JB 基板のCQ-MAX10¥Board¥MAX10-JB
ガーバ・データ・関連ドキュメント

●はじめに

本章では，MAX 10 FPGA のコンフィグレーショ

ンおよびデバッグ用付属基板 MAX10-JB 基板のハードウェアについて詳しく解説します．

MAX10-JB 基板の概要● FPGA にはコンフィグレーションが必要

FPGA を動かすためには，実現しようとする論理機能に対応する情報を FPGA に送り込む，すなわちFPGA をコンフィグレーション（略してコンフィグともいう）する必要があります．MAX 10 の場合は，下表1

MAX10-JB 基板の仕様

項 目
基板外形
層数 / 部品
実装面
実装部品
機能

内 容
55.88mm×35.56mm（22000mil×14000mil）
2 層基板 / 片面実装

搭載部品はユーザ手配，ユーザ実装
アルテラ USB−Blaster 等価機能
PIC18F14K50−I/P
使用マイコン （マイクロチップ・テクノロジー）（3.3V ネイティブ動作）
USB コネクタ USB mini B
電源供給
USBバス・パワー MAX10−FB側に電源供給可能
LT1963A−3.3 使用：合計 1.5A
電源電流
（電源 IC は面実装型で，SSOP−8 または SOT−
（3.3V）
223 いずれも実装可能）・USB−Blaster 等価機能（JTAG 機能のみ）
・コンパイラ：XC8
PIC18 マイコン・USB ライブラリ：最新 Microchip Librariesのプログラムfor Applications 使用
・プログラムのソースは公開
PIC18 マイコン PIC18 マイコンの FLASH メモリは，初期状態の FLASH メ モ の「MAX10−FB」側から書き込み（PIC マイコン
リ書き込み方法 用フラッシュ書き込み器「PICkit3」などは不要）

3
4

記の 2 種類のコンフィグレーション方法があります．
（1）JTAG コンフィグレーション：JTAG ポートから直接 FPGA 内の論理構造をコンフィグレーションする．電源投入のたびに必要．電源が落ちるとコンフィ

5

グレーション情報も消える．
（2）内部コンフィグレーション：あらかじめ JTAG
ポート経由で内蔵 FLASH メモリにコンフィグレー
ション・データを書き込んでおく．電源投入のたびに，6

その内蔵 FLASH メモリから FPGA 内の論理構造をコンフィグレーションする．
このいずれに関しても，一般的には USB Blaster と呼ばれるアルテラ社純正の USB-JTAG 変換ケーブル，7

ま た は そ の 相 当 品 を 使 っ て， 開 発 ツ ー ル Quartus
Prime が生成したコンフィグレーション・データを
FPGA に送り込む必要があります．

8● FPGA にはデバッグ環境の提供も必要

9

MAX 10 FPGA には，Nios II（Gen2）という 32 ビットの組み込み向け CPU コアを搭載できます．RTL で提供されているソフト IP です．CPU を内蔵できるので，そのソフトウェア開発時にはデバッグが欠かせま
せんが，FPGA デバイスの JTAG ポート経由で簡単にソース・レベル・デバッグできる機能がサポートされています．
このデバッグ操作にも，USB Blaster を使います．

● MAX 10 FPGA のコンフィグレーション＆デバッグ用基板

今回の MAX10-FB 基板上の FPGA のコンフィグ
レーションとデバッグ用に，USB Blaster 相当の機能を提供するのがもう 1 枚の付属基板である MAX10JB 基板なのです．その外観を写真 1 に，仕様を表 1 に，ブロック図を図 1 に示します．
MAX10-JB 基板は，USB Blaster の JTAG インターフ ェ ー ス 機 能 の み を サ ポ ー ト し ま す．AS
（Active
Serial）インターフェースや PS（Passive Serial）イン
ターフェースはサポートしません．
MAX10-JB 基板は，部品を実装していない生基板

10
11
12
13
14
15

見本

MAX10-JB 基板の概要

67

5

章 PICマイコンによるUSB Blaster等価機能の実現

MAX 10によるPICマイコンFLASH書き込み器の構造と，

1

MAX10-FB基板とMAX10-JB基板の協調動作の仕組み

2

本書付属 DVD-ROM 収録関連データ
内 容
備考
USB Blaster 等価機能用 PIC マイコン・プログラムのプロジェクト一式
CQ-MAX10¥PIC¥USB_JTAG¥firmware（MPLAB X IDE 用）
いずれも参PIC マイコンのバイナリ・ファイル（hex）を Nios II プログラムにインク 考用でありCQ-MAX10¥PIC¥hex2c
ルードするために C ソース・コードに変換するユーティリティ（ANSI C 読者が使用する必要はでコンパイルして使用）
PIC マイコンの FLASH 書き込み器としての MAX 10 FPGA プロジェクト ない
CQ-MAX10¥Projects¥PROJ_PIC_Programmer（Quartus Prime，Nios II Eclipse 用）

4

第

3

格納フォルダ●はじめに内に特殊な SPI モジュールを組み込んでありますが，このモジュールについては，別冊の
「実践編」
の中で論
理設計と論理検証の例題として詳しく解説します．

MAX10-FB 基板（出荷時点）の FPGA に仕込んだシス
テムについて解説します．その実現のために FPGA

また後半では，PIC マイコンにプログラムを書き込んだ以降，MAX10-JB 基板は USB Blaster 等価機能を持ちますが，その仕組みと PIC マイコンのプログ
ラム内容について解説します 注．

本章の前半では，MAX10-JB 基板上の PIC マイコ
ンの FLASH メモリにプログラムを書き込むために

表1

PIC18F14K50-I/P の仕様概要
項

目
型名
パッケージ
FLASH メモリ
EEPROM
RAM
CPU
動作条件

USB デバイス
機能A-D 変換器
アナログ・
コンパレータ内 容
PIC18F14K50-I/P
DIP-20 ピン
16K バイト256 バイト
768 バイト・8 ビット高性能 RISC
・16 ビット固定長命令
・電源電圧：2.7V 〜 5.5V
・最大動作周波数：48MHz・USB 2.0 準拠
・フル・スピード（12Mbps）
またはロウ・スピード（1.5Mbps）
・コントロール転送，インタラプト転送，
アイソクロナス転送，バルク転送
・16 エンドポイントまでサポート（双方向 8 組）
・256 バイト・デュアル・ポート RAM
・10 ビット分解能・2 ユニット，Rail-to-Rail 入力

・拡張型コンペア / キャプチャ /PWM（ECCP）
タイマ
・PWM 出力本数：1 〜 4 本
同期シリアル 3 ワイヤ SPI マスタまたは I2C マスタ / スレーブ
非同期シリアル UART

5
6
7
8

PIC マイコン書き込み器としてのMAX10-FB 基板

9● MAX10-JB 基板に搭載した PIC18F14K50-I/Pの概要

10

MAX10-JB 基板に搭載した PIC マイコンの仕様概要を表 1 に，ピン配置図を図 1 に示します．この PIC

マイコンは USB 2.0 のデバイス側の機能を持っており，ローコストな USB 機器を自作するのに適しています．この PIC マイコンの FLASH メモリにプログラムを書き込む必要があります．

●初期出荷状態の MAX10-FB 基板は PIC 書き
込み器になっている

初期出荷状態の MAX10-FB 基板はその出荷検査も兼ねて，搭載する MAX 10 デバイスの FLASH メモ
リにコンフィグレーション・データが書き込まれています．

注）本章の内容は，MAX10-FB 基板と MAX10-JB 基板の協調動作の仕組みに関する技術情報を提供するものであり，付録の MAX10-FB
基板と MAX10-JB 基板を使うだけであれば必ずしも理解する必要はない．
また，本章で説明する FLASH メモリ書き込み方式は，PIC マイコンの FLASH メモリに関するものである．MAX 10 内の FLASH
メモリに関するものではないので混同しないようにすること．

11
12
13
14
15

見本

PIC マイコン書き込み器としての MAX10-FB 基板

81

第2部

第

6

MAX 10 FPGA 開発入門
Quartus Prime Lite Editionと関連ツールを1

章 インストールして，基板とPC間の接続確認を行う

2

MAX 10用開発環境のインストール
格納フォルダ4

本書付属 DVD-ROM 収録関連データ

CQ-MAX10¥Quartus_Prime¥Quartus-lite-15.1.1.189-windows●はじめに

本章では，MAX 10 FPGA デバイスの開発に必要なツール一式をインストールします．実際の各ツールの使用方法は後続の章で説明します．
また，前の章までに作成した，MAX10-FB 基板とMAX10-JB 基板を USB ケーブルで PC に接続して，正常に認識されるかどうかの確認を行います．
表1

3

内 容
・Quartus Prime Lite Edition
・Nios II EDS・ModelSim-Altera Starter Edition5

MAX 10 FPGA 用開発ツール

6●インストールするツールの種類

今回，MAX 10 FPGA の開発をするためにインストールするツールのうち主なものを表 1 に示します．

7

FPGA の統合化開発環境 Quartus Prime，論理シミュ

8

インストールする主なツール

アイコン

ツール名

説

明

Quartus Prime
Lite Edition

FPGA の統合化開発環境．ファイル編集，論理合成，配置配線，タイミング検証，コンフィグレ
ーション用ファイル生成などを行う．
Qsys を起動して，Nios II コアなど各種 IP を含むシステム設計が可能

Quartus Prime
Programmer

コンフィグレーション用ファイルの FPGA への書き込みツール．
MAX10-JB 基板の USB Blaster 等価機能を介して，MAX10-FB 基板上の MAX 10 への書き込みが可能

ModelSim-Altera
Starter Edition

論理シミュレーション用ツール．
FPGA の固有 IP のモデルも搭載しており，FPGA 全体をシミュレーションできる

Nios II の C プログラム統合化開発環境．
Nios II EDSMAX10-JB 基板の USB Blaster 等価機能を介して，MAX 10 内に構築した Nios II コアのソース・（Embedded Design Suite）
レベル・デバッグが可能

9
10
11
12
13
14

ダブルクリック
図1
必要なインストール用ファイルを同一階層に置く

15

見本

MAX 10 FPGA 用開発ツール

103

第

7

LEDチカチカをネタにして，

1

章 Quartus Primeの一通りの使い方をマスタしよう

FPGA開発ツール
Quartus Prime入門

2
3
4

本書付属 DVD-ROM 収録関連データ
内 容
備 考
フル・カラー LED チカチカ回路の本章では，このプロジェクトを読者がゼロから作成す
CQ-MAX10¥Projects¥PROJ_COLORLED
プロジェクト一式（Quartus Prime用）る方法を説明する．参考用として提供する．
格納フォルダ●はじめに

シミュレーションについて説明するときに System
Verilog を使用します．
既存のプロジェクトをベースにした別の設計を行う

流れを一通りマスタしましょう．
新規プロジェクトの作成，Verilog HDL 記述の編集，解析，合成，外部端子への信号アサイン，配置・配線を含めた FPGA のコンパイル，FPGA のコンフィグ

場合は，プロジェクト・フォルダをそのままコピーしてフォルダ名を変更して，プロジェクト内の設計内容を変更することで対応できます．または，新規プロ
ジェクト作成用ウィザード内でも既存プロジェクトの設定内容を引き継ぐこともできます．

本章では，フル・カラー LED のチカチカ点滅回路を題材にして，Quartus Prime による基本的な開発のレーションまでの基本的な流れを説明します．
また，FPGA の内部信号をロジック・アナライザ（ロジアナ）のように観測できる SignalTap II という機能
を Quartus Prime が持っており，その使い方も説明します．
最後に，タイミング解析の例として，設計した論理回路の最高動作周波数を確認してみます．

Quartus Prime による
FPGA の開発フロー
まず，Quartus Prime による FPGA の開発フローについて説明します．図 1 にその全体フローを示します．

8

成します．論理設計の基礎や，Verilog HDL の書き方
や文法については，姉妹書の実践編の中で詳細に説明しますので，わからなくてもとりあえずこのまま入力しておいてください．

9

Quartus Prime テキスト・ファイルの編集機能を使って論理記述を作成し，プロジェクトに登録していきます．論理記述ファイルを Quartus Prime 上で新規作成すれば自動的にプロジェクトへ登録されます

象をプロジェクトとして管理します．一番最初にプロ
ジェクト・ファイル（xxx.qpf）
を作成します．
Quartus Prime には新規プロジェクトを作成するための支援機能（ウィザード）があり，プロジェクト名とプロジェクト格納場所の指定，対象 FPGA デバイスに組み込む場合は，対応するインスタンス化記述を論
理記述へ追加します．
必要に応じて，FPGA の固有機能（ロジアナ機能のSignalTap II や，デュアル・コンフィグレーション機
能など）
も論理記述へ追加します．

使用することを基本前提とします．一部，C 言語混在

7

FPGA の最上位（トップ）階層から，下位の個々のモジュールまで，一連の論理記述（Verilog HDL）
を作

Quartus Prime では，FPGA 内に構築する設計対の指定，使用する HDL 言語（Verilog HDL，System
Verilog，VHDL）の選択などを，ウィザードの指示に従って行うことで新規プロジェクトを生成できます．
なお，本書では HDL 言語として，Verilog HDL を

6●論理記述（Verilog HDL）の作成

が，既存の論理記述を流用する場合は，マニュアルで追加します．
Nios II CPU コアなどの各種 IP を含むシステムは
Qsys を使って設計できます．そのシステムを FPGA

●新規プロジェクトの作成

5

10
11
12
13
14

●論理シミュレーション

作成した論理記述が簡単なものであれば，いきなりFPGA に実装して動作確認する場合もありますが，一般的には論理シミュレーションでその機能動作を検証

15

見本

Quartus Prime による FPGA の開発フロー

109

第

8

PLLの使い方とパワーONリセット回路の1

章 作り方をマスタしよう

論理回路の土台！
MAX 10のクロックとリセットの基礎

2
3
4

本書付属 DVD-ROM 収録関連データ
内 容
備 考
フル・カラー LED 階調明滅回路のプ 本章では，このプロジェクトを読者がゼロから作成
CQ-MAX10¥Projects¥PROJ_COLORLED2
ロジェクト一式（Quartus Prime 用） する方法を説明する．参考用として提供する．
格納フォルダ●はじめに

5

非常に多機能です．

本章では，論理回路の土台になるクロックとリセッ
トについて，特に FPGA 設計で必要になる知識をマスタします．
ここでは，さまざまな周波数のクロックを合成できる PLL（Phase Locked Loop）の使い方と，外部リセッ
ト信号を省略するためのパワー ON リセット回路の作り方について説明します．フル・カラー LED の階調
明滅回路を題材にします．

PLL とパワー ON リセット回路●本書での PLL 設定の基本

FPGA も必ずといっていいほど PLL（Phase Locked

要です．前章の PROJ_COLORLED の事例では，リセット信号は MAX10-FB 基板上のタクト・スイッチ
で入力しました．この基板上でユーザが使えるスイッ
チは一つだけなのでリセット用に使うと他には使えな

MAX 10 が持つ PLL では，周波数だけでなく，位相 や デ ュ ー テ ィ 比 の 設 定 も で き ま す． 図 1 に 示 す
ALTPLL という IP の場合，1 本の入力クロックから
最大 5 種類のクロックを生成できます．これ以外にもくなります．
このような場合，パワー ON 時に電源電圧の立ち上がりを検出したら自動的にデバイス内にリセット信号
を一定期間だけ送るパワー ON リセット回路があると輻射ノイズの計測値を低減させるための周波数拡散機
能や，動作中に動的に再設定できる機能などもあり，便利です．マイコン（MCU：Micro Controller Unit）などでは一般的に内蔵している機能です．

ALTPLL
inclk0c0c1c2

Mn：逓倍率
Dn ：分周率
図18●パワー ON リセット回路とはLoop）を搭載しています．PLL は入力クロックに対して逓倍と分周を施すことで，さまざまな周波数のクロックを合成できます．

fin 0

7

プロジェクトによっては，FPGA 内で使用する IPの仕様に依存して，位相や周波数を変えたクロックもPLL で生成することがあるので，その都度説明します．

9

論理回路内のフリップフロップ（順序回路）
は，放っておくと初期状態が不定なので，通常はリセットが必● PLL とは

入力
クロック

6

本書では原則として，PLL への入力クロックの周
波数は MAX10-FB 基板上の発振器から供給される
48MHz とし，PLL からユーザ論理に供給するクロッ
クの周波数は 50MHz とします．

c3
c4

出力クロック0
出力クロック1
出力クロック2
出力クロック3
出力クロック4

PLL の概要

ALTPLL という IP の基本機能を示す．

fc 0＝fin 0×M 0 /D 0
fc 1＝fin 0×M 1 /D 1
fc 2＝fin 0×M 2 /D 2
fc 3＝fin 0×M 3 /D 3
fc 4＝fin 0×M 4 /D 4

● MAX 10 自体はパワー ON リセット回路を内蔵している

MAX 10 デバイスそのものには，実はパワー ON
リセット回路が内蔵されています．これは電源立ち上がりを検出したら，内蔵 FLASH メモリのコンフィグ
レーション・データを使って自動的に FPGA をコン
フィグレーションするために用意されています．

10
11
12
13
14
15

見本

PLL とパワー ON リセット回路

127

9

MAX 10のFPGAには2種類の1

MAX 10のデュアル・
コンフィグレーション機能を活用

2

第章 コンフィグレーション・データを格納できる

3
4

本書付属 DVD-ROM 収録関連データ
内 容
備 考
デュアル・コンフィグレーション用のプ
本章では，このプロジェクトを読者がゼロから作
CQ-MAX10¥Projects¥PROJ_COLORLED3 ロジェクト ×2 種類：FPGA1 と FPGA2
成する方法を説明する．参考用として提供する．
（Quartus Prime 用）
格納フォルダ●はじめに本章では，MAX 10 FPGA の大きな特徴であるデュ
アル・コンフィグレーション機能の活用方法をマスタしましょう．デュアル・コンフィグレーション機能を使うと，2 種類のコンフィグレーション情報を MAX●デュアル・コンフィグレーションの高度な機能

デュアル・コンフィグレーション機能は，単に 2 種

でもダイナミックに切り替えることができますし，シ
ステムに組み込まれた状態で，リモート・システム・アップグレードをすることができます．
また，出荷時のコンフィグレーション・イメージを

色変化点滅回路と階調明滅回路の 2 種類のコンフィグ
レーション・データを FLASH メモリに書き込んで，それぞれを FPGA の起動時に選択して動作させてみます．

片方の領域に入れて，システム・アップグレード時の新しいイメージはもう一方の領域に入れるようにすると，もし，アップグレード後に問題が起こった際も出荷状態に切り替えることができます（フェイルセー●デュアル・コンフィグレーションの基本機能

デュアル・コンフィグレーションの流れの一例を図1 に示します．
まず，2 種類のプロジェクトから生成したコンフィ
グレーション・ファイル xxx.sof をそれぞれ合体
して output_file.pof というファイルを作成し，MAX 10 のコンフィグレーション用 FLASH メモリ（CFM0 および CFM1/CFM2）に書き込んでおきます．
MAX 10 FPGA に 電 源 印 加 す る か， ま た はnCONFIG 信 号 に“L” レ ベ ル の パ ル ス を 与 え る と（MAX10-FB 基板の SW2 を押すと），FLASH メモリ
内のコンフィグレーション・データがデュアル仕様な
らば，CONFIG_SEL 端子のレベルをチェックし，“L”
レベルなら CFM0 に書き込んだデータで FPGA をコ
ンフィグレーションし，“H”レベルなら CFM1/CFM2に書き込んだデータでコンフィグレーションします．

6

類のコンフィグレーション・データを選択するだけではありません．
2 種類のコンフィグレーション・イメージを動作中

10 の FLASH メモリに記憶させることができ，例えば，FPGA の起動時にユーザがどちらを使うかを自由に選択できるようになります．
ここでは前章までに作成したフル・カラー LED の

デュアル・コンフィグレーション機能
とは

5

7
8
9

フ・アップグレード機能）．

●デュアル・コンフィグレーション使用時の注意

デュアル・コンフィグレーション機能を使う場合
は，下記の点を考慮してください．
・Quartus Prime の個々のプロジェクトから生成する
コンフィグレーション・ファイルは，デュアル・コ
ンフィグレーション用の圧縮ファイル形式にすること．
・2 種 類 の コ ン フ ィ グ レ ー シ ョ ン・ フ ァ イ ル は，Quartus Prime 内の Convert Programming Filesというツールで合体する．
・デ ュアル・コンフィグレーション機能を使う場合

は，アルテラ社から提供される専用デュアル・コン
フィグレーション用 IP をユーザ論理内に組み込む
こと．この IP は，リモート・システム・アップグ
レード機能なども含むが，単に FPGA の立ち上げ
時に 2 種類のコンフィグレーション・データを選択するだけのケースでも組み込む必要がある．
・FPGA 内のメモリ・ブロック（M9K RAM）
に初期値

10
11
12
13
14
15

見本

デュアル・コンフィグレーション機能とは

139

10

無償の論理シミュレータで章 FPGAをホイホイ論理検証する手順をマスタしよう

1

ModelSim Altera Starter Edition
による論理シミュレーション入門

2

本書付属 DVD-ROM 収録関連データ
内 容
備 考
フル・カラー LED チカチカ回路のプロ
CQ-MAX10¥Projects¥PROJ_COLORLED
ジェクト一式（Quartus Prime 用）
前章までに作成したプロジェクトを使って論理シ
フル・カラー LED 階調明滅回路のプロ ミュレーションを実行する
CQ-MAX10¥Projects¥PROJ_COLORLED2
ジェクト一式（Quartus Prime 用）

4

●はじめに

6

第

3

格納フォルダ5

きる便利な回路図のような感じです．本書での論理設

本章では，アルテラ社から無償で提供されている論
理 シ ミ ュ レ ー シ ョ ン 用 ツ ー ル ModelSim Altera
Starter Edition（以下，ModelSim と記述）の使い方について解説します．

計はこの RTL レベルで行います．

LED をチカチカする程度の簡単な論理回路の場合，

7

題材としては，これまでの章で解説した，フル・カ
ラー LED チカチカ回路 PROJ_COLORLED と，階調
明 滅 回 路 PROJ_COLORLED2 を そ れ ぞ れ 使 っ て，
MAX 10 FPGA 全体を論理シミューションしてみま

いきなりハードウェア記述言語 Verilog HDL で回路を記述して FPGA をコンフィグレーションし，動作確認しながら仕上げることもできるでしょう．実際，

8

す．

論理シミュレーションの基本的な考え方●本書では RTL 設計をベースとする

FPGA の論理設計を行う場合，最も抽象度が低い
レベルは，回路図上で論理ゲートを直接組み上げていく設計です．しかし，この設計エントリ方法は論理合成ツールの性能が向上した今ではほとんど使わないでしょう．
論 理 ゲ ー ト か ら 1 段 階 高 い 抽 象 レ ベ ル は RTL（Register Transfer Level）で す．Verilog HDL や●論理シミュレーションとは

ここまでに取り上げた LED 点滅回路は，筆者もそうやって作成しました．
しかし，もっと複雑な論理回路を設計する場合，
FPGA による実機動作確認だけではデバッグしきれません．Quartus Prime がサポートするロジアナ機能
Signal Tap II を使う手もありますが，FPGA のリソー
スを消費するし，見たい信号やトリガ条件を変更するだけでも，毎回 FPGA 全体をコンフィグレーションし直す必要があり，デバッグ効率は良くありません．
よって，論理設計においては，設計した論理回路の動作を PC 上でシミュレーションして，その内部信号やシステム動作が所望の通りかどうかを確認する作業が欠かせません．

VHDL といったハードウェア記述言語で表現できる
もので，基本的には内部回路のレジスタ（フリップフロップ）だけは明確に定義して，そのレジスタ間の論●ハードウェア記述言語はシミュレーションのための言語

理をブール式や条件式などで抽象化する記述方法です．
論理合成ツールを使えば RTL から論理ゲートへ自動変換でき，現在では非常に効率の良い合成結果が得られるようになっています．RTL 記述は抽象度が高

ウェア記述言語は，論理シミュレータを作る側の人にとって都合の良い言語なのです．言語バージョンが上がるたびに改善されてきましたが，設計者のための言語というよりは，EDA（Electronic Design Automation）
ツール開発者のための言語のようでした．

いといっても，そこから論理ゲートで構成される回路をほぼ類推できるので，テキスト・エディタで記述でこのあたりの楽しい（?）不平不満については，姉妹書の実践編の中で語ってみたいと思います．

余談ですが，そもそも Verilog HDL というハード

9
10
11
12
13
14
15

見本

論理シミュレーションの基本的な考え方

147

第3部

第

Nios II システム開発入門

11章

1

Nios IIコアの概要とその開発フローをマスタしよう

2

Nios II システムの概要●はじめに

本章では，Altera 社から提供されている RTL ベースのソフト CPU コア Nios II の概要とその開発フローについて説明します．具体的な設計事例は次章以降で説明します．

Nios II コアとそのシステム● MAX 10 で使えるコアは Nios II Gen 2

Nios II コアには，Classic と Gen 2 の 2 種類があります．基本的に命令コードはバイナリ・コンパチブル
ですが，キャッシュ関係の仕様（キャッシュ・バイパ
ス関係）が異なっています．
開発環境 Quartus II Ver14.1 以降から Gen 2 だけが サ ポ ー ト さ れ て お り，MAX 10 で 使 え る コ ア もGen 2 のみです．以下の説明で Nios II と表記したものは全て Gen 2 コアを指します．

●本書では Nios II/e コアを使う

Nios II コアには 2 種類あります．表 1 にその機能比較を示します．Nios II/e（Economy コア）
は無償ですが，機能は限定されており，クロック当たりの性能は低いです．Nios II/f
（Fast コア）は有償ですが，高機能でクロック当たりの性能も高いです．
本書では，無償の Nios II/e コアを使ったシステム
設計事例を説明します．Nios II/e はキャッシュやメ
モリ管理ユニット（MMU）などのサポートがなく，かつ命令性能も低いですが，組み込み用のシンプルなシ
ステム・コントローラとしては十分な機能があり，論理規模も小さく，FPGA の LE
（Logic Element）をあまり消費しないという特長があります．

● Nios II コアのブロック図

Nios II コアのブロック図を図 1 に示します．Nios
II コアは機能仕様をユーザがコンフィグレーションできるようになっており，必要な機能だけを選択できます．カスタム命令の追加も可能であり，クリティカル

3
4

な処理をハードウェア化した命令を追加することで，システム性能を向上させることができます．
本書の設計事例に組み込む Nios II/e コアには，図1 内で（＊）を付した JTAG デバッグ・モジュールと内部割り込みコントローラをオプション追加して使います．

5
6● Nios II コアの詳細仕様を理解せずとも開発できる
Nios II コアの論理を FPGA に組み込む作業は設計ツールにより自動化されています．ソフトウェア開発

7

は C 言語ベースでありデバイス・ドライバも自動生成されます．これらのサポートによって，Nios II コ
アの低レベルな階層の詳細仕様を理解することなく開発を進められるようになっています．

8

Nios II コアの詳細アーキテクチャや命令仕様について詳しく知りたいときは，参考文献（1）を参照してください．

9● Nios II のシステム構成と Avalon インター
フェース

10

Nios II コアにより構成するシステム例を図 2 に示します．

図 2 の一番上にバス・マスタになる Nios II コアと
DMAC（Direct Memory Access Controller）
がありま
す．Nios II コアは，命令を取り込む命令バスとデー
タのリード / ライトを行うデータ・バスが分離した
ハーバード・アーキテクチャを採用しています．

1112

図 2 の一番下には，バス・マスタからのアクセスを受けるスレーブ・モジュール（メモリや周辺機能）
が
あります．

13

● 基 本 的 な バ ス 規 格 は Avalon-MM イ ン タ ー
フェース

14

Nios II システムにおけるバス・マスタとスレーブ・モジュールの間のバス・インターフェース規格としては，Avalon-MM インターフェースが採用されています．MM とは Memory Mapped の略であり，アドレ

15

見本

Nios II コアとそのシステム

163

第

12

Nios IIシステムのハードウェア設計，ソフトウェア設計，

1

章 論理シミュレーションまで全部通しでやってみよう

2

Nios IIシステムでLチカ
格納フォルダ3
4

本書付属 DVD-ROM 収録関連データ
内 容

備 考
本章では，このプロジェクトを読者がゼロから
Nios II によるフル・カラー LED 点滅動
作成する方法を説明する（参考用として提供す
CQ-MAX10¥Projects¥PROJ_NIOSII_LED 作のプロジェクト一式（Quartus Primeる）．本章で説明する手順が全て終わった状態の用，Nios II EDS 用，ModelSim Altera 用）
プロジェクトを格納してある．

●はじめに本章では，前章で説明した Nios II システム開発の一連の手順を具体的に説明します．Nios II システムを設計ツール Qsys を使って設計して，C 言語により
LED のチカチカ動作をさせてみます．さらにハード
ウェアとソフトウェアを含めた論理シミュレーションの手法についても説明します．
最終的に FPGA のコンフィグレーション・データと Nios II のソフトウェアを MAX 10 の FLASH メモ
リに格納するので，本章で説明する手法をマスタすれば，オリジナル FLASH マイコンを構築することができるようになリます．

Qsys で Nios II システムのハードウェアを設計●何はともあれ Quartus Prime の新規プロジェ
クトを作成

本章では，何もないゼロの状態から Nios II システ
ム の 構 築 を し て い き ま す． ま ず は 図 1 に 従 っ てQuartus Prime の新規プロジェクトを作成してください．ここではディレクトリ PROJ_NIOSII_LED の下にプロジェクト FPGA を生成します．

●Qsys を立ち上げて，基本クロック周波数を設定

5の Nios II シ ス テ ム 階 層 の モ ジ ュ ー ル 名 は QSYS_

6CORE とするので，Qsys 設計情報は QSYS_CORE.
qsys としてセーブします．
クロック信号とリセット信号を上位階層から受けて

7

Nios II システム内に供給する Clock Source モジュー
ル
（インスタンス名：clk_0）がデフォルトで存在しています．ここでは Nios II システム内の基本クロック
周波数を 50MHz に設定しておきます．

8● Nios II の CPU コアを追加

9

図 3 の手順で Nios II の CPU コア Nios II Processorを追加してください．ここでは無償の Nios II/e を選択します．インスタンス名は自動的に nios2_gen2_0になります．ここでは，インスタンス名は自動的にアサインされたものを変更せずそのまま使います．CPU
コアのコンフィグレーションはメモリを追加したあと10で設定するので，クロック信号とリセット信号を接続するだけで次に進みます．

11● FLASH メモリを追加

図 4 の手順で FLASH メモリを追加してください．
インスタンス名は自動的に onchip_flash_0 になります．
FLASH メモリは，FPGA のコンフィグレーション
情報記憶用の CFM と，ユーザ・メモリ用の UFM かFPGA 内の中心となる Nios II システムから設計していきましょう．FPGA の最上位階層の下に，ここで設計する Nios II システムがインスタンス化されることになります．

ら構成されていますが，コンフィグレーション情報の形式によってそれぞれの容量配分が変わります．
ここでは，コンフィグレーション情報の形式を「S i n g l e C o m p r e s s e d I m a g e w i t h M e m o r yInitialization」にしておきます．MAX 10 デバイス内

Quartus Prime のメニューから，いきなり図 2 に示す手順で Qsys を立ち上げて作業してください．今回に記憶できるコンフィグレーション情報は 1 種類とし，データは圧縮して，内蔵 RAM の初期化情報も含

12
13
14
15

見本

Qsys で Nios II システムのハードウェアを設計

175

第

13

Nios IIシステムで割り込みを使う方法を

1

章 マスタしよう

2

Nios IIシステムで割り込み

3
4

本書付属 DVD-ROM 収録関連データ
内 容
備 考
本 章 で は， こ の プ ロ ジ ェ ク ト を 読 者 が 前 章 のNios II の割り込みによるフル・カラー PROJ_NIOSII_LED をベースにして作成していく
CQ-MAX10¥Projects¥PROJ_NIOSII_INT LED 点滅動作のプロジェクト一式
方法を説明する．参考用として提供する．本章で（Quartus Prime 用，Nios II EDS 用） 説明する手順が全て終わった状態のプロジェクトを格納してある．
格納フォルダ●はじめに

本章では Nios II システムにおける割り込みの使い方をマスタしましょう．組み込みマイコンで割り込みは頻繁に使うものですが，いざ使おうとしたときに，
C 言語での記述方法などでちょっと迷うことがあります．そのあたりの不安は早い段階で払拭しておきましょう．
ここでは，Nios II システム内に，周期的に割り込
み要求を発生するインターバル・タイマを新規に追加して，その割り込みハンドラ内で LED の色を変えていくプログラムを作成してみます．

Nios II システムにインターバル・タイマを追加●前章で作成したプロジェクトを複製して新規プ
ロジェクトを作成

前章で作成したプロジェクトをリユースしましょう．前章の最後の状態，すなわち，FLASH メモリへのコンフィグレーション・データとプログラムの固定

78● Quartus Prime でプロジェクトを開く
Quartus Prime で複製したプロジェクト PROJ_NIOSII_INT¥FPGA¥FPGA.qpf を開きます．
● Qsys で Nios II システム内にインターバル・
タイマを追加複製したプロジェクト内の Nios II システム QSYS_
CORE.qsys にはインターバル・タイマが 2 個入っていますが，これらはシステム・クロックとタイムスタンプ用に使っています．ここでは，ユーザ割り込み発生用のインターバル・タイマをもう一つ追加します．
図 2 に示すように作業してください．ここで追加

9
10
11
12
13

（2）Quartus Primeを起動して，プロジェクト・ファイル「PROJ_NIOSII_INT¥FPGA¥FPGA.qpf」を開く

Quartus Prime のプロジェクトをディレクトリ PROJ_NIOSII_INT 以下に作成

前章で作成したプロジェクトが含まれたディレクトリ PROJ_NIOSII_LED をコピーして，ディレクトリ名を PROJ_NIOSII_INT に変更する．

6

化ができた状態のプロジェクトをベースにしてください．
図 1 に示すように，プロジェクトが含まれるディ
レクトリ PROJ_NIOSII_LED を丸ごと複製して新規ディレクトリ PROJ_NIOSII_INT を作成してく
ださい．

（1）フォルダ「PROJ_NIOSII_LED」を複製して，フォルダ名を「PROJ_NIOSII_INT」に変更する

図1

5

14
15

見本

Nios II システムにインターバル・タイマを追加

223

第

14

MAX 10内蔵のA-D変換器を1

章 Nios IIシステムで使う方法をマスタしよう

2

Nios IIシステムでA-D変換器

34

本書付属 DVD-ROM 収録関連データ
内 容
備 考
Nios II システムに A-D 変換器を組み込 本 章 で は， こ の プ ロ ジ ェ ク ト を 読 者 が 前 章 のみ，アナログ信号のレベルに応じてフ PROJ_NIOSII_INT をベースにして作成していく
CQ-MAX10¥Projects¥PROJ_NIOSII_ADC ル・カラー LED の色を変えるプロジ 方法を説明する．参考用として提供する．本章でェ ク ト 一 式（Quartus Prime 用，Nios 説明する手順が全て終わった状態のプロジェクトを格納してある．
II EDS 用）
格納フォルダ●はじめに

本章では MAX 10 の特長である 12 ビット A-D 変
換器の使い方をマスタしましょう．アルテラ社からは，MAX 10 の A-D 変換ハードウェア・ブロックを
Nios II シ ス テ ム の 中 に 組 み 込 む た め の イ ン タ ー
フェース用 IP が提供されており，簡単に使いこなすことができます．

● A-D 変換器の入力チャネル

MAX10-FB 基板に搭載した 10M08（EQFP-144 ピン

7版）は，12 ビット A-D 変換器を一つ持ち，外部からのアナログ入力チャネルとしては CH0 〜 CH8 の 9 本
あ り ま す．CH0 は 専 用 端 子（ANAIN1）で，CH1 〜

8

CH8 が デ ィ ジ タ ル 機 能 と の 兼 用 端 子（ADC1IN1 〜
ADC1IN8）に対応します．兼用端子 8 本の機能は A-D変換器を有効化すると全てアナログ入力専用になり，
ディジタル機能をアサインすることができなくなるのMAX 10 の A-D 変換器の概要で注意してください．
さらに，MAX 10 は温度計測用ダイオードを内蔵しており，その値を A-D 変換器に取り込むための内
部専用チャネル TSD（Temperature Sensing Diode）

MAX 10 の A-D 変換ハードウェア・ブロックを
Nios II シ ス テ ム の 中 に 組 み 込 む た め の イ ン タ ー
フ ェ ー ス 用 IP が， ア ル テ ラ・ モ ジ ュ ラ ADC コ ア（Altera Modular ADC Core）
です．

があります．

この中は大きく分けて二つのブロックから構成されています．
一つは，シーケンサ・コアで，複数のアナログ入力
チャネルの変換シーケンスを制御するためのブロック
です．アナログ入力本数とその変換シーケンスは，ながら最大 64 回連続変換できます．1 回の変換をス
ロット（Slot）と呼び，各スロットごとに任意の入力
チャネルを対応できます．よって，同じ入力チャネル
を連続して変換することもできます．
スロットの個数および，各スロットと入力チャネル

Qsys 上でアルテラ・モジュラ ADC コアを追加する
ときに設定し，ハードウェアとして固定化します．
もう一つはストレージ・コアで，変換結果を保持すの対応については，Qsys 上でアルテラ・モジュラ
ADC コアを追加するときに設定する必要があります．
この設定はハードウェアとして固定化され，ソフト
ウェアからの変更はできません．

るストレージを持ち，変換終了割り込みを出力できます．
シーケンサ・コアとストレージ・コアはそれぞれ独立した Avalon-MM インターフェースを持ち，それぞ6

れを Nios II CPU コアにバス接続する必要があります．

ここでは，Nios II システム内に A-D 変換器を組み込み，外部のアナログ電圧値に応じてフル・カラー
LED の色を変化させる実験をやってみます．

●アルテラ・モジュラ ADC コアの基本構成

5●複数入力チャネルの変換シーケンス

複数の入力チャネルは，任意にチャネルを切り替え

ただし，シングル・サイクル変換モードと連続変換
モードは，ソフトウェアからのレジスタ設定で選択できます．シングル・サイクル変換モードでは，有効化

9
10
11
12
13
14
15

見本

MAX 10 の A-D 変換器の概要

231

第

15

MAX 10にSDRAMを接続して

1

章 広大なメモリ空間を手に入れよう

2

Nios IIシステムでSDRAMアクセス

34

本書付属 DVD-ROM 収録関連データ
内 容
備 考
本 章 で は， こ の プ ロ ジ ェ ク ト を 読 者 が 前 章 のNios II システムに SDRAM を接続しPROJ_NIOSII_ADC をベースにして作成していくて，メモリ・チェックを行うプロジ
CQ-MAX10¥Projects¥PROJ_NIOSII_SDRAM
方法を説明する．参考用として提供する．本章でェクト一式（Quartus Prime 用，Nios
説明する手順が全て終わった状態のプロジェクト
II EDS 用，ModelSim Altera 用）を格納してある．
格納フォルダ5
6●はじめに本 章 で は Nios II シ ス テ ム か ら 外 部 の SDRAM（Synchronous Dynamic RAM）
をアクセスする方法を
マスタしましょう．MAX10-FB 基板に載せた SDRAMのライト＆リード・テストをしてみます．ユーザが自分で MAX10-FB 基板に SDRAM をはんだ付けして実装した時のメモリ・チェックは本章のプロジェクトを使ってください．
FPGA に SDRAM を接続すると広大なメモリ空間を手に入れることができます．MAX 10 の場合は，プログラムを FLASH メモリに格納して，大規模デーSDR 型は DDR 型よりもデータ転送速度は遅いのですが，タイミング設計が楽で，特に MAX 10 の 10M08

SDR 型 SDRAM は，既に大手の DRAM メーカは製造していませんが，そうした大手メーカから権利を入手して製造を継続している中小メーカがあり，価格
的にもこなれていて今でも現役で活躍しているメモリ
なのです．

SDR 型 SDRAM の概要

本章では，以下 SDRAM といえば全て SDR 型を指します．

最近の SDRAM は，DDR（Double Data Rate）型が主流で，DDR2，DDR3，DDR4 などが PC のメイン
基板はもちろん，Raspberry Pi などの小型 Linux 基板にも活用されています．クロックの立ち上がりと立
ち下がりの両エッジでデータを転送する非常に高速な
SDRAM です．
一方，今回の MAX10-FB 基板に搭載できる SDRAM
はレガシーな SDR（Single Data Rate）
型です．クロックの立ち上がりエッジだけに同期してデータ転送する
DRAM です．

8ト構成）を推奨しています．MAX 10（10M08）の規模で実現できるアプリケーションから見れば，十分なメ
モリ容量があるといえるでしょう．

タを SDRAM に置くことにより，データ処理や画像処理を伴うさまざまな組み込み応用機器に活用できるでしょう．

●レガシーな SDR 型 SDRAM は今でも現役バ
リバリ

7など DDR メモリとのインターフェースができない
FPGA にも簡単に接続することができます．
今回の付属基板に搭載する SDRAM は，256M ビッ
ト品（32M バイト，16M ワード ×16 ビット構成）または 512M ビット品
（64M バイト，32M ワード ×16 ビッ● SDRAM インターフェース信号

図 1 に SDRAM のインターフェース信号を示します．全ての信号は，CLK の立ち上がりで受け手側に取り込まれます．
SDRAM 側の信号で CKE から BA1，BA0 までは，
コマンド系信号です．コマンド系信号の“H”レベルと“L”レベルの組み合わせパターンにより，リードやライトのアクセス方法の指示やリフレッシュの指示などを行います．
DQ15 〜 DQ0 は入出力データです．UDQM，LDQM
はデータ入出力マスク信号です．以下，簡単に SDRAM

9
10
11
12
13
14
15

見本

のアクセス・タイミングについて説明します．

SDR 型 SDRAM の概要

243

見本

見本