平成 25 年度

修士論文

モバイルタイルドディスプレイの開発

電気通信大学 情報・通信工学専攻
コンピュータサイエンスコース
学籍番号：1231096
氏名：安枝

主任指導教員光成見

副指導教員 岩崎哲
英哉

概要
本研究では「タイルドディスプレイ」と呼ばれる技術を用いて安価で持ち運びが容易な
大型ディスプレイを試作し，液晶モニターサンドイッチマンなどの広告宣伝等にも使える
ようにスマートフォンから直接出力を出来るようにした．
タイルドディスプレイとは，複数のディスプレイを格子状に並べることで大画面を低価格で実現する技術である．通常は公共の場所でのデジタルサイネージ用途に使われることが多く，一度設置したら動かすことは出来ないが，本研究ではこの技術をモバイルディス
プレイに流用することで，持ち運び可能なタイルドディスプレイを制作し，評価を行った．
タイルドディスプレイを実現するにあたっての問題点としては，「画面の歪み」「同期ズレ」が主に存在する．これらに関しては既存研究で FPGA を用いて既に解決されているが，モバイル化するにあたって以下のような新たな問題点が，3 点あった．

1 点目は，スマートフォンからの出力に対応するために，HDMI 信号に対応する必要がある点である．既存の研究では DVI からの出力しか考慮されておらず，HDMI の場合
は DVI には存在しない音声信号による弊害が発生し，画面が出力されないという問題がある．

2 点目は，スマートフォンでは解像度の設定が出来ないという点である．これまでタイルドディスプレイの実現には PC が使われることが多く，ディスプレイに応じて PC 側で解像度を設定することが出来たために問題にはなっていなかった．

3 点目は，ディスプレイを物理的に回転させる必要があり，FPGA からの画面出力を回転する必要があるという点である．これは通常のディスプレイとは違い，モバイルディス
プレイは枠が太いことが多く，少しでも枠の部分を減らすためにディスプレイを回転する必要が生じるのである．
本研究ではこれらの 3 つの問題を解決し，モバイルタイルドディスプレイを制作した．
持ち運ぶことが可能で，重さや消費電力が一般のディスプレイを使ったときよりも有利となった．しかし，モバイル用のディスプレイや FPGA を使ったことによりコストは高くなった．また，折りたためるなどより運びやすい構造が望まれる．
今後の課題としてはより低コストでの実現や，任意の解像度に対応，高精度拡大，全てのスマートフォンに対応するために更なる回転機能の追加といった点が挙げられる．

1

目次
はじめに

4

1.1

背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.2

目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.3

構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

タイルドディスプレイと FPGA

5

1

2
2.1

タイルドディスプレイとは. . . . . . . . . . . . . . . . . . . . . . . . .

5

2.2

タイルドディスプレイの問題点 . . . . . . . . . . . . . . . . . . . . . . .

5

2.3

FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

関連技術・既存研究

10

3.1

GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

3.2

USB ディスプレイアダプタ . . . . . . . . . . . . . . . . . . . . . . . . .

11

3.3

SAGE [1] [8]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

3.4

スマートフォンからの出力. . . . . . . . . . . . . . . . . . . . . . . . .

12

3.5

FPGA を用いたタイルドディスプレイシステムの開発 . . . . . . . . . . .

16

システム概要

18

3

4
4.1

音声信号の除去. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

4.2

解像度の固定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

システム詳細22

5.1

細川の回路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

5.2

音声信号の除去. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

5.3

EDID 信号の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

5.4

回転機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

5.5

スマートフォンからの出力画像の回転 . . . . . . . . . . . . . . . . . . . .

34

5.6

ディスプレイの制作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

評価

43

32 型テレビとの比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

5

6
6.1

2

6.2
7

持ち運ぶことができるか . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

まとめと今後の課題

46

参考文献

47

3

1 はじめに1.1 背景近年では高解像度・大画面のディスプレイが多く見られるようになり，地上デジタル放
送や Blu-rayDisc のような大容量記憶媒体の普及などにより大型ディスプレイに適した
高解像度映像コンテンツが提供されるようになっている．またこれらを用いたマーケティ
ングの方法としてデジタルサイネージや液晶モニターサンドイッチマンなどが考案されている．しかし，大型ディスプレイは製造コストや市場規模の観点から考えると，所有するには問題があるのが現状である．
この問題を解決する手法の 1 つとしてタイルドディスプレイシステムが挙げられる．タ
イルドディスプレイシステムとは，複数の小さなディスプレイを格子状に並べることで 1
つの大きなディスプレイとして見せる技術である．小型ディスプレイは大型ディスプレイ
に比べて圧倒的に安価であり，流通量も多いためこの問題を解決することが可能である．

1.2 目的
本研究ではこの技術をモバイルディスプレイに流用し，持ち運びが容易な軽いタイルド
ディスプレイを開発し，スマートフォンからコンテンツを出力することで歩きながら大画面を使えるようにする．広告などを映し出すことで歩くデジタルサイネージや液晶モニ
ターサンドイッチマンとしての応用を考えており，今後はより軽くより安価なシステムが必要とされている．

1.3 構成本論文での構成は以下の通り．まず，第 2 節でタイルドディスプレイについて記述し，
第 3 節で関連技術と既存研究について，第 4 節で実装するシステムの詳細について，第 5節で実装したシステムの詳細について，第 6 節で実装したシステムの評価について，最後に第 7 節でまとめと今後の課題について記述する．

4

2 タイルドディスプレイと FPGA
2.1 タイルドディスプレイとは
タイルドディスプレイとは，複数の小さなディスプレイを格子状に並べることで 1 つの大きなディスプレイとして見せる技術である（図 1）．超高解像度・超大型のディスプレイ
を構築できるため，大型デジタルサイネージ（図 2）として利用されることが多い．また，大量の可視化情報を一度に表示できるため，業務用や研究用にも利用される．
他にもタイルドディスプレイには，超大型のディスプレイを安価に構築できるという利点が存在する．一般的にはディスプレイの価格は大型になればなるほど指数関数的に上昇するため，同じ大きさのディスプレイを構築するにあたって，大型ディスプレイ一枚で構築するよりも，小型ディスプレイを複数並べた方が圧倒的に安価に実現できる．

2.2 タイルドディスプレイの問題点
タイルドディスプレイを実現するにあたって問題点がいくつか存在する．主な問題点は「画面の歪み」，「同期ズレ」である．また，本研究では特にモバイルディスプレイを用いるため，「外枠の太さの違い」が問題となる．

図 1 タイルドディスプレイ (参考文献 [1] より引用)

5

図 2 SKY GATE VISION（参考文献 [2] より引用）

2.2.1

画面の歪み

ここでの「画面の歪み」とは，「ディスプレイの外枠による各画面出力の表示位置がズレる」ことを指す．通常の OS から画面が出力される場合，OS はディスプレイの液晶部分のみを認識して出力されるため，ディスプレイの外枠が考慮されず，本来は図 3 のように出力されて欲しいのだが，図 4 のように出力されてしまい，歪んだ画面が見えるようになってしまう．これは映し出される映像によっては顕著に現れ，非常に不自然な映像に見えてしまう．

2.2.2

同期ズレ

ここでの「同期ズレ」とは，「映像が映し出される各ディスプレイの映像表示タイミングのズレ」のことを指す．これは各ディスプレイの出力タイミングが同期していないために発生する．それほど動きがない画像だと人の目にはあまり認知されない程度のものだが，動きの大きい場面や近年普及してきた立体映像を見るときに問題になってしまう．立体映像の提供方法として，メガネ式と裸眼式が存在するが，現在 3D テレビの立体映像提供方
法は液晶シャッター式が主流である．液晶シャッター式は，右目用と左目用の映像が切り替わり，それに同期して視聴者が装着しているメガネのシャッターが切り替わることで立6

図 3 歪み補正有り

図 4 歪み補正無し

7

図5

映像表示タイミングの違い

