
CPLD(complex programmable logic device)の略で、論理回路をプログラムで組むこ
とができる。これにより、PICとは比べられない速度が得られる。
利点としては、プログラムの書き換えができるため、デバッグが非常に楽であること
があげられる。論理回路を手配線で組み、しかもデバッグまでするのでは、時間も
コストもかなりかかると推測できる。この点から論理回路をプログラムで書き換えが
可能であることのメリットは非常に大きいことが分かる。
CPLDの利用目的は、PICでは性能(主に速度)的に使用が厳しいデバイスとの接続の際の、
中間デバイスとして用いることである。これを利用した最終段階ではカラー液晶に利用した
いと考えている。近い目標としてはSRAMの制御のために利用することにした、SRAMは、高
速に大容量を読み書きできるデバイスである。今回のCPLDの役割は、・PICだけでは通信不
可能な速度で通信すること・PICのpin数を補うこと。の二つが考えられる。
今回はCPLDのプログラムをVHDLという言語を用いて書いた。通信テスト・動作テストを兼
ねて電子工の“Hello World!”であるLEDの点滅を試みた。短いプログラムなので、全部
載せることにした。アルゴリズムは、単純で、
VHDL習得希望者はいないと思うので、軽い説明とする。上3行は、C言語でいうincludeと同
じである。この行がif, then, =, +, などの分岐の文や、計算の文を書くために必要である。
Portの()でくくられたなかに、CPLDの外部との接続を書く。この例ではclkは外部からデー
タを受けている。逆にled_outは外部にデータを出力している。If文のところの意味はクロッ
ク信号が変化して、かつその変化後の値が1の時counterを増やすというものである。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity test is port( clk:in std_logic; led_out:out std_logic); end test; architecture Behavioral of test is signal counter:std_logic_vector(20 downto 0); begin process(clk) begin if clk'event and clk='1' then counter<=counter+1; end if; end process; led_out<=counter(20); end Behavioral;
なお、PLDに興味を持ってもらえたならばFPGA,CPLD Quartus(アルテラ社のPLD書き込みソフト) Xilinx IDEにもそれぞれ対応したページが用意してあるので 一度ご覧ください。
AND素子OR素子を代表するデジタル回路の基礎。 信号をhighかlowかで入力値を演算する。
高速で通信でき、かつ、比較的容量の大きいメモリ
論理回路系を使うときにつかう、順番に入出力を行うために 論理回路にhigh→low→high→lowを繰り返す信号を入力 する。これをクロックと呼びその速度を周波数であらわす。 PCのCPU性能に書かれている周波数もこれのこと
ある値に1を加えること。またはそれを繰り返すこと
あるデバイスとあるデバイス間で通信する際に、間に挟むデバイス。 今回は、速度の遅いデバイスから速度の速いデバイスに接続する際に 少しでも速度を上げるために間に中間デバイスをはさんでいる。
8MHzは一秒間に8000000回クロックを動かす。 2の20乗は 2097152でおよそある。 よって2097152/8000000がおよそ1/4つまり0.25秒つまり250msと なったわけである。