[新連載]CPLD入門!
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使うことになるだろうと思ってはいたのですが。
何を今頃になって、というようなものですが。
ようやく本気で、CPLDと四つに取り組みます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第11回]
●VHDLプログラム(2)
前回はPICUSBIF回路をCPLDに置き換えるためのVHDLプログラムを見ていただきました。
今回は私自身の学習ノートを兼ねてプログラムの中身について説明を加えてみます。
まずは最初の部分です。
--picusb interface --19/1/27 1/28 2/21 library IEEE; use IEEE.std_logic_1164.all; |
entity picusb is PORT ( Ain:in std_logic_vector(7 downto 2); Dinout:inout std_logic_vector(6 downto 0); RC3_RC0:inout std_logic_vector(3 downto 0); RB6_RC4:in std_logic_vector(2 downto 0); RC7_RC5:out std_logic_vector(2 downto 0); IOWR:in std_logic; IORD:in std_logic); end picusb; |
次はいよいよ回路の記述です。
architecture rtl of ファイル名 is
ではじまって
end rtl;
で終ります。
rtlとはなんじゃい?ということなのですが、ここはなんじゃもんじゃな名前でもよいようです。
ただ一般的には慣習としてrtlまたはRTLを使うようです。
学校の答案などで、ここになんじゃもんじゃな名前を書いたりすると、先生にしかられてしまうかもしれません。
そのarchitectureの最初のところでは、CPLDの内部で一時的に使う信号名を定義します。
architecture rtl of picusb is signal rcwk:std_logic_vector(3 downto 0); signal rcwk2:std_logic_vector(3 downto 0); signal s98out:std_logic; signal s94out:std_logic; signal s94in:std_logic; |
記述のルールは先ほどの端子名と似ていますが、内部で使う信号なので入出力の区別がありません。
ひとつの回路の出口に使えば出力ですが、それを別の回路の入力に使うこともできます。
入出力の定義はありませんが、その代わりに信号名の前に signal と表記します。
この内部信号は重要な役を果たします。
VHDLの約束事として、出力端子から入力することはできません。
たとえば2つの入力信号のANDの結果をある端子に出力するとともに、その同じ出力信号を別のロジック回路の入力として使うことは許されません。
しかしそのような回路はごく普通に出てきます。
そのようなときにsignalを使います。
2つの入力信号のANDの結果を内部的なsignalに一旦出力し、そのsignalを出力端子に出力します。
signalは入力にも出力にも使えますから、その同じsignalを別のロジック回路の入力として使うようにします。
本日も時間がなくなってしまいました。
次回に続きます。
次回はいよいよロジック回路そのものの記述に入ります。
CPLD入門![第11回]
2019.2.22upload
前へ
次へ
ホームページトップへ戻る