体視を提供している．よって同期に不具合が発生するとその部分がぼやけて見えたり立体の凹凸が逆になってしまうといった問題が発生する．
図 5 の上では同期ズレがない場合，下はある場合を示している．ズレがある場合は 2 フ
レーム目の左下に 1 フレーム目の映像が混ざってしまっている．

2.3 FPGAFPGA（Field Ptogrammable Gate Array）は，製造後に購入者や設計者が構成を変更できる集積回路であり，広義的には PLD（Programmable Logic Device）の一種である．何度でも回路を書き換えて動作確認をすることが可能であるためエンジニアリングコ
ストを低く抑えることが可能である．
本研究では前節の問題点を安価に解決できるシステムの構築を目指すために FPGAを用いて機能を実装する．用いた FPGA は Digilent 社の Atlys Spartan-6 FPGA 開発
ボード（図 6）である [3]．

8

図 6 Atlys Spartan-6 FPGA 開発ボード (参考文献 [3] より引用)

9

3 関連技術・既存研究
3.1 GPU
ハードウェアを用いたタイルドディスプレイを構築する既存技術の 1 つとして GPU による実現方法がある．OS のデスクトップを広く使うだけなら低価格の GPU でいいのだ
が，画面の歪みを補正したり，動画再生までサポートしようとすると高価な GPU を使用しなければならない．本研究でははスマートフォンなどから直製出力したいため，GPUを介して画面出力することができないので GPU を介する方法は適さない．

3.1.1 NVIDIA Quadro K6000 [4]
NVIDIA 社のデスクトップワークステーション向け GPU（図 7）．1 枚で 4 画面への出力が可能であり，複数枚用いることによって最大 16 画面まで出力することが可能である．
フレームロックによるフレーム同期を行い，仮想の 1 画面として認識させ，OpenGL による 3DCG や大画面での動画表示においてのフレーム間のズレを抑えた表示を可能にしており，画面の歪みを補正する機能もサポートしている．また，16K でのテクスチャやレンダリングなど，16K 画質にも対応している．しかしながら 1 枚あたり 600,000 円程度の値段が付いており，個人で所有するには現実的ではない．

3.1.2 AMD Radeon R9 290X [5]AMD 社のデスクトップ向け GPU（図 8）であり，4K にも対応し，カード 1 枚で 3 画面への出力が可能である．極めて高いスペックを誇るが 1 枚で 60,000 円程度であり，先述した Quadro K6000 よりは安価ではあるがやはり個人で所有するには少し難がある．

3.1.3 NVIDIA GeForce GTX 780 Ti [6]
NVIDIA 社のデスクトップ向け GPU（図 9）であり，先述した AMD 社の Radeon R9
290X と同程度の性能を誇る．こちらはカード 1 枚で 4 画面への出力が可能である．しかしやはり 1 枚で 70,000 円程度と高価で個人で所有するには少し難がある．また，3D 描画
では 3 画面までしか対応していない．

10

図 7 Quadro K6000

図 8 Radeon R9

図 9 GeForce GTX 780 Ti

3.2 USB ディスプレイアダプタ
ディスプレイと PC 間を USB を介して接続することにより，表示ディスプレイを拡張することができる．基本的には USB ポート 1 基につき 1 画面拡張することができる．

RATOC 社の REX-USB3HDMI-DH [7] （図 10）は，USB ポート 1 基から 2 台分のHDMI 出力を可能にしており，FullHD 出力も可能である．また，複数台用いることによって最大 6 台まで画面出力が可能である．価格は 10,000 円程度と安価で，USB 接続とドライバ更新のみで起動するため，導入が非常に簡単である．
しかし描画は全て CPU で行うため，同期ズレを考慮しておらず，ディスプレイの歪みに対しても考慮されていない．また，拡張された画面はマルチディスプレイとして認識されるので，マルチディスプレイに対応していないアプリケーションは複数画面に渡っての表示ができない．

3.3 SAGE [1] [8]SAGE（Scalable Adaptive Graphics Environment）はアメリカのイリノイ大学 EVL（Electronic Visualization Laboratory, Illinois at Chicago）で開発されたソフトウェア
である．マルチディスプレイに SAGE のウィンドウを広げて使うことによって擬似的に
タイルドディスプレイを作り出す．その性質上，PC のスペックが足りている限りほぼ無限に画面を拡張することが可能である．

SAGE は Free Space Manager，SAGE Application Interface Library（SAIL），SAGE
Reciver，User Interface（UI） client の 4 つで構成されている（図 11）．Free SpaceManager は UI client - SAGE Reciver 間と UI client - SAIL 間のピクセル情報を管理・

11

図 10

REX-USB3HDMI-DH制御する．SAIL はアプリケーションが実行される際に，そのアプリケーションからの出力ピクセル情報を分配して SAGE Reciver に送る．SAGE Reciver は複数の SAIL から受け取ったピクセル情報を，自分自身が受け持つディスプレイへと出力する．UI client
は Free Space Manager をコントロールする UI であり，ユーザはこれを操作することに
よって各アプリケーションウィンドウの移動やサイズ変更を行うことが可能である（図12）．
SAGE はフリーで公開されているソフトウェアであるのでコスト面での問題がなく，画面の歪みを補正する機能もサポートしている．しかしながらピクセル情報はネットワーク
を通じてやりとりしているので各画面の同期を取ることができない．また，先述した通り拡張できる画面の数も PC のスペックに依存し，結局のところ SAGE で高画質でシームレスに映像を観賞しようとするのであれば，先述したハイスペックな GPU が何枚も必要になってしまう．他にも SAGE 上で実装されているアプリーケションでいないと対応していないので用途も限られてしまう．
導入する際にも最新のバージョンとマニュアルのバージョンが違っていたり，サーバを立てた際の IP やポートの設定，拡張画面数の指定など SAGE のソースを弄らないといけないので初心者にはかなり厳しい．

3.4 スマートフォンからの出力
FPGA で画面の入力をする場合，HDMI 端子による信号入力が必須である．そのため，
スマートフォンからの出力を HDMI 端子に変換する必要がある．

12

図 11 SAGE の構成 (参考文献 [1] より引用)

図 12 SAGE のユーザインターフェース (参考文献 [1] より引用)

3.4.1 HDMI Type D [9]HDMI 端子の Type の 1 つ．一般的には MicroHDMI と呼ばれている．HDMI 規格をそのまま使うことができるので変換機を介する必要がない．端子自体がかなり小さく，ス13

図 13 Lightning Digital AV Adapter

マートフォンやビデオカメラなどに使うことを考慮されているが，実際はそれらのデバイ
スには使われていないことが多く，ノート PC やタブレットに使われていることが多い．
本研究ではスマートフォンからの出力を行うため，採用していない．

3.4.2

iPhone 専用アダプタ

代表的なスマートフォンの 1 つとして iPhone が挙げられる．iPhone から HDMI 出
力しようとした場合，Lightning ピンからの出力が考えられる．現在主流となっている

iPhone5 以降に使われている 8pin タイプでは，Apple 社の LightningDigital AV Adapter（図 13）を用いることによって HDMI 出力が可能となる．しかしながら iPhone から映像を出力する場合には著作権保護のために HDCP 信号が用いられている．そのため FPGA
側で HDCP 信号を考慮したコードを書かなくてはならないが，非常に困難であるので現実的ではない．

3.4.3 Miracast [10]Wi-Fi Alliance が定めた，無線通信によるディスプレイ伝送技術である．HDMI が実現している機能を無線化しており，通信経路は Wi-Fi Direct，解像度は 1920 × 1080 のFullHD に対応しており，音声も 5.1ch まで対応している．ただし HDMI とは違い映像はH.264 に圧縮されているので，伝送によって不可逆な劣化が発生するため，従来の HDMIなどの有線接続形式と比べると画質の面で少々劣る．また，無線での出力であるために端末ディスプレイとの距離が離れるほど映像の乱れが生じやすくなってしまう．

14

