II. Giới thiệu môi trường lập trình ISE.
CHƯƠNG IV: NGÔN NGỮ VHDL 4.1 Giới thiệu chung về ngôn ngữ VHDL
4.5.2. Các cấu hình
Trong mục 4.3.2.3 và 4.3.2.4 chúng ta đã biểu diễn làm thế nào một mô tả hoạt
động khai báo đặc điểm của một thành phần và cách tạo các sự kiện của thành phần.
Chúng ta cũng đề cập rằng một thành phần đã được khai báo có thể được coi như là một mẫu cho một thực thể thiết kế. Sự ràng buộc của một thực thể tới mẫu này đạt
được thông qua một mô tả cấu hình. Mơ tả này có thể được sử dụng để chỉ định các
hằng số chung trong thực tế cho các thành phần và khối. Như vậy mô tả cấu hình
(configuration declaration) đóng vai trị chính trong việc tổ chức mô tả thiết kế khi chuẩn bị cho việc mô phỏng hoặc các xử lý khác.
Cú pháp của một mơ tả cấu hình là: Mơ tả cấu hình :: =
Configuration tên định danh of tên thực thể is
các phần mô tả cấu hình cấu hình của khối
end [tên đơn giản của cấu hình];
các phần mơ tả cấu hình :: = {các mục mơ tả cấu hình} các mục mơ tả cấu hình ::= mệnh đề sử dụng
cấu hình của khối :=
for đặc điểm của khối
{mệnh đề sử dụng}
{các mục cấu hình}
đặc điểm của khối ::= tên kiến trúc | nhãn khai báo của khối
các mục cấu hình ::= cấu hình của khối | cấu hình của thành phần cấu hình của thành phần ::=
for đặc điểm của thành phần
{use chỉ số ràng buộc} {cấu hình của khối}
end for;
đặc điểm của thành phần ::= liệt kê thuyết minh : tên thành phần
liệt kê thuyết minh ::=
nhãn thuyết minh { , nhãn thuyết minh} | others | all chỉ số ràng buộc ::= vị trí của thực thể [ vị trí ánh xạ chung ] [ vị trí ánh xạ cổng ] vị trí của thực thể ::=
entity tên thực thể [( tên định danh kiến trúc )]
| configuration tên cấu hình | open
vị trí ánh xạ chung ::= generic map ( liệt kê kết hợp chung ) vị trí ánh xạ cổng ::= port map ( liệt kê kết hợp cổng )
Phần miêu tả của mô tả cấu hình cho phép cấu hình sử dụng các mục từ thư viện và các dạng đóng gói. Cấu hình của khối ngồi cùng trong mơ tả cấu hình định nghĩa cấu hình cho một kiến trúc của thực thể đã được đặt tên. Ví dụ, trong phần 4.3, chúng ta đã có ví dụ về một thực thể processor và kiến trúc của nó được cho trong ví dụ dưới đây:
Ví dụ về mơ tả một thực thể processor và thân kiến trúc
generic (max_clock_speed : frequency := 30 MHz); port ( port list );
end processor;
architecture block_structure of processor is
declarations
begin
control_unit : block
port ( port list );
port map ( association list );
declarations for control_unit
begin
statements for control_unit
end block control_unit;
data_path : block
port ( port list );
port map ( association list );
declarations for data_path
begin
statements for data_path
end block data_path; end block_structure;
Toàn bộ cấu trúc của mơ tả cấu hình đối với kiến trúc trên như sau:
configuration test_config of processor is use work.processor_types.all
for block_structure
configuration items
end for; end test_config;
Trong ví dụ này, nội dung của đóng gói được gọi là processor_types trong thư viện đang làm việc hiện tại là có thực, và cấu hình của khối tham chiếu đến kiến trúc block_structure của thực thể processor.
Cùng với cấu hình của khối đối với kiến trúc, các mô-dul con của kiến trúc cũng được đặt cấu hình. Các mơ-dul con này bao gồm các khối và các sự kiện thành
phần. Ví dụ, các khối trong kiến trúc ở hình 5.1 trên có thể được đặt cấu hình như trong ví dụ sau.
Ví dụ về cấu hình của một processor:
configuration test_config of processor is use work.processor_types.all for block_structure for control_unit configuration items end for; for data_path configuration items end for; end for; end test_config;
Trong một mô-dul con là một sự kiện của thành phần, một cấu hình thành phần được dùng để ràng buộc một thực thể với sự kiện thành phần. Để phân tích rõ, giả sử khối data_path trong ví dụ trên bao gồm một sự kiện thành phần là alu, được mơ tả như trong ví dụ dưới đây.
Ví dụ về cấu trúc của khối data_path trong processor: data_path : block
port ( port list );
port map ( association list ); component alu
op1, op2 : in bit_vector_32;
result : out bit_vector_32);
end component;
other declarations for data_path
begin
data_alu : alu
port map (function => alu_fn, op1 => b1, op2 => b2, result =>
alu_r);
other statements for data_path
end block data_path;
Giả sử rằng một thư viện project_cells chứa một thực thể được gọi là alu mà
được định nghĩa như sau:
entity alu_cell is
generic (width : positive);
port (function_code : in alu_function;
operand1, operand2 : in bit_vector(width-1 downto 0); result : out bit_vector(width-1 downto 0);
flags : out alu_flags);
end alu_cell;
với một kiến trúc được gọi là behaviour. Thực thể này phù hợp với thành phần alu mẫu, do tốn hạng của nó và các cổng result có thể bị bắt buộc phù hợp với thành phần trên, và các cổng flags có thể khơng được nối. Cấu hình của khối đối với data_path có thể biểu diễn trong ví dụ dưới đây.
Ví dụ về cấu hình của khối sử dụng thư viện thực thể:
for data_path for data_alu : alu
use entity project_cells.alu_cell(behaviour) generic map (width => 32)
port map (function_code => function, operand1 => op1, operand2 =>
op2,
result => result, flags => open);
end for;
other configuration items
end for;
Ngược lại, nếu thư viện cũng cung cấp một cấu hình được gọi là alu_struct đối với kiến trúc structure của thực thể alu_cell, thì cấu hình khối có thể sử dụng như trong ví dụ dưới đây.
Ví dụ về cấu hình của khối sử dụng một dạng cấu hình khác
for data_path for data_alu : alu
use configuration project_cells.alu_struct generic map (width => 32)
port map (function_code => function, operand1 => op1, operand2 =>
op2,
result => result, flags => open);
end for;
other configuration items
end for;