VHDL的學習從一個例子開始學起-----鎖存器的設計。鎖存器是一個簡單的數字電路,下圖是1位鎖存器的原理圖。
圖1 1位鎖存器的原理圖
其中,引腳D是鎖存器的輸入,ENV是鎖存器的使能引腳,Q是鎖存器的輸出引腳。當ENV=1時,Q=D;當ENV=0時,Q爲上次D的輸入。下面是VHDL的程序:
--IEEE庫引用說明
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--實體聲明
ENTITY Latch is
Port(D,ENV:IN STD_LOG;
Q:OUT STD_LOGIC;);
END ENTITY Latch ;
--結構體聲明
ARCHITECTURE one OF Latch is
--信號的聲明
signal sig:STD_LOGIC;
begin
--進程的聲明
PROCESS(D,ENV)
begin
if(env='1') then
sig<=D;
end if;
Q<=sig;
end process;
end architecture on;
現在對上面的程序說明下:
(1)IEEE庫:
它包含了描述器件的輸入、輸出端口數據類型,即端口信號的取值類型或範圍中將要用到的IEEE 的標準庫中的STD_LOGIC_1164 程序包。使用LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL來引用。如果學過C語言,可以很好理解,它類似與C語言中的#include<*******>語句。
(2)實體:
實體相當於電路中的元器件 , 它是一個獨立的完整的模塊,它描述的 “元器件”的接口信息。通過PORT來定義元器件的 引腳。IN 引腳定義爲輸入,OUT定義爲輸出,INOUT 定義爲輸入輸出。
(3)結構體
結構體是VHDL 程序中不可或缺的三個部分之一,另外兩個是IEEE庫和實體。結構體描述了程序的邏輯功能,其相當於是元器件的內部電路。結構體中定義了一個signal和Process。signal的功能是存儲 外部信號D的數據位。Process後面會詳述。在PROCESS中有一個IF判斷語句,器邏輯功能與C語言中的if語句相同。當D或ENV其中有一個輸入變化時,程序便會執行一次PROCESS中的語句。當ENV=‘1’時sig就被賦值爲D。“sig<=D“表示將D賦值給sig。當ENV不等於‘1’時便會退出IF語句,然後執行Q<=sig這樣Q就會輸出D之前輸入的數據位。
總結:
本文從一個比較簡單的例子--鎖存器開始介紹了VHD程序的結構。後面會詳細介紹VHDL的數據結構以及執行語句,狀態機的設計。