モバイルデバイス 1 台に対してディスプレイ 1 台の Pear to Pear 接続で映像を出力しており，無線での情報漏洩に関しても WPA2 を使った暗号化がなされており，HDCP 信
号も用いているため iPhone と同じく FPGA での実装には HDCP を考慮したコードを書かなくてはならない．
比較的新しい技術なので，サポートしているデバイスが少なく，ディスプレイ側にも受信機が必要で，受信機内臓のディスプレイも多くはなく，まだ一般的には浸透しきってい
ない．

3.4.4

Splashtop [11]ソースネクスト社が開発したリモートデスクトップアプリであり，アプリを導入すれば無線で映像をディスプレイに出力することができる．無料版と有料版があり，無料版は同
一ネットワーク内での使用しかできないが，有料版だと外部ネットワークからのリモート接続が可能になる．有料版といっても使える年数に制限があり，定期的な支払いを要求されるため少々コストがかかる．アプリはモバイルデバイスと端末ディスプレイに繋がった

PC の両方に導入する必要があり，さらに導入するアプリの名前が違う上に導入後も設定を弄る必要があるので導入が少々難儀である．当たり前だが一般的なリモートデスクトッ
プアプリと同じで，リモートコントロールされる側の PC 自体とアプリが起動している必要がある．Wake-on-LAN の環境が整っていれば外部からリモートで PC の起動も可能だが，その環境がなければスリープモードからの復帰もできない．ただし，アクセスする PC の OS が Windows Home Server 2011 などのサーバ OS であった場合はリモート

WEB アクセスでスリープモードから復帰させることも可能ではある．
解像度に関しては接続するモバイルデバイスの解像度に依存するが，設定では 1280 ×

720，1280 × 800，1366 × 768 の三種類から選択することができる．映像のクオリティに関してはネットワークを利用するので，回線速度に大きく影響される．
リモートデスクトップを用いているので出力するディスプレイ側には PC もしくはサーバが必須なので，持ち運びができない．

3.4.5 MHL [12]iPhone 以外の比較的多くのスマートフォンに備わっている．MicroUSB から HDMIに出力を変換できるアダプタを用いることによって HDMI 出力が可能になる．iPhone とは違い，HDCP 信号がないため HDCP 信号を考慮したコードを書く必要がない．本研究で用いた変換アダプタはランサーリンク社の MicroUSB to HDMI MHL Adapter （図14）である．
15

図 14 MicroUSB to HDMI MHL Adapter

3.5 FPGA を用いたタイルドディスプレイシステムの開発
既存研究の 1 つとして，細川の研究が挙げられる [13]．この研究では同研究室の根元の研究である『FPGA を用いた大規模マルチディスプレイシステムの提案』[14] を利用してFPGA を用いてタイルドディスプレイを安価に実現することを目的としていた．
根元の研究では，横方向に対する枠の除去及び，それに付随する拡大機能を実装し，「画面の歪み」に対する問題を解決しており，2 画面のディスプレイ間のみではあるが「同期ズレ」に対する問題も解決している．ただし，今後の課題として出力同期が取れない場合がある問題と拡大機能の改善があった．
細川の研究ではそれらの問題の解決と，縦方向への拡大と，2 画面以上への拡張を行
い，2 × 2 の 4 画面でのタイルドディスプレイを実現した．このシステムでは FPGA に入力された映像を 2 出力することが出来るので，図 15 のようにツリー状に配線すること
によってタイルドディスプレイを実現していた．今後の課題として対応できる入力解像度の限界，高精度の拡大法の実装が挙げられていた．

16

図 15 FPGA の配線

17

4 システム概要
本研究では細川の研究を拡張することによってモバイルタイルドディスプレイを実現した．タイルドディスプレイでの主な問題である「画面の歪み」と「同期ズレ」に関しては
細川の研究で解決されているので，モバイル化するにあたっての必要な機能を実装する．

4.1 音声信号の除去
スマートフォンから出力映像を HDMI 端子を使って出力しようとした場合，音声信号も含まれている．タイルドディスプレイを実現する場合は PC を用いることが多いのでディスプレイへの出力に音声を含まないように設定することが出来るので，音声信号を考慮する必要がない．細川の研究では PC を用いてタイルドディスプレイを実現していたので音声信号について考慮されたコードではなかった．音声信号を考慮していないのでス
マートフォンから出力する場合，ディスプレイに画像が出力されなかった．これは恐らく音声信号が内部で混線してしまっているために起こっているものと考えられる．
解決方法としては，音声信号を受け取り，それをスルーして HDMI 信号に含ませる方法がある．もしくは，音声信号を受け取り，それを FPGA 内で処理して HDMI 信号に音
声信号を含ませないといった手法も考えられる．本研究では，実現しやすい後者の方法を選択した．

4.2 解像度の固定デバイスから出力される解像度が可変である場合，ディスプレイの解像度を上手く認識できずにディスプレイのサイズを生かせないことがある．その時，PC から出力する場合は PC 側で出力する解像度を選択することが可能であるが，スマートフォンから出力する
場合はスマートフォン側で出力する解像度を選択することが出来ない．

FPGA を介しての出力となるので，入力された解像度をスルーしてそのままの解像度
出力することは可能ではあるが，FPGA の出力できる解像度やリフレッシュレートに限界があるためある程度までドットクロック（ピクセル情報の転送速度を表す周波数）を抑える必要がある．
今回は使用するデバイスの関係から 1280 × 720(720p) の解像度に固定して出力することにした．解像度の固定には EDID（Extended Display Identification Data）を用いて
行った．

18

図 16 On-Lap 1501(参考文献 [15] より引用)

4.2.1

画像の回転

本研究で使用したモバイルディスプレイは GeChic 社の 15.6 インチモバイル液晶 On-

Lap 1501（図 16）である．一般的にモバイルディスプレイは通常のディスプレイと違って種類が少ないために外枠が均一なタイプを選べないことが多い．本研究で使用したモ
バイルディスプレイは上 (12mm)，右 (17mm)，左 (21mm)，下 (51mm) の順に幅が太くなっている．そのため通常のディスプレイを用いた場合と同じように図 17 のように並べてタイルドディスプレイを構成した場合，ディスプレイの外枠による歪みが大きくなる上に，歪みを補正しても枠によって見えない領域が広くなってしまう．
解決方法として，モバイルディスプレイの下枠を使わず，ディスプレイを回転させて可能な限り枠の幅が少ない部分を用いて図 18 のようにタイルドディスプレイを構成する．
これにより物理的にディスプレイを回転させることで一部の映像が 180 度回転してしまうので，FPGA に 180 度回転機能を実装することで物理的な回転を相殺し，図 19 のようにモバイルディスプレイでのタイルドディスプレイを実現する．
また，今回のタイルドディスプレイは全体を回転させることが可能なので，スマートフォンからの出力をできるだけディスプレイ全体を用いて出力したい．今回用いた変換ア
ダプタで画面を出力すると，図 20 のように画面の中央に出力され，左右に大きな黒帯が発生する．これをディスプレイ全体に表示させる方法として，FPGA 内部で 90 度回転機
能と，黒帯部分以外を任意に切り抜く機能を追加する方法が考えられる．

19

図 17

モバイルディスプレイによる歪みの増加

図 18 上側のディスプレイを 180 度回転20

図 19 上側の出力画像を 180 度回転

図 20 HTC EVO 3D ISW12HT の HDMI 出力21

5 システム詳細
5.1 細川の回路
既存の細川のシステム [13] では HDMI の映像入力 1 つに対して 2 つの HDMI 映像出
力を返す（図 21）．HDMI の入力信号は FPGA 内部でデコーダを通して RGB の色デー
タ（8 bit × 3），データ有効信号（DE），水平同期信号（hsync），垂直同期信号（vsync）に分けられる．

RGB の色データは DDR2 メモリに格納されており（図 22），メモリには現在入力されているフレームの 1 つ前までの 2 フレームを記憶している．下位 15bit に水平方向のアドレス，その上位 11bit に垂直方向のアドレス，さらに上位 1bit をフレーム切り替え用として管理している．水平方向のアドレスは水平方向の入力信号が入力されている限り，一部を除いて 1 ずつ増加しており，hsync 信号を得た際に 0 に戻し，垂直方向のアドレスを 1増加させる．vsync 信号を得た際には垂直方向アドレスを 0 に戻し，フレーム切り替え用のビットを反転させて，次のフレームには別のアドレスに書き込んでいる．
この書き込まれたアドレスから読み出し部分を指定して，2 倍拡大や 3 倍拡大，切り取りといった事を行っており，最後にそれらをエンコードして出力している．

