連載
» 2015年12月11日 07時00分 UPDATE

MAX 10 FPGAで学ぶFPGA開発入門(5):よろしいならばダイナミック点灯だ――FPGAでLEDをダイナミックにLチカさせる (1/6)

単純なLチカならばFPGAでもそう難しくない。ただ、ダイナミック点灯やそれに伴うソースの最適化については“ならでは”のポイントが散見される。今回も連載で利用している「MAX 10 FPGA 評価キット」の読者プレゼントをご用意。

[大原 雄介,MONOist]

 アルテラ「MAX 10 FPGA」を利用してFPGA開発の基礎を学ぶこの連載、前回(FPGAのLED制御プログラムを深く理解する)はArduino I/Oを利用し、7セグメントLED1桁でのカウントアップを実装してみたが、今回はこれをもう少し展開してみたい。まずはダイナミック点灯への変更を行う。

photo Photo00 前回の7セグメントLED 配線図

 前回の配線図(Photo00)はアノードコモンをオンボードのPMIC 3.3V出力につなぐ形で、後はそれ以外のピンを制御する形で実装してみた。この方式の場合、LEDは常時点灯する形になる。1桁だけを表示するならこれでもいいのだが、桁数を増やそうとすると途端にピン数が足りなくなる。

 利用した7セグメントLED「HDSP-K211」の場合、点灯時は平均37mWほど消費するので、全桁+小数点を表示させると約300mWほど消費する形になる。この状態で桁を増やすと、4桁なら最大で1.2Wほど消費することになり、PMICの最大定格(連続出力最大800mW)を超えてしまう(実際はその前にピンが足りなくなるが)。これは賢明とは言いにくい。

ダイナミック点灯を実現する回路とプログラム

図1  ダイナミック点灯に対応すべく回路も変更した Photo00_1 ダイナミック点灯に対応すべく配線も変更した

 ということでダイナミック点灯である。これは要するに同時に発光するLEDは1本に留めるが、発光させるLEDを高速に切り替える事で、あたかも同時にLEDが発光しているように見せかけるという手法。多桁の表示などではごく一般的に用いられている手法である。

 List 1はこれを強引に実装してみたものだ。ちなみに配線も少し変更している(Photo00_1)。ダイナミック点灯の場合、一度に表示されているLEDは1つだけなので、無理にPMICから電源を取らなくても、MAX 10のI/O pinの出力(最大25mA)でもそれなりに明るく光る。このため、7セグメントLEDの13番pinを、J5.3(ArduinoのI/O 5番に相当)に切り替えている。

       1|2|3|4|5|6 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.