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

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



[第131回]


●CPLDロジアナ(20)VHDLプログラム(4)

およそ一週間ぶりの更新になってしまいました。
かなり大量のご注文と作業に時間がかかるご注文が重なってしまってホームページを更新する余裕が全くありませんでした。
国民の祝日も土曜日も日曜日もひたすら仕事をしておりました。
この状況はまだしばらく続きそうです。
しかし余り間が空いてしまいますと「ひょっとしてコロナで…」などとご心配をおかけすることになってしまうかもしれませんので、なんとか時間を捻出してせめて少しずつでもできるだけ更新するようにしたいと思っております。
なんだか最近は当地名古屋もかなり感染者が出ているようでありますが、幸いまだ私の周りは平穏無事に過ぎております。
もっとも仕事でほとんど毎日こもりっきりの生活が続いておりますので感染などするわけがない、というのが実際のところかもしれませんが。
皆様方も健康には十分お気をつけいただいてお過ごしください。

さて今回も前回からの続きです。
ほんの少しだけの更新です。
今回は前回のところで作ったCLKWK2からサンプリングクロックを作成する部分です。
100MHzと50MHzは別にしてそのほかのサンプリングクロックはCLKWK2を1/5に分周して作ります。
そのサンプリングクロックは同時にメモリアドレスをインクリメントするクロックとデータをメモリに書き込むためのWRITEパルスとしても利用します。
そのあたりのことについては[第118回]で説明をしていますのでご参照願います。
なお前回も書きましたがサンプリングクロック100MHzはもとの100MHzがそのままサンプリングクロックになります。
またサンプリングクロック50MHzは100MHzを2分周したものがサンプリングクロックになります。

--                     
--make cntrL --- cntrL(2)=1/5clkwk2
--
process(clkwk2,res_clr)
begin
        if res_clr='0' then
                cntrL<="000";
        elsif clkwk2'event and clkwk2='0' then
                if cntrL="100" then
                        cntrL<="000";                   
                else
                        cntrL<=cntrL+"001";
                end if;
        end if;
end process;
--
-- make cntrs
-- 
--for MEMORY address up,PBIN latch,MEMWR
--
-- select cntrs
--
        cntrswk<=CLK when clkslct="000" else --100MHz
                clkwk(0) when clkslct="001" else --50MHz
                cntrL(2);--20MHz-500KHz
--
        cntrs<=cntrswk when r_w='0' and trigon='1' else IORD;
--                      

20MHz〜500KHzのサンプリングクロックはCLKWK2を5分周してつくります。
CNTRLのビット2がCLKWK2を5分周したものになります。
それと100MHz、50MHzのサンプリングクロックをまとめるために信号名CNTRSWKを使っています。
CNTRSWKはサンプリング期間(データをメモリに書き込む期間)のみアクティブにするため、さらに信号名をCNTRSとしています。

CPLD入門![第131回]
2022.2.14upload

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