図 21

細川の回路システム（参考文献 [13] の図 4.2）22

図 22 DDR2 メモリアドレスの対応（参考文献 [13] の図 4.3）

5.2 音声信号の除去
細川の実装 [13] では，HDMI 信号において DVI 信号を前提としているため音声信号が入ることを想定していない．HDMI 信号には音声信号も組み込むことが可能であり，PCのグラフィックカードから HDMI 信号を出力する際には，敢えて音声出力を OFF にしておかないと FPGA において映像が正しく認識されなかった．スマートフォンから出力する場合，HDMI 出力の音声信号だけを OFF にするという制御が出来ない．このため，

FPGA 側で音声信号を除去する仕組みを組み込んだ．
具体的には，まず，HDMI の入出力を行う Atlys FPGA ボード用のサンプルプログラ
ムをいくつか試して，音声に対応しているものがないか調べた．Xilinx 社が提供するサン
プルプログラム xapp460 は，HDMI 信号を入力してシリアルデータをパラレルデータにデコードし，それを再度 HDMI 信号にエンコードするサンプル回路である．本回路を使用すると音声データを含む HDMI 信号であっても正しく映像を出力できることが分かった．本回路では音声データも HDMI 出力から正しく出力するようになっているが，当研究では音声データを FPGA から出力する必要がないため，入力のみ音声データに対応すればよい．
図 23 は，HDMI 信号の中に音声信号が含まれている場合の模式図である．映像信号だ
けの場合は図の紫色の Active Video Data の部分にしか有効な信号が流れないが，音声も含む場合は図の青色の部分にも信号が流れる．映像と音声のデータがいつ有効であるかを示す信号として，それぞれ VDE, ADE という信号をデコードする必要がある．そのために RGB の各チャンネルからのコントロール信号のパターンのより詳細な解読を行ってVDE, ADE, hsync(水平同期), vsync(垂直同期) などを生成することになる．
図 24 は，細川の研究で使っていた FPGA 回路の HDMI 信号をデコードする部分の Verilog ソースコード dvi decoder.v からの抜粋である．図 25 は、今回書き換えた

23

図 23

音声が存在する時の HDMI 信号（参考文献 [16] の Fig.5 より引用）

Verilog コードである．先に述べたように、細川のコードでは映像信号にしか対応しない
ため VDE 信号（ソースコード上は de）しか扱っていないが，本研究のコードでは ADE 信
号をデコードしている（図 25 の 209, 237, 265 行目の ade b, ade g, ade r）．同様に

aux0, aux1, aux2 などもデコードしているが，これらの信号は上位モジュールに返すことはないので音声信号は受け付けるものの無視するようになっている．そのほかに，細川のコードでは hsync, vsync は直接青チャンネルのコントロール信号 c0, c1 から生成していたのに対し（図 24 の 188, 189 行目），本研究では他の信号も見て生成している（図 25 の 113, 114 行目）．
この修正に対応するために，RGB の各チャンネルごとのシリアルデータをデコードするモジュール decode も更新されている．図 26 は細川が使っているデコードモジュールの宣言部分であり，図 27 は本研究で使用しているデコードモジュールである．本研究の方は xapp460 に付属のファイルをそのまま使用している．CHANNEL, videopreamble,

dilndpreamble, ade, adout の信号が追加されていることが分かる（図 27 のそれぞれ
48, 62, 63, 71, 73 行目）．
24

100
102
103
172
173
174
175
176
177
178
179
188
189
190
191
192
193
194
195
196
197
198
199
200
201
210
211
212
213
214
215
216
217
218
219
220
221
222
223
232
233
234
235
236

図 24

wire de_b, de_g, de_r;
assign de = de_b;
decode dec_b (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(blue_p),.din_n(blue_n),.c0(hsync),.c1(vsync),.de(de_b),.sdout(sdout_blue),.dout(blue)) ;decode dec_g (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(green_p),.din_n(green_n),
.c0
(),
.c1
(),
.de
(de_g),.sdout(sdout_green),.dout(green)) ;decode dec_r (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(red_p),.din_n(red_n),
.c0
(),
.c1
(),
.de
(de_r),.sdout(sdout_red),.dout(red)) ;細川の dvi decoder モジュールの中身 (dvi decoder.v からの抜粋)

5.3 EDID 信号の生成
PC とディスプレイを HDMI ケーブル経由で接続した場合には，ディスプレイがどんな解像度に対応しているかなどの情報を両者の間でやりとりする．その際に使われる信号
として，HDMI コネクタには SCL, SDA の二つの信号があり，EDID と呼ばれる規格によって規定されたデータフォーマットをやり取りする．細川の研究ではこの信号を，入出力の HDMI コネクタ間で接続していたため，PC からはあたかも直接ディスプレイに接続したかのように認識させることが出来る．具体的に Atlys ボードでは，ジャンパーピン

25

100
101
102
105
113
114
115
186
187
188
189
190
191
192
193
194
195
200
201
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
228
229
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
256
257
262
263
264
265
266
267
268

図 25

wire de_b, de_g, de_r;wire ade_b, ade_g, ade_r;wire [3:0] aux0, aux1, aux2;
assign de = de_r;
assign hsync = ade_b ? aux0[0] : blue_c0;
assign vsync = ade_b ? aux0[1] : blue_c1;
decode # (.CHANNEL("BLUE")) dec_b (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(blue_p),.din_n(blue_n),.videopreamble(videopreamble),.dilndpreamble(dilndpreamble),.c0(blue_c0),.c1(blue_c1),.de(de_b),.ade(ade_b),.sdout(sdout_blue),.adout(aux0),.dout(blue)) ;decode # (.CHANNEL("GREEN")) dec_g (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(green_p),.din_n(green_n),.videopreamble(videopreamble),.dilndpreamble(dilndpreamble),.c0(ctl0),.c1(ctl1),.de(de_g),.ade(ade_g),.sdout(sdout_green),.adout(aux1),.dout(green)) ;decode # (.CHANNEL("RED")) dec_r (.reset(reset),.pclk(pclk),.pclkx2(pclkx2),.pclkx10(pclkx10),.serdesstrobe (serdesstrobe),.din_p(red_p),.din_n(red_n),.videopreamble(videopreamble),.dilndpreamble(dilndpreamble),.c0(ctl2),.c1(ctl3),.de(de_r),.ade(ade_r),.sdout(sdout_red),.adout(aux2),.dout(red)) ;本研究の dvi decoder モジュールの中身 (dvi decoder.v からの抜粋)

26

47 module decode (48
input wire reset,
49
input wire pclk,
50
input wire pclkx2,
51
input wire pclkx10,
52
input wire serdesstrobe,
53
input wire din_p,
54
input wire din_n,55
input wire other_ch0_vld,
56
input wire other_ch1_vld,
57
input wire other_ch0_rdy,
a valid starting pixel
58
input wire other_ch1_rdy,
a valid starting pixel
59
60
output wire iamvld,
61
output wire iamrdy,
62
output wire psalgnerr,
63
output reg c0,
64
output reg c1,
65
output reg de,66
output reg [9:0] sdout,
67
output reg [7:0] dout);

//
//
//
//
//
//
//
//
//
//

pixel clock
double pixel rate for gear box
IOCLK
serdesstrobe for iserdes2
data from dvi cabledata from dvi cable
other channel0 has valid data now
other channel1 has valid data now
other channel0 has detected//

other channel1 has detected

//
//
//

I have valid data now
I have detected a valid new pixel
Phase alignment error

図 26 細川の decode モジュールの定義 (decode.v からの抜粋)

