VHDL基礎

l 設計庫和標準程序包

library library_name;

use library_name.package_name.all;

由於STD_LOGIC數據類型不屬於VHDL標準庫,所以使用時要予以以下聲明。

library IEEE;

use IEEE.Std_Logic_1164.all;

l ENTITY 稱爲實體,描述了電路器件外部情況及各信號端口的基本性質。

entity entity_name is

generic (generic_list);

port (p_name:port_m data_type;

p_name:port_mi data_type);

end entity entity_name;

電路的端口及其端口信號描述語句PORT()

p_name端口信號名

port_m 端口模式:IN 單向只讀模式,規定數據只能通過此端口被讀入實體中。

OUT 單向輸出模式,規定數據只能通過此端口從實體向外流出,或者可以將實體中的數據向此端口賦值

INOUT 輸入輸出雙向口

BUFFER INOUT類似,區別在於輸入信號來自於實體內部產生的回讀輸出的信號,即允許反饋。

data_type 數據類型:整數數據類型 INTEGER

布爾數據類型 BOOLEAN

標準邏輯位數據類型 STD_LOGIC

type std_ulogic is ( 'U', -- Uninitialized

'X', -- Forcing Unknown

'0', -- Forcing 0

'1', -- Forcing 1

'Z', -- High Impedance

'W', -- Weak Unknown

'L', -- Weak 0

'H', -- Weak 1

'-' -- Don't Care

);

位數據類型 BIT

BIT數據類型的信號規定的取值範圍是邏輯位‘1’,‘0’。

l ARCHITECTURE 稱爲結構體,結構體負責描述電路內部邏輯功能或電路結構,並行語句。

architecture architecture_name of entity_name is

architecture_declarations(說明語句)

begin

concurrent_statements(功能描述語句)

end [ architecture ] [ architecture_name ];

說明語句:包括在結構體中需要說明和定義的數據對象、數據類型、元件調用聲明等。並非必須的。

功能描述語句:必須的,給出相應的電路功能描述語句,可以是並行語句、順序語句或他們的混合。

l PROCESS_END PROCESS 進程語句和順序語句,VHDL中,所有合法的順序描述語句必須放在進程語句中,比如IF_THEN_ELSE_END IF等。

[process_label:] process [ ( sensitivity_list ) ] [ is ]

[process_declarations]

begin

sequential_statements

end process [ process_label ] ;

sensitivity_list:敏感信號表,通常要求把進程中所有的輸入信號都放在敏感信號表中。

PROCESS的執行依賴於敏感信號的變化,當某一敏感信號發生跳變,就將啓動此進程語句,而在執行一遍整個進程的順序語句後,便返回進程的啓示端,進入等待狀態,直到下一次敏感信號中某一信號跳變纔再次進入“啓動—運行”狀態,再執行一遍進程。一個結構體中,可以存在多個進程,它們是並行的,而任意一個進程屬於順序語句。

l AND()OR(或)、NOT(非)、NAND(與非)、NOR(或非)、XOR(異或)、XNOR(同或) 邏輯操作符,構成組合電路,他們的操作數有三種類型,分別爲BIT BOOLEAN STD_LOGIC.

l IF_THEN_ELSE_END IF 條件語句

if condition then

sequential_statements

end if;

if condition then

sequential_statements

else

sequential_statements

end if;

if condition then

sequential_statements

elsif condition then

sequential_statements

else

sequential_statements

end if;

l 賦值語句

signal_name <= [delay_mechanism ] waveform ;

WHEN_ELSE 條件信號賦值語句

signal_name <= [delay_mechanism ] waveform1 when condition1 else

[delay_mechanism ] waveform2 when condition2 else

. . .

[delay_mechanism ] waveformn;

with selection select

signal_name <= [delay_mechanism ] waveform1 when choice1,

[delay_mechanism ] waveform2 when choice2,

. . .

[delay_mechanism ] waveformn when others;

l SIGNAL 信號定義和數據對象(Data Objects),它規定了信號的行爲方式和功能特點。

Simplified Syntax:

signal signal_name : type;

signal signal_name : type := initial_value;

注:signal可作爲內部的節點,這就決定它不需要像端口那樣定義模式,即數據流動不受方向限制,可用來建立寄存器等。

l EVENT 信號跳變檢測表示和信號屬性函數

signal_name’event[and signal_name=(‘1’)(‘0’)]

l 不完整條件語句與時序電路

比如在未滿足if條件,又沒有else明確指出其他條件時如何操作時,即在條件語句中沒有對所有可能發生的條件給出對應的處理方式,這樣就產生了不完整條件語句。此時,VHDL綜合器將引進一個時序元件保持當前狀態值。利用這種不完全條件語句的描述引進寄存器元件,從而構成時序電路的方式是VHDL描述時序電路最重要的途徑。

CLK’LAST_VALUE=‘0’(‘1’)

rising_edge()測定上升沿的函(LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ;)

l WAIT

Simplified Syntax:

wait;

wait on signal_list;

wait until condition;

wait for time;





發佈了13 篇原創文章 · 獲贊 7 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章