FPGA讀書筆記5

xie347117464發表於2016-07-26

VHDL 語法介紹

設計實體和配置

設計實體由實體宣告和主體組成。配置由配置宣告定義。

實體宣告

實體宣告定義了實體和環境互動的介面。它可以被複用、例項如下所示.
entity_declaration ::=
entity identifier is
entity_header
entity_declarative_part
[ begin
entity_statement_part ]
end [ entity] [ *entity*_simple_name ] ;

entity header

entity header定義了介面相關資訊。 entity_header::=
[*formal*_generic_clause]
[*formal*_port_clasuse]
generic_clasuse::=
generic(generic_list);
port_clasuse::=
port(port_list);
generic list定義了一些常量,port定義了輸入輸出介面。有些情況下,它們都是外部可見的。例如:


entity AndGate is
generic
(N:Natural:=2);
port
(Inputs: in Bit_Vector (1 to N);
Result : out Bit; end entity AndGate


generic和port list均由介面列表定義。介面列表定義虛埠(formal port)。虛埠有幾種工作模式——in,out,inout,buffer和linkage,它們在例項化時有各自的限制。
port_list::= *port*_interface_list;
generic_list::= *generic*_interface_list;
1. in可以被例項化為inout或者buffer
2. out可以被例項化為 out或者inout
3. inout 只能為inout
4. buffer只能為buffer
5. linkage可以為任何模式

entity declarative part

實體宣告部分包含以下部分。
entity_declarative_part::=
{entity_declarative_item}

entity_declarative_item::=
subprogram_declaration
|subprogram_body
|type_declaration
|subtype_declaration
|constant_declaration
|signal_declaration
|*shared*_variable_declaration
|file_declaration
|alias_declaration
|attribute_specification
|disconnection_specification
|use_clause
|group_template_declaration
|group_declaration
小結一下,包含header和declaration的實體例子如下,
entity ROM is
port( Addr: in Word;
Data:out Word;
Sel: in Bit);
type Instruction is array (1 to 5) of Natural;
type Program is array (Natural range<>) of Instruction;
end ROM

實體陳述

這個部分包含了併發的斷言。所有的陳述必須是被動的,它可以監視執行狀態或者實體的工作特性。也就是測試。例如:
entity Latch is port ( Din: in Word;
Dout: out Word;
Load: in Bit);
constant Setup:Time:= 12ns;
constant PulseWidth:Time:=50 ns;
use Work.TimingMonitors.all
begin
assert Clk='1' or Clk'Delayed'Stable(PulseWidth);
CheckTiming(Setup,Din,Load,Clk);
end;

相關文章