47 module decode # (48
parameter CHANNEL = "BLUE"
49 )
50 (
51
input wire reset,
52
input wire pclk,
53
input wire pclkx2,
54
input wire pclkx10,55
input wire serdesstrobe,
56
input wire din_p,
57
input wire din_n,58
input wire other_ch0_vld,
59
input wire other_ch1_vld,
60
input wire other_ch0_rdy,
a valid starting pixel
61
input wire other_ch1_rdy,
a valid starting pixel
62
input wire videopreamble,
63
input wire dilndpreamble,
64
65
output wire iamvld,
66
output wire iamrdy,
67
output wire psalgnerr,
68
output reg c0,
69
output reg c1,
70
output reg de,71
output reg ade,72
output reg [9:0] sdout,73
output reg [3:0] adout,
74
output reg [7:0] dout);

図 27

//
//
//
//
//
//
//
//
//
//

pixel clock
double pixel rate for gear box
IOCLK
serdesstrobe for iserdes2
data from dvi cabledata from dvi cable
other channel0 has valid data now
other channel1 has valid data now
other channel0 has detected//

other channel1 has detected////video preambles
data island preambles

//
//
//

I have valid data now
I have detected a valid new pixel
Phase alignment error//4 bit audio/aux data out

本研究の decode モジュールの定義 (decode.v からの抜粋)

27

の JP6，JP7 をショートすることでこの信号を接続することが出来るため，FPGA 回路
では特に何もしなくてもよかった．
今回使用したディスプレイ（On-Lap 1501）は、ディスプレイパネルの解像度は 1366 ×

768 ピクセルであり，PC から出力する際には問題がない．しかしスマートフォンから出力した際には解像度のやりとりがうまくいかず，640 × 480 の解像度に落ちてしまっていた．スマートフォンを Full HD のディスプレイに接続した際には 1280 × 720 ピクセル

(720p) の解像度になるため、720p の解像度がスマートフォンには最適と考えられる．
そこで，スマートフォンに見かけ上 720p のディスプレイに見せることを考えた．

FPGA から偽の EDID 信号を出力することで見かけ上別の解像度のディスプレイに見せることが出来る．Atlys FPGA ボードのサンプル回路のうち，EDID 信号を生成しているものを探したところ，Digilent 社からサンプルデータを手に入れることが出来た [18]．このサンプルで提供している EDID データを Monitor Asset Manager プログラム [19] で解析した画面が，図 28 である．様々な解像度をサポートしていることが分かる．Native
解像度は 1440 × 900 ピクセルになっている．本研究では EDID データを修正して図 29のように認識させることが出来た．Native 解像度含め 1280 × 720 ピクセルだけ認識されていることが分かる．以下ではどのように EDID を修正したかの詳細を記す．

EDID 規格では最も基本的な場合は 128 バイトの情報をディスプレイから送ることで解像度の情報を PC やスマートフォン側に伝える．表 1 にはその 128 バイトのうち，今回修正した部分に関する仕様を転記した [17]．この表の中で，特に 35〜37 バイト目，38〜53 バイト目，及び 54〜71 バイト目が解像度に関係している．最後の 54〜71 バイト目
は詳細なタイミングを記述する箇所であり，表 2 にその規格でのビットマップを示している．図 29 の Modeline の行で出る垂直同期，水平同期のフロントポート，バックポーチ，
同期信号幅等のタイミングの指定に対応している．
図 30 は，この修正した EDID を HDMI 信号の SCL, SCA を使ってやりとりする

Verilog コードである．ソースコードでは省略しているが，84 行目以降には EDID データを初期化して edid の配列に代入する initedid() の部分が書かれている．
このコードを組み込み，Atlys FPGA ボードの JP6，JP7 をオープンにすることで，PC 側には偽の EDID コードを見せることが出来，常に 720p の解像度のディスプレイであるかのように振る舞わせることが出来た．

28

MonitorModel name............... ATLYS
Manufacturer............. DIG
Plug and Play ID......... DIG0000
Data string.............. DIGILENTROCKS
Serial number............ n/a
Manufacture date......... 2011, ISO week 44
Filter driver............ None------------------------EDID revision............ 1.3
Input signal type........ Digital
Color bit depth.......... Undefined
Display type............. RGB color
Screen size.............. 380 x 300 mm (19.1 in)Power management......... Active off/sleep
Extension blocs.......... None------------------------DDC/CI................... n/a
Color characteristics
Default color space...... Non-sRGB
Display gamma............ 2.20
Red chromaticity......... Rx 0.644 - Ry 0.338
Green chromaticity....... Gx 0.290 - Gy 0.610
Blue chromaticity........ Bx 0.140 - By 0.070
White point (default).... Wx 0.313 - Wy 0.329
Additional descriptors... None
Timing characteristics
Horizontal scan range.... 31-80kHz
Vertical scan range...... 56-75Hz
Video bandwidth.......... 140MHz
CVT standard............. Not supported
GTF standard............. Not supported
Additional descriptors... None
Preferred timing......... Yes
Native/preferred timing.. 1440x900p at 75Hz (5:4)
Modeline............... "1440x900" 136.750 1440 1536 1688 1936 900
903 909 942 -hsync +vsync
Standard timings supported
720 x 400p at 70Hz - IBM VGA
640 x 480p at 60Hz - IBM VGA
640 x 480p at 67Hz - Apple Mac II
640 x 480p at 72Hz - VESA
640 x 480p at 75Hz - VESA
800 x 600p at 56Hz - VESA
800 x 600p at 60Hz - VESA
800 x 600p at 72Hz - VESA
800 x 600p at 75Hz - VESA
832 x 624p at 75Hz - Apple Mac II1024 x 768p at 60Hz - VESA
1024 x 768p at 70Hz - VESA
1024 x 768p at 75Hz - VESA
1280 x 1024p at 75Hz - VESA
1152 x 870p at 75Hz - Apple Mac II
1360 x 765p at 60Hz - VESA STD
1440 x 900p at 60Hz - VESA STD
1440 x 900p at 75Hz - VESA STD
1280 x 1024p at 60Hz - VESA STD
1280 x 960p at 60Hz - VESA STD
1280 x 720p at 60Hz - VESA STD
1152 x 864p at 75Hz - VESA STD
1024 x 768p at 75Hz - VESA STD
Report information
Date generated........... 2014/01/26
Software revision........ 2.70.0.989
Data source.............. File - NB: improperly installed
Operating system......... 6.1.7601.2.Service Pack 1
Raw data
00,FF,FF,FF,FF,FF,FF,00,11,27,00,00,00,00,00,00,2C,15,01,03,80,26,1E,78,2A,E5,C5,A4,56,4A,9C,23,
12,50,54,BF,EF,80,8B,C0,95,00,95,0F,81,80,81,40,81,C0,71,4F,61,4F,6B,35,A0,F0,51,84,2A,30,60,98,
36,00,78,2D,11,00,00,1C,00,00,00,FD,00,38,4B,1F,50,0E,0A,0A,20,20,20,20,20,20,00,00,00,FC,00,41,
54,4C,59,53,20,20,20,20,20,20,20,20,00,00,00,FE,00,44,49,47,49,4C,45,4E,54,52,4F,43,4B,53,00,12

図 28

もとの EDID データ29

表 1 EDID のビットマップ
Bytes
35―37
35

36

37
38―53

Description
Established timing bitmap. Supported bitmap for (formerly) very
common timing modes.
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Bit 7
Bits 6―0

720 × 400 @ 70 Hz
720 × 400 @ 88 Hz
640 × 480 @ 60 Hz
640 × 480 @ 67 Hz
640 × 480 @ 72 Hz
640 × 480 @ 75 Hz
800 × 600 @ 56 Hz
800 × 600 @ 60 Hz
800 × 600 @ 72 Hz
800 × 600 @ 75 Hz
832 × 624 @ 75 Hz
1024 × 768 @ 87 Hz, interlaced (1024 × 768i)
1024 × 768 @ 60 Hz
1024 × 768 @ 72 Hz
1024 × 768 @ 75 Hz
1280 × 1024 @ 75 Hz
1152x870 @ 75 Hz (Apple Macintosh II)
Other manufacturer-speciﬁc display modes

