はじめに
はじめまして、Latticeチーム新人のりょすです!
これから何回かに分けて、ある開発についての仕様検討 ~ 完成までのお話をしていこうと思っています。
ある開発ってなに?と思うかもしれませんが
先輩Fさんより 「FPGAちゃんといじれるの?」というグサッとくるようなことを言われてしまい、
FPGA勉強のためにもFPGAを使って何か動かそうと思いついたのがキッカケになります。
製作したものは、温度センサー、7セグLED をFPGAで制御するものになります。
使用する FPGA は Lattice社のXO3LF Starter Kit 評価ボードに搭載の XO3LF というデバイスになります。

どんな仕様、ブロック図、RTL設計、デバッグなどを「お恥ずかしい失敗談」と共にお伝えできればいいなと思っています。
このブログを読むのにおすすめの人は、こんな人たちかな?と考えています。
・Lattice FPGA、設計ツール Diamondを初めて使う人、検討している人
・RTL(Verilog)にてSPI通信、Lチカをしてみたい人
次回以降、「Latticeのツールの使い方」や「SPI通信のRTLコーディング」などちょっとためになる情報を全9回に分けて更新していきますので、読んでいただけると幸いです!
コンセプト決め ~仕様機能決め、ブロック図まで
開発に至った経緯
入社してまもなく、先輩Fさんとの会話でこんな話に
りょす 「FPGAって奥が深いというか、大学でも少し触れたけど想像以上に自由度高いですよね。」
先輩Fさん 「そうだねー、その自由度ゆえに少し難しい部分もあるけどFPGA使いこなせたら何でもできるよね。」
りょす 「FPGA使いこなせるようになりますかね、、、?」
先輩Fさん 「あ、じゃあさ勉強がてらFPGA使って何か開発してよ!楽しそうじゃん!」
りょす 「勉強にもなりますしね!、やります!」
ちょっとしたきっかけから、FPGAを使った開発をすることになりました。
コンセプト決め
早速、コンセプトから決めていこうと思い、なにか課題を解決できたら良いなと思い、考えていました。
夏の時期というのもあって、暑くて集中ができません。
「今何℃くらいあるんだろう?」と思っても、うちに確認する温度計がありませんでした。
そこでふと「室内の温度を確認出来たらうれしいなぁ」と思いました。

温度が見れて、温度によってエアコン付けたり消したり、、、なんて考えましたが、まず第一歩目として温度を計測してその温度を何かに表示できるようなものをつくろうと思いました。
そこで今回のコンセプトはちょっとしたときに温度が確認できる製品、
その名も「室内温度みまもり-Ty(隊)」というものにしようと決めました。
Ty とはアメリカのスラングの一種で、「Thank you」の頭文字 T と Y を取ったものです。
感謝を忘れない人間でいたい、というりょすの思いも込められています。。。
コンセプトが決まり、メラメラとやる気が湧き出すりょすでした。
機能と仕様決め
コンセプトが決まったら、次に機能と仕様決めにとりかかります。
機能は、温度センサから温度を取得して、その情報を7セグLEDに表示するものとします。
仕様として、温度15℃以上38℃未満の場合、500ms間隔で取得した温度を7セグに表示する仕様と温度15℃未満または、38℃以上の時に7セグLEDを全灯させる警告を仕様としました。
普通に生活をしている中で、温度をいちいち小まめに見ることはないといった理由から、500ms周期で温度センサーとやり取りするようにしました。また、温度範囲について調べてみるとどうやら夏場に室内で快適に過ごせる温度範囲が25~28℃らしいので、この温度範囲を参考に ±10℃ ずつ上限(暑すぎる)と下限(寒すぎる)という指標を決めました。
表にまとめると以下の感じです。
表1. 機能と仕様一覧
機能 | 仕様 | |
温度表示 |
7セグLED に表示 |
温度15℃以上、38℃未満の時に温度を表示 |
温度15℃未満、または38℃以上の時にLED全灯(警告) |
機能と仕様も決まり、わくわくしています!
部品選定とブロック図
機能と仕様も決まったら、次に部品選定と電源構成を考えていきます。
XO3LF評価ボードについて、USB 5V供給からLDOを通して 3.3Vにて動作をおこないます。XO3LFは 3.3V単一動作可能なデバイスなので、このFPGAを軸に3.3V動作できる温度センサーを使用したいと考えました。
そこで、アナログデバイセズ社の温度センサー ADT7310を使用しました。選定した理由としては3.3V動作、-55℃~150℃まで測定できるデバイスで、今回の仕様の温度範囲を測定可能だからです。
7セグLEDについて、持っていた4桁の7セグLED OSL40562-IRを使用しました。
温度表示は4桁中右から2桁を使用し、警告は温度表示に使用する2桁を全灯させます。
また、デシマルポイントは今回は使用しないこととします。
単三電池2本を電源としてDC/DCコンバーターXCL102から7セグLEDへ電源供給をおこないます。
電源ラインと信号ラインを図にまとめると以下のようになります。

ポイントとしては、3.3V単一駆動であること、7セグLEDはGPIOで、温度センサはSPI通信で制御することになります。
この製品の制作に余裕があったら、もう少し機能を追加しようと思っています。(例えば無線通信とか、、)
第一回目は以上で終了となります。
次回はFPGA設計ツールLattice Diamondを実際に使ってみて評価基板の動作確認まで行えるといいなと思っています。
では、また次回!Seeya!
Lattice FPGA 入門ブログについて
全記事を通して、温度センサーにて取得した温度(SPI通信)を、FPGA内部で変換して7セグLED表示器に表示するモジュールを製作しています!
もし、「この新人君は何を作っているんだろう?」と興味を持っていただいた方がいましたら
ぜひ以下ページより、モジュールの制作過程や全体像をチェックいただけると嬉しいです!