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

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



[第20回]


●CPLDの内部構造

前回からの続きです。

EPM7032SLC44をターゲットにして書いたVHDLプログラムをコンパイルしたところ、下のように表示されました。
Total macrocells 18/32(56%)
Total pins 29/36(81%)
pins(端子)は使っているだけの数値になりますから、その通りですが、今回程度の回路でmacrocellsを56%も消費してしまうのはなぜでしょうか?
それを理解するには、やっぱりCPLDの構造を知る必要がありそうです。

というところで前回は終りました。

MAX7000シリーズについては[第7回]でData Sheetから引用してその一部をお見せしました。
下の図版もそのときにお見せしました。

[出典]ALTERA MAX7000 Data Sheet

この図を見るとMacrocellというのが基本構造で、それが16個集まってLAB(Logic Array Block)を構成しているようです。
EPM7032SLC44はその名からも推測できるように、32個のMacrocellから成っていますから、LAB AとLAB Bの2個のLABから構成されているようです。
しからばMacrocellはどういうものなのかといいますと。

下の図で説明されています。

[出典]ALTERA MAX7000 Data Sheet

何だかごちゃごちゃしていてよくわからん図なのですが、この図には見るべきポイントがあります。
これはEPM7032SLC44に32個あるMacrocellのうちの1個を取り出した模式図と解釈できます。
図の左側にはロジックゲートのかなり複雑な構成が見えます。
ここがCPLDの基本的な構成要素のようです。
ここの構成単位をVHDLプログラムの指示に従って組み合わせることで複雑なロジック回路を生成できる、ということだろうと解せます。
問題は図の右側部分です。
Programmable Registerという説明がついた回路が1個(!)あります。
図から推測するに、これはD−FFに代表されるラッチ回路のようです。
それが1個のMacrocellにはたった1個しかありません。
つまり1ビットのデータラッチを定義すると1個のMacrocellを消費してしまう、ということになります。
ラッチを使わない回路ならどうなのかといいますと、図の一番右側にはTo I/O Control Block(またはTo PIA)という矢印が1本だけあります。
つまりラッチを使わない場合でもある信号を外部端子に出力する(または内部的に出力する)と、その場合でもMacrocellを1個消費してしまいます。
図の左側の部分では複数の信号(max 36 Signals?)を入力できるのに、その信号を使って構成した出力信号はたった1本しか許されない、という制約がこの図からは読み取れます。
そういうことだったのでした。

何回もお見せした、今回VHDLプログラム化したもとの回路図です。


74HC174と74HC173で各4個のデータラッチを使用しています。
これは出力としても使われています。
ということでここで8個のMacrocellが使われていると考えられます。
74HC244はラッチではありませんが7ビットのデータをそのまま外部に出力していますから、ここでも7個のMacrocellが使われていると考えられます。
これで15個のMacrocellを消費していることになります。
74HC138と74HC32の回路で多分3個のMacrocellを消費していると考えると合計18個になって計算が合います。

このことから、ある回路をCPLD化したい場合にどの程度の集積度のCPLDを使うかという大体の目安がつけられるのではないかと思います。
目的とする回路のデータラッチの数と出力信号の数の合計が一応の目安になります。
当然そのほかにロジック回路があるはずですからそれも数に入れると、データラッチの数と出力信号の数の合計をさらに3割程度増やした数のMacrocelで構成されるCPLDが多分必要になると考えられます。

CPLD入門![第20回]
2019.3.11upload

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