Standard timing information. Up to 8 2-byte ﬁelds describing standard display
modes. Unused ﬁelds are ﬁlled with 01 01
Byte 0

54―71
72―89
90―107
108―125
126
127

X resolution, divided by 8, less 31 (256―2288 pixels, value 00 isreserved and should not be used)
Byte 1 bits 7―6
X:Y pixel ratio: 00=16:10; 01=4:3; 10=5:4; 11=16:9.
(Versions prior to 1.3 deﬁned 00 as 1:1.)
Byte 1 bits 5―0
Vertical frequency, less 60 (60―123 Hz)
Descriptor 1
Descriptor blocks. Detailed timing descriptors, in decreasing
preference order. After all detailed timing descriptors,
Descriptor 2
additional descriptors are permitted:· Monitor range limits (required)
Descriptor 3· ASCII text (monitor name (required), monitor serial number
or unstructured text)
Descriptor 4· 6 Additional standard timing information blocks· Colour point data
Number of extensions to follow. 0 if no extensions.
Checksum. Sum of all 128 bytes should equal 0 (mod 256).

30

表2

EDID の詳細タイミング指定用ビットマップ

Bytes

Description

0 ―1
2
3
4

Pixel clock in 10 kHz units. (0.01―655.35 MHz, little-endian)
Horizontal active pixels 8 lsbits (0―4095)
Horizontal blanking pixels 8 lsbits (0―4095) End of active to start of next active.
Bits 7―4
Horizontal active pixels 4 msbits
Bits 3―0
Horizontal blanking pixels 4 msbits
Vertical active lines 8 lsbits (0―4095)
Vertical blanking lines 8 lsbits (0―4095)
Bits 7―4
Vertical active lines 4 msbits
Bits 3―0
Vertical blanking lines 4 msbits
Horizontal sync oﬀset pixels 8 lsbits (0―1023) From blanking start
Horizontal sync pulse width pixels 8 lsbits (0―1023)
Bits 7―4
Vertical sync oﬀset lines 4 lsbits (0―63)
Bits 3―0
Vertical sync pulse width lines 4 lsbits (0―63)
Bits 7―6
Horizontal sync oﬀset pixels 2 msbits
Bits 5―4
Horizontal sync pulse width pixels 2 msbits
Bits 3―2
Vertical sync oﬀset lines 2 msbits
Bits 1―0
Vertical sync pulse width lines 2 msbits
Horizontal display size, mm, 8 lsbits (0―4095 mm, 161 in)
Vertical display size, mm, 8 lsbits (0―4095 mm, 161 in)
Bits 7―4
Horizontal display size, mm, 4 msbits
Bits 3―0
Vertical display size, mm, 4 msbits
Horizontal border pixels (each side; total is twice this)Vertical border lines (each side; total is twice this)Features bitmap
Bit 7Interlaced
Bits 6―5
Stereo mode: 00=No stereo; other values depend on bit 0:
Bit 0=0: 01=Field sequential, sync=1 during right;
10=similar, sync=1 during left; 11=4-way interleaved stereo
Bit 0=1 2-way interleaved stereo:
01=Right image on even lines; 10=Left image on even lines; 11=side-by-side
Bits 4―3
Sync type: 00=Analog composite; 01=Bipolar analog composite;
10=Digital composite (on HSync); 11=Digital separate
Bit 2
If digital separate: Vertical sync polarity (1=positive)
Other types: VSync serrated (HSync during VSync)
Bit 1
If analog sync: Sync on all 3 RGB lines (else green only)
Digital: HSync polarity (1=positive)
Bit 0
2-way line-interleaved stereo, if bits 6―5 are not 00.

5
6
7
8
9
10
11

12
13
14
15
16
17

31

MonitorModel name............... ATLYS
Manufacturer............. DIG
Plug and Play ID......... DIG0000
Data string.............. DIGILENTROCKS
Serial number............ n/a
Manufacture date......... 2011, ISO week 44
Filter driver............ None------------------------EDID revision............ 1.3
Input signal type........ Digital
Color bit depth.......... Undefined
Display type............. RGB color
Screen size.............. 380 x 300 mm (19.1 in)Power management......... Active off/sleep
Extension blocs.......... None------------------------DDC/CI................... n/a
Color characteristics
Default color space...... Non-sRGB
Display gamma............ 2.20
Red chromaticity......... Rx 0.644 - Ry 0.338
Green chromaticity....... Gx 0.290 - Gy 0.610
Blue chromaticity........ Bx 0.140 - By 0.070
White point (default).... Wx 0.313 - Wy 0.329
Additional descriptors... None
Timing characteristics
Horizontal scan range.... 31-80kHz
Vertical scan range...... 56-75Hz
Video bandwidth.......... 140MHz
CVT standard............. Not supported
GTF standard............. Not supported
Additional descriptors... None
Preferred timing......... Yes
Native/preferred timing.. 1280x720p at 60Hz (5:4)
Modeline............... "1280x720" 74.250 1280 1390 1430 1650 720
725 730 750 +hsync +vsync
Standard timings supported
1280 x 720p at 60Hz - VESA STD
Report information
Date generated........... 2014/01/26
Software revision........ 2.70.0.989
Data source.............. File - NB: improperly installed
Operating system......... 6.1.7601.2.Service Pack 1
Raw data
00,FF,FF,FF,FF,FF,FF,00,11,27,00,00,00,00,00,00,2C,15,01,03,80,26,1E,78,2A,E5,C5,A4,56,4A,9C,23,
12,50,54,00,00,00,81,C0,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,1D,00,72,51,D0,1E,20,6E,28,
55,00,78,2D,11,00,00,1E,00,00,00,FD,00,38,4B,1F,50,0E,0A,0A,20,20,20,20,20,20,00,00,00,FC,00,41,
54,4C,59,53,20,20,20,20,20,20,20,20,00,00,00,FE,00,44,49,47,49,4C,45,4E,54,52,4F,43,4B,53,00,99

図 29

修正後の EDID データ

5.4 回転機能
180 度回転機能の実装に関しては，上下左右を反転することによって 180 度回転を実現した．DDR2 メモリからの読み出し部は，FBCtl.vhd 内で操作されており，最終的に 1
画面目への出力画像のアドレスの読み出しは pc rd addr という変数に，2 画面目への出力画像のアドレス読み出しは pc rd addr2 という変数に保存される（図 31）．変数の長さはどちらも 29 ビットであり，各アドレス読み取りの位置は図 22 と対応している．

32

21 module DDCEmu(CLK_I, RESET_I, SSCL, SSDA );22
input CLK_I;
23
input RESET_I;
24
input SSCL;
25
inout SSDA;
2627
reg [7:0] edid [0:255];
28
reg [7:0] id;
29
reg [7:0] index;
30
31
reg sen;32
33
wire [7:0] SRD;
34
wire [2:0] ST;
35
wire CLKSC = CLK_I;
36
37
I2CSlaveMod i2cslave(
38.RST(!RESET_I),
39.CLK(CLKSC),
40.SCL(SSCL),
41.SDA(SSDA),
42.RD(SRD[7:0]),43.SD(edid[index][7:0]),44.RE(SRE),
45.SE(SSE),
46.ID(SID),
47.EN(sen),48.STP(SSTP),
49.STAT(ST),50.ERR(SERR)
51
);
52
53
initial begin
54
initedid();55
index = 0;56
sen <= 0;
57
end
58
59
60
always @(posedge CLKSC or negedge RESET_I) begin
61
if (RESET_I == 0) begin
62
index <= 0;63
sen <= 0;64
end else begin
65
if (SID) begin66
id <= SRD[7:0];
67
if (SRD[7:1] == 7’h50)
68
sen <= 1;
69
else
70
sen <= 0;
71
end
72
73
if (SSTP) begin74
sen <= 0;
75
end
76
77
if (SSE && sen)78
index <= index + 1;
79
80
if (SERR)
81
index <= 0;
82
end
83
end
348 endmodule

