[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第119回]
●CPLDロジアナ(9)25MHzでテスト(1)
前回はCPLDロジアナに実装予定のAS6C62256のアクセスタイムを確認したところサンプリングクロック20MHzに対してはわずかですがスペックが合わないことがわかりました。
しかし実際の動作確認では20MHzでも問題なく動作しています。
データシートによるとAS6C62256は2.7V〜5.5Vの広い電圧範囲で動作します。
データシートの値はVcc=3Vを基準にしているとも考えられるので、それならばVcc=5Vでの動作ならばデータシートのアクセスタイムよりも高速でアクセスできるはずと考えられます。
しかしそれはそのように推測しているだけではっきりした根拠があってのことではありません。
ですので前回は、20MHzは「おまけ」と考えてください、と書きました。
ひょっとすると20MHzはたまたま動作しているだけで、正しく動かない場合もあるかもしれない、とも思ったからです。
しかし。
一晩経ちますとそのままにしておくのはどうにも気持ちが悪いと思うようになってきました。
なかなかに困った性分であります。
はっきりした根拠がないなら繰り返しテストをするなどして確実に動作することを確かめればそれはそれでひとつの根拠として示すことができると思います。
もっとよい方法は20MHzよりも高いクロックで動作確認をしてみることです。
つまり限界を確認してみることで、それよりも低い周波数なら大丈夫という安心を得ることができます。
たとえば25MHzとかで試してみたらどうかなんてことを思いついてしまいました。
ま。
多分誤動作するでしょうけれど。
やってみなければわかりません。
思いついたらやってみることです。
ということで、とにかく駄目元で25MHzで試してみることにしました。
25MHzの場合は下の波形図のようになります。
MEMWR信号はcntrLのビット0とビット1のANDから作ります。
AS6C62256のデータシートでの値ではWRITEパルスのサイクルタイムの最小値は55nsでL期間の幅の最小値は45nsです。
データシートの最小値よりも15nsも小さいですものね。
これはやる前から無理というもの。
でもここまできたらやるしかないでしょう。
下はその部分のVHDLプログラムです。
--MEMWR -- MWR<=(cntrL(1) and cntrL(0)) or r_w or cntrH(15); -- |
そして下はcntrLについて記述しているプログラム部分です。
process(clkwk2,res_clr) begin if res_clr='0' then cntrL<="000"; elsif clkwk2'event and clkwk2='0' then cntrL<=cntrL+"001"; end if; end process; |
前回は50nsの周期を得るためにclkwk2の5クロックの立ち下がりでcntrLをクリアしていましたが今回は40nsなので(入力クロックの2nなので)この部分のVHDLプログラムは前回よりも簡単になりました。
今回は25MHzでどの程度正しく動作するかを確認することが重要ですので、CPLDロジアナとしての出力波形を見るだけではなくて、そのもとになるMEMWRやアドレス信号、データ信号の出力も確認してみることにしました。
そういうことになると、やっぱりここはカメレオンロジアナの出番です。
下の写真は今回のテストを行なっているところです。
ちょっと線がごちゃごちゃしていますが右側にあるのがクロック発生回路基板で、真ん中がCPLDロジアナで、左側がカメレオンロジアナです。
カメレオンロジアナではCPLDから出力されるMEMWR信号とアドレス、データ出力の一部を観測しました。
説明の途中ですが本日は時間がなくなってしまいました。
この続きは次回に書くことにいたします。
CPLD入門![第119回]
2022.1.10upload
前へ
次へ
ホームページトップへ戻る