Thiết kế logic số (VLSI design)

Bộ môn KT Xung, số, VXL quangkien82@gmail.com https://sites.google.com/site/bmvixuly/thiet-ke- logic-so 08/2012

Mục đích, nội dung

• Nội dung: Phát biểu đồng thời

• Thời lượng: 3 tiết bài giảng

2/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

VHDL statements

3/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Concurrent statements

Đn: Phát biểu được thực thi không phụ thuộc vào vị trí xuất hiện trong chương trình.

Vị trí:

Trực tiếp trong mô tả kiến trúc

Ứng dụng:

Dùng mô tả cho mạch dạng cấu trúc

hoặc dataflow

4/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Concurrent statements

1. PROCESS

2. COMPONENT INSTALLATION

3. GENERATE

4. Concurrent Signal Assignment

5/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

PROCESS

Ø Mỗi khối câu lệnh PROCESS thực ra là một khối

lệnh tuần tự

Ø Khối PROCESS không có danh sách Sensitive

list thì bắt buộc phải xuất hiện lệnh WAIT

Ø Không giới hạn lệnh PROCESS trong một mô tả

kiến trúc

6/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

COMPONENT INSTALLATION

DECLARATION

COMPONENT component_name IS GENERIC (generic_variable_declarations ); PORT (input and_output_variable declarations); END COMPONENT component_name;

INSTALATION

instant_name: COMPONENT component_name GENERIC MAP( generic_variables => generic values) PORT MAP (input_and_output_variables => signals);

7/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

EXAMPLE: configurable counter

entity counter is generic ( N : natural; top_value : std_logic_vector(15 downto 0); SETTOP : boolean := FALSE ); port ( count :out std_logic_vector(N-1 downto 0); enable :in std_logic; clk :in std_logic; reset :in std_logic); end entity;

8/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

EXAMPLE: configurable counter

-- installation of 4 bit counter counter1: counter generic map (4, x"000a", TRUE) port map (cnt1, enable, clk, reset); counter2: counter generic map (4, x"101a", FALSE) port map (cnt2, enable, clk, reset); counter3: counter generic map (8, x"101b", TRUE) port map (cnt3, enable, clk, reset);

9/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

CONCURRENT SIGNAL ASSIGNMENT

Syntax:

target <= waveform1;

Examples: A <= (others => '0'); A <= B or C xor D; A <= "00" & B(k+m-1 downto m); A <= B(m+3 downto 1) & (k-3 downto 0 => '0');

10/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

CONDITIONAL SIGNAL ASSIGNMENT

target <= waveform1 when condition1 else waveform2 when condition2 else • • • waveformN–1 when conditionN–1 else waveformN when conditionN else default_waveform;

11/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

CONDITIONAL SIGNAL ASSIGNMENT

WITH expression SELECT target <= options waveform1 WHEN choice_list1, waveform2 WHEN choice_list2, • • • waveformN–1 WHEN choice_listN–1, waveformN WHEN choice_listN, default_value WHEN OTHERS;

12/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

GENERATE

[label]:for generate_parameter_specification generate { concurrent_statement } end generate [label];

[label]: if condition generate { concurrent_statement } end generate [label];

13/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Trắc nghiệm

Câu 1: Cấu trúc lệnh FOR .. GENERATE thường dùng trong trường hợp nào

A. Dùng cho các cấu trúc chương trình lặp đi lặp lại giống

nhau trong mô tả thiết kế.

B. Dùng cho các cấu trúc mô tả lặp lại giống nhau hoặc có

quy luật

C. Dùng để mô tả cho vòng lặp cứng trong thiết kế.

D. Dùng mô tả các cấu trúc phần cứng có tính tùy biến về

số lượng các khối cài đặt.

14/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Trắc nghiệm

Câu 2: Bản chất của câu lệnh PROCESS trong VHDL

A. Tạo một quá trình trong mô tả kiến trúc của thiết kế.

B. Là một khối lệnh tuần tự.

C. Là một khối lệnh chứa là các lệnh tuần tự nhưng

được xem như một cấu trúc lệnh đồng thời.

D. Là một câu lệnh đồng thời sử dụng trong mô tả các

quá trình.

15/17

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Trắc nghiệm

Câu 3: Ưu điểm cơ bản của sử dụng câu lệnh gán tín hiệu đồng thời so với sử dụng cấu trúc tuần tự tương đương

A. Mang lại kết quả thiết kế tối ưu hơn

B. Mã chương trình đơn giản và ngắn gọn hơn

C. Mô tả sát hơn cấu trúc của mạch và giảm thiểu

khả năng gây lỗi

D. Giảm thiểu khả năng gây ra lỗi chức năng của

mạch.

16/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Trắc nghiệm

Câu 4: Biến generic được sử dụng như thế nào trong thiết kế VHDL

A. Là các tham biến tĩnh ví dụ độ rộng bit, quy định cấu hình

chức năng….

B. Sử dụng như tham biến khi thiết kế nhưng phải là hằng số

khi sử dụng.

C. Là một biến phát sinh ra trong quá trình sử dụng khối thiết

kế như một khối con.

D. Sử dụng để quy định cho các đặc tính của các tham biến

động trong thiết kế.

17/17

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com

Trắc nghiệm

Câu 5: Phân biệt tác dụng của lệnh IF tuần tự và IF… GENERATE

A.

Lệnh IF tuần tự chỉ tác động lên các khối mô tả tuần tự còn

lệnh IF … GENERATE tác động lên khối lệnh song song

B.

Lệnh IF tuần tự chỉ tác động lên các tham biến động còn lệnh

IF … GENERATE tác động lên các tham biến tĩnh.

C.

Lệnh IF tuần tự là câu lệnh rẽ nhánh có điều kiện phân cấp

còn IF… GENERATE là lệnh với một giá trị điều kiện.

D.

Lệnh IF tuần tự làm thay đổi cấu trúc thiết kế hiện tại theo

điều kiện logic của tham biến cài đặt còn IF … GENERATE

cài đặt/hoặc không cài đặt theo điều kiện của tham biến tĩnh

trong câu lệnh.

18/18

Chương II: Ngôn ngữ VHDL quangkien82@gmail.com