図 30 EDID をコントロールする Verilog コード (DDCemu.v より抜粋)

33

1819
1820
1821
1822

pc_rd_addr(25 downto 15) <= tx_wr_buf_divaddr1(25 downto 15);-- vertical addr 1 画面目
pc_rd_addr(14 downto 2) <= conv_std_logic_vector(pc_rd_addr_h * RD_BATCH ,13);-- horizonal addr 1 画面目
pc_rd_addr2(25 downto 15) <= tx_wr_buf_divaddr2(25 downto 15);-- vertical addr 2 画面目
pc_rd_addr2(14 downto 2) <= conv_std_logic_vector(pc_rd_addr_h * RD_BATCH ,13);-- horizonal addr 2 画面目

図 31

出力画像のアドレス読み出しコード (FBCtl.vhd より抜粋)

上下反転は，DDR2 メモリ内に格納された垂直方向のアドレスを読み取る pc rd ddrと pc rd ddr2 の 15〜25 ビットを逆読みすることで実現した．
左 右 反 転 も 同 じ く ，DDR2 メ モ リ に 格 納 さ れ た 水 平 方 向 の ア ド レ ス を 読 み 取 る

pc rd ddr と pc rd ddr2 の 2〜14 ビットを逆読みすることで実現できるのだが，各アドレス内にある複数のピクセル分の画像情報が入っているため，少し複雑になる．アド
レス内のデータ情報を DDR2 メモリから読み込む前に逆順にする必要があり，それも行うことで左右反転を実装した．上下反転と左右反転の機能を合わせることで，180 度回転を実現した．

5.5 スマートフォンからの出力画像の回転
スマートフォンからの出力画像をディスプレイ全体を用いて出力したいので 90 度回転と出力画像から黒幕以外の任意の部分を切り抜く機能を実装する必要があった．しかしながら先述した細川の回路システムで 90 度回転機能を実装するためには，DDR2 メモリ内に格納された情報のアドレスの位置関係に直交した部分を指定して出力する必要がある．
さらに単純な直交ではなく，水平方向のデータは複数ピクセル分の画像情報が入っているため，90 度回転した画像をアドレス指定して出力するのが非常に困難であることが分かった．
本研究では FPGA での 90 度回転機能の実装を諦め，スマートフォンからの出力自体を90 度回転できないかを模索した．その結果，同じ出力変換アダプタを用いても，Motorola
XOOM や Galaxy Nexus など一部のモバイルデバイスでは HDMI 出力を行ったときに自動で回転し，デバイスを物理的に回転させても出力画像が変化せず，図 32 のように出力されるものがあることを確認した．この現象について調べたが，OS ではなくデバイス側で行われているだろうということがわかった程度で該当する技術を発見することはできなかった．恐らくは一部のデバイスに試験的に実装されたクローズな技術と考えられる．

34

図 32

Galaxy Nexux SC-04D の HDMI 出力

この技術が使われたデバイスを用いて，「画面回転制御」[20] と呼ばれるアプリをデバイスに導入することによって手動で画面を回転させて，図 33 のように出力することに成功した．これにより 90 度回転と出力画像から黒幕以外の任意の部分を切り出す機能を実装する必要がなくなった．

5.6 ディスプレイの制作
システムの全体像は図 34 のようになる．物理的な配線図は図 35 のようになり，このよ
うになるように配線を行ってモバイルタイルドディスプレイを制作した．設計図は図 36である．サンドイッチマンのように体をベニヤではさむことも考えたが，FPGA の強度などを考慮して，FPGA とバッテリをベニヤで挟み込んで正面に 1 枚だけ提げるような形にした．
ディスプレイの固定については，On-Lap 1501 に付属していたスタンドブリック（ディスプレイ固定用の金具）を用いた．これは裏面に両面テープが付いており，それを用いて固定するというものであったが，ベニヤに対しては粘着力が足りなかったため，図 37 のように螺子穴を空け，螺子を使って固定した．螺子はスタンドブリックに極力干渉しない
超低頭螺子を用いた（図 38）．また，今回用いた On-Lap 1501 は，先述した通り上下左右で枠の大きさが違うので，綺麗にディスプレイの液晶部分を並べるには，180 度回転し

35

図 33

画面回転制御による画面回転

図 34 システム全体図36

図 35 物理的な配線図

図 36 設計図

37

図 37

スタンドブリックの固定て配置する関係上左右にも少しだけずらして配置する必要がある．具体的には左右の差（左 21mm − 右 17mm = 3mm）程ずらして固定した（図 39）．しかしながら単純にベニヤにスタンドブリックを付けてディスプレイを設置しただけではディスプレイがベニヤに対してわずかに浮いてしまった．このためスタンドブリックと同じ用にマジックテープを螺子で固定し，ディスプレイとベニヤをマジックテープで接着することで，浮かないようにした．

FPGA の固定については，FPGA の裏面を傷つけないように FPGA 全体をわずかに浮かせるための足（図 40 が四隅にあるので，それを分解して螺子を長い物に取り替えることでベニヤへ固定した．
バッテリの固定については，螺子を一部ベニヤから浮かせて固定することで突起物を作り，それに対してビニールテープや針金を使うことで固定した．スタンドブリックやFPGA のように完全に固定しないのはバッテリの充電や交換のために取り外すことを考慮したからである．
制作したモバイルタイルドディスプレイを開き，配線をすると，図 41 のようになる．
また，実際にスマートフォンから画面を出力し，サンドイッチマンのように首から提げて使ったのが図 42 である．

38

図 38 超低頭螺子

39

図 39

物理的な左右の補正

図 40 FPGA を浮かせるための足（赤線内部）

40

図 41

実際の配線図41

図 42 実際の使用状況

42

6 評価
6.1 32 型テレビとの比較
エンタテインメントコンピューティング 2013（EC2013）にて発表を行ったが，「同程度の 1 枚のディスプレイでは駄目なのか？」といった質問が多かった．このため今回作成したタイルドディスプレイを同程度のディスプレイと比較を行った．
今回使用したモバイルディスプレイの画面の大きさは 15.6inch なので，タイルドディ
スプレイにすると 32 型テレビと同程度の大きさになる．このため 32 型テレビとの比較を行った．32 型テレビの性能の例を表 3 に示す．
コストについては，タイルドディスプレイの総費用はディスプレイが 1 枚あたり約20,000 円，バッテリが 1 個あたり約 9,000 円，FPGA ボードが 1 枚あたり約 10,000 円，
その他の配線やベニヤ，螺子などの費用を合わせると全体で 150,000〜160,000 円程度である．32 型テレビの価格は約 30,000〜60,000 程度なので，それに比べて 4〜5 倍の費用がかかっていることになる．低コストで大型のディスプレイを実現できるのがタイルド
ディスプレイの利点の 1 つであるが，その利点が失われてしまっている．理由としてはモ
バイルディスプレイが同サイズのディスプレイよりコストがかかることと，使用したモバ
イルディスプレイのサイズが小さかったため，大したコスト削減にならなかったと考えられる．今後今回使用したモバイルディスプレイより安価でサイズの大きいものが流通すればコストを抑えることができると期待される．
重さについては，ベニヤ，配線，FPGA，バッテリ（260g×4 個）などの全てを含めた総重量は 8.4kg であった．一般的な 32 型テレビの重量は 8.0〜9.0kg 程度であり，32 型
テレビにバッテリを含めると，9.0〜10.0kg 程度になるので，有意な差がある．
消費電力については，バッテリ 1 個あたり 50Wh（10000mAh × 5V）で，バッテリを

表 3 32 型テレビの性能の例（価格.com 2014 年 1 月 27 日調べ）

製品名

REGZA 32J7
シャープ

AQUOS LC-32H10SONY

BRAVIA KDL-32W600A

メーカー

東芝

Smart TV 32LS3500
LG エレクトロニクス

最安価格

35,365 円
8.7kg
65W

46,500 円
7.7kg
72W

54,800 円
8kg
81W

37,800 円
9.1kg
60W

