2019.4.13
前へ
次へ
ホームページトップへ戻る

[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第33回]


●PIC16F57

またまた間が4日も空いてしまいました。
この間は思いっきり悩んでしまう毎日でした。
前回の終わりに書きましたように、もう少しは7セグメントLEDを明るくしたいという思いと、32KBのSRAMをたった8バイトのバッファに使うというのがいくらなんでもひどすぎないか?という思いのために今一度回路について考え直すことにしました。
やっぱり何もかもCPLDにしてしまおうというのはちょっと硬直化した思考のように思えます。

CPLDにも不得手なことはあります。
今まで書いてきましたように、データラッチ(フリップフロップ)を多用する回路はせっかくの資源を大きく食ってしまいます。
FPGAや最近のCPLDではかなりの容量のRAMを内蔵しているものがあるようですが、当面のところの素材として考えているMAX7000SにはMacroCell当たり1個のFFしかありません(EPM7128の場合わずか128ビットしかありません)。
しかもそのFFを1ビット使うごとに貴重なMacroCellを1個まるごと消費してしまうのですからたまりません。

そういうことならここはやっぱりPICでいくべきでありましょう。
PICを使った7セグメントLED表示回路ははじめてではありません。
周波数カウンタ組立キットではPIC16F883を使いました。
そうそう。
ND80KL/86マイコンボード組立キットでも、7セグメントLED表示回路にPIC16F883を使っています。
どちらも考え方は同じで、PIC16F883でプログラムによって7セグメントLEDをダイナミック表示しています。
電流が多く流れるカソード側には74LS145を使っています。

できるだけローコストにしたいというコンセプトでCPLD化を進めてきたのですが、やっぱり無理はいけません。
ここはPICでいくのが最良の策、と決めましたが、せめてできるだけローコストなPICを使いたいもの、ということで、PIC16F883に代わるものを物色していましたところ、めっちゃ安いPICをみつけてしまいました。
それが今回のお題にありますPIC16F57です。
これは安い。
しかもPIC16F883と同じ28pinです。

これこれ、これでいきましょう。
望外の安価なPICがみつかったことに喜んでしまって、詳しく調べもしないでプリント基板を作り直してしまいました(ま。同じPICなのだからなんとかなるでしょう)。
ということで再び作ってしまったプリント基板です。

FF回路の主要部分をPICに任せてしまうことにすれば、CPLDの内部資源の消費は大幅に減ってしまうだろうと見込んで、PIC18F14K50のUSBIF回路まで作りつけてしまいました。

しかし。
詰めが甘くて苦しむのは毎度のことなのですけれど、結果は今回も思いっきり悩むことになってしまいました。
まだUSB回路にまでは手をつけていません。
それ以前の問題です。
そもそもPIC16F57はPIC16F883と同じ28pinなのにI/Oポートの数が少ない!
もっともこれはプリント基板を作る時点でわかっていたことですけれど。
ま。
少なければ少ないなりにそこは工夫でなんとかなるだろう(考えが甘かった!)。

そんなことよりも。
プリント基板ができてきたので、それよりも少し前に入手しておいたPIC16F57にやっと取り掛かったのでありますが。
まず第一にPICプログラマがPIC16F57を認識してくれません。
いままで使ってきたPIC16Fとは電源PINからして配置が違います。
これもプリント基板を作る時点でわかっていたことなので、そのための対策はしたのですけれど、それだけではありませんでした。
PICプログラマでPIC16F57を認識させるためにはさらなる努力が必要でした。

それだけではありませんでした。
実際にPIC16F57のためにプログラムの作成にかかったところ、これがまたPIC16F883などとは大きく異なっていることがわかりました。
PIC16F883と同じつもりでプログラムを書いたところエラーメッセージがどばっと出たことから、使える命令の種類が相当に少ないこともわかりました。
そのほかにもエラーメッセージが出ないけれども実行するととんでもないことになってしまう意外な落とし穴があったりして、しっかり悩んでしまう毎日でありました。
そのあたりのことにつきましては私自身の備忘録を兼ねて、次回から少しずつ書いていくつもりです。

あ。
うまくいかなくてしっかり悩んでしまったのはここ数日間のことで、本日、まださきほどほんの数時間前のことですけれど、めでたくクリアすることができました。
これこのとおり。

まだPIC18F14K50(USBIF)部分は未作業です。
ですから下側の20pinICソケットにPIC18F14K50は実装していません。
7セグメントLEDはPICを使う前よりは明るくなりましたが、照明を当てて撮影するとやっぱりまだ見難いです。

遮光フィルムを置いて撮影してみました。


MacroCellの使用量は大幅に減りました。

128個のうち消費したのは46個(36%)です。
まだ82個も残っています。
PIC18F14K57を使ったUSBインターフェース回路はEPM7032SLC44で作りました([第21回])。
EPM7032SLC44のMacroCellは32個ですから、82個も残っていれば十分でありましょう。

CPLD入門![第33回]
2019.4.13upload

前へ
次へ
ホームページトップへ戻る