重量
消費電力

43

4 個使い，持続時間が 4 時間のため消費電力は 50W である．32 型テレビの消費電力は様々であるが，大抵の 32 型テレビの消費電力は 60〜80W 程度なので，それに比べれば消費電力は抑えられていると言える．
バッテリの持続時間は約 4 時間程度であった．モバイルとしてはまずますの持続時間だが，サンドイッチマンとしての運用を考えると 6 時間以上は持続して欲しい．バッテリの交換をすることによって時間は増えるが，今回の配線方法ではバッテリの交換が非常に困難である．予備バッテリの携帯数は用途に応じてケースバイケースで対応するしかな
い．しかしながら一般のディスプレイとは違い，電源供給のない場所でも使用することができる．

6.2 持ち運ぶことができるか
総重量が 8.4kg あるというのは持ち運ぶという点においてはかなり重いように感じられる．実際に首から下げてみて非常に重量を感じた．対策としては首から下げるのではな
く肩に掛けるショルダータイプにすれば重量感が緩和されるのではないかと考えられる．
ディスプレイ (895g) とバッテリ (260g) のみを合わせた総重量は約 4.6kg である．FPGA
ボードもバッテリよりは軽いので，FPGA ボードを含めても約 5kg 程度だろうと考えられる．つまりベニヤ，螺子，配線などで 3.5kg 程度の重さがある．このため配線やベニ
ヤ，螺子などを軽くすることができればもう少し軽くできるであろう．螺子は難しいが，ベニヤをアルミにしたり，配線に関しては無駄に長いケーブルを使っているので，必要最小限の長さのケーブルを用いたりすれば軽くできると考えられる．
見た目について，EC2013 で「安っぽい」とか「格好が悪い」といった意見を言われた．
どちらも恐らくベニヤがかなり見えていることからそのような印象を受けるのだと思われる．ベニヤが見えないようにもっと切り詰めたり，ベニヤではなく金属を用いればそれらの印象を払拭できるのではないかと考えられる．
最大の問題として，「持ち運びが困難」という点と，「組み立てが面倒」という点が挙げられる．ディスプレイ 1 枚あたりの大きさが小さくても，今回制作したタイルドディス
プレイの場合，ベニヤがあるので 1 枚の大きなディスプレイを運んでいるのと大差がな
い．これに関してはディスプレイを設置する板を折りたためるようにしなければいけないが，折りたたみなどのギミックを付けると，ディスプレイを支えるだけの耐久度が失われそうで不安である．例え折りたたみのギミックが付けられ，耐久度のあるものを使おうとしてもコストがかかってしまうといった問題も発生する．組み立てについてもギミックを付けると耐久度の問題が発生する．組み立てで簡略化できそうなのは動かさないであろう

44

ディスプレイや FPGA ボード，配線などができそうではあるが，バッテリに関してはやはり交換のために取り外す必要が出てくる．そのためにバッテリを外側に取り付けるという手段もあるが，外に出したバッテリが邪魔になったり，配線を伸ばしたりしないといけないので便利にならない可能性がある．これらの問題に関しては良い解決方法を考案でき
なかった．

45

7 まとめと今後の課題
モバイルディスプレイを 4 台用いることで，1 枚のディスプレイを使うよりも軽く，低消費電力のモバイルタイルドディスプレイを開発し，スマートフォンから直接出力出来るようになった．利便性での今後の課題としては，持続時間を長くすること，重量をもっと軽くすること，組み立てを簡単にすることといった課題がある．ただし，これらはデバイスに依存する部分が大きいので，今後のデバイスの進化に期待する．
機能面での今後の課題としては，細川の研究の問題点である高解像度への対応や任意の解像度への対応，高精度拡大といった点がある．全てのスマートフォンからの出力に対応するために 90 度回転も必要である．現在のスマートフォンでは 720p で出力されるので，それ以上の解像度を出力することが出来ない．それ以上の FullHD といった解像度で出力できるタブレットなどなら高解像度に対応することも可能である．
今回解決できなかった問題の 1 つである 90 度回転だが，これを実装しないと全てのス
マートフォンの出力に対応することができない．90 度回転せずに先述した図 20 のように
ディスプレイに出力することは可能ではあるが解像度が悪くなってしまう．ただし，この機能の実装は回路が非常に複雑である．対策としては FPGA 内での DDR2 メモリへの保存時に水平方向に連続するピクセル数を限界まで小さくして多少は指定しやすいようにするといった方法があるが，システムの根幹を弄るのでシステム全体を書き換える必要がある．また，その手法を取ると，メモリが足りないと思われるので，現在の FPGA ボー
ドでは実現が難しいと考えられる．
高精度拡大に関しては，FPGA だけではなく，一部をディスプレイにやらせるといった方法も考えられる．近年のディスプレイは多少解像度が低い入力でも拡大して表示するものが多い．質の良いディスプレイであれば高精度な拡大機能が付いている場合があるので，下手に FPGA 内部で拡大するよりも高精度で出力される．これを利用し，FPGA からの出力を低解像度にすることによってディスプレイに拡大してもらうことが可能になるだろうと考えられる．

46

参考文献
[1] SAGE，Website．http://www.sagecommons.org/[2] 国 内 最 大 級 の デ ジ タ ル サ イ ネ ー ジ「SKYSION」、成 田 空 港 で

6

26

月

GATE

VI-

日 よ り 稼 動 開 始 ，RBBTODAY．

http://www.rbbtoday.com/article/2012/05/31/89937.html[3] Atlys FPGA ボード，Digilent 社．http://www.digilentinc.com/atlys/[4] Quadro K6000，NVIDIA 社．http://www.nvidia.co.jp/object/quadro-desktopgpus-jp.html[5] Radeon R9 290X，AMD 社．http://www.amd.com/jp/products/desktop/graphics/
R9/Pages/amd-radeon-hd-r9-series.aspx[6] GeForce GTX 780 Ti，NVIDIA 社．http://www.nvidia.co.jp/object/geforce-gtx780-ti-jp.html[7] REX-USB3HDMI-DH，RATOC 社 ．http://www.ratocsystems.com/products/
subpage/usb3hdmidh.html[8] L

Renambotvironment,
Computer

ら,

SAGE:

Electronic
Science,the

Scalable

Visualization

UniversityofAdaptive

Graphics

En-

Laboratory,

Dept.

of

IllinoisatChicago,2004.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.6788&rep=rep1&type=pdf[9] HDMI，Wikipedia．http://ja.wikipedia.org/wiki/HDMI[10] Miracast，Wikipedia．http://ja.wikipedia.org/wiki/Miracast[11] Splashtop，Wibsite．http://www.splashtop.com/[12] MHL，Wikipedia．http://ja.wikipedia.org/wiki/MHL[13] 細川 大樹，FPGA を用いたタイルドディスプレイの開発，電気通信大学情報工学科
卒業研究，2013．

[14] 根元 稔，FPGA を用いた大規模マルチディスプレイシステムの考案，電気通信大学
情報工学科卒業研究，2011[15] On-Lap 1501，GeChic 社．http://www.tekwind.co.jp/products/GEC/entry 10112.php[16] Video
3A

Connectivity
FPGAs,

Using

TMDS

Xilinx,

XAPP460

I/O

inSpartan-

V1.1,

2011.

http://www.xilinx.com/support/documentation/application notes/xapp460.pdf
47

[17] Extended

displayidentification

data,

Wikipedia,

http://en.wikipedia.org/wiki/Extended display identification data[18] EDK demo project that demonstrates using HDMI on the Atlys, Digilent Inc.,
http://www.digilentinc.com/Data/Products/ATLYS/Atlys HDMI PLB demo.zip[19] Monitor Asset Manager, http://www.entechtaiwan.com/util/moninfo.shtm[20] 画面回転制御アプリ，eflow inc．https://play.google.com/store/apps/details?id=jp.eflow.util.rotation48

謝辞
本研究を進めるにあたり、ご指導を頂いた修士論文指導教員の成見 哲教授および，岩崎
英哉教授に深く感謝致します。

49