34
Thiết Kế Số Sử Dụng VHDL TS. Võ Lê Cường Viện Điện tử Viễn thông Đại học Bách Khoa Hà Nội

Thiet Ke So Su Dung VHDL

Embed Size (px)

DESCRIPTION

no

Citation preview

Page 1: Thiet Ke So Su Dung VHDL

Thiết Kế Số Sử Dụng VHDL

TS. Võ Lê CườngViện Điện tử Viễn thông

Đại học Bách Khoa Hà Nội

Page 2: Thiet Ke So Su Dung VHDL

Nội Dung

1. Giới thiệu2. Khai báo cơ bản trong VHDL 3. Ví dụ thiết kế mạch tổ hợp4. Mô phỏng sử dụng Test Bench 5. Tái sử dụng thiết kế với Package

Page 3: Thiet Ke So Su Dung VHDL

1. Giới thiệu• VHDL = VHSIC Hardware Description Language

(VHSIC = Very High Speed Integrated Circuit)• VHDL?

– Là ngôn ngữ lập trình dùng để mô tả hệ thống điện tử số. – Chức năng của VHDL:

• Thiết kế ở mức behavioral and RTL • Mô phỏng • Tổng hợp mạch từ chương trình VHDL • Lưu trữ dưới dạng tài liệu

• Chuẩn VHDL: IEEE 1076– Phiên bản đầu tiên: 1986– Phiên bản thứ hai: 1993– Các phiên bản khác

Page 4: Thiet Ke So Su Dung VHDL

Ngôn Ngữ Lập Trình

• Mô hình dựa trên quá trình tuần tự - Các hoạt động được thực hiện tuần tự - Giúp con người phát triển thuật toán từng bước một- Giống với hoạt động của mô hình máy tính cơ bản

RTL Hardware Design Chapter 2 5by Cuong Vo Le

Page 5: Thiet Ke So Su Dung VHDL

VHDL

• Đặc điểm của phần cứng số - Kết nối các phần khác nhau của mạch- Hoạt động đồng thời- Khái niệm về trễ và thời gian

• Các đặc điểm này ngôn ngữ phần mềm không thể mô tả• Yêu cầu các ngôn ngữ mới để mô tả/ thiết kế mạch số, ví dụ: VHDL

6

Page 6: Thiet Ke So Su Dung VHDL

Lý do sử dụng HDL?

Thiết kế mạch kích thước lớn- HDL có nhiều mức thiết kế hơn phương pháp giản đồ mạch (schematic).

• Mô tả mức truyền dẫn thanh ghi (RTL)• Đường dữ liệu rộng (16, 32, hoặc 64 bits) có thể được mô tả bằng một

vector• Công cụ tổng hợp hỗ trợ phần lớn các công việc thay so với phương pháp

schematic. - Thiết kế mạch có kích thước lớn ở mức cổng và mức transistor?

Tăng khả năng linh hoạt cho thiết kế- VHDL cho phép chuyển đổi công nghệ dễ dàng (ví dụ: chuyển đổi 0.11mm => 45nm)

Page 7: Thiet Ke So Su Dung VHDL

Lý do sử dụng HDL?

Hỗ trợ từ phần mềm tổng hợp– Tối ưu công suất, diện tích và tốc độ– Cân bằng giữa các tham số: tốc độ, công suất và diện tích

Tăng khả năng linh hoạt cho thiết kế (tiếp tục)- VHDL viết dưới dạng mã ASCII => Linh hoạt trong quá trình lưu trữ và di chuyển file. Thay vì sử dụng file dạng nhị phân trong phương pháp schematic

Page 8: Thiet Ke So Su Dung VHDL

Lý do sử dụng HDL?

Hỗ trợ thiết kế với ít lỗi hơn- Sử dụng VHDL để mô tả file test bench

Phương pháp mềm dẻo cho phép tự kiểm tra thiết kế Sử dụng một môi trường đồng nhất

- Phần mềm tổng hợp có độ chính xác cao với các hàm boolean

Nếu phát hiện lỗi trong thiết kế cuối cùng => 99.999% khả năng do lỗi viết code VHDL

Page 9: Thiet Ke So Su Dung VHDL

Ngôn ngữ HDL phổ biến

-VHDL và Verilog- Cú pháp và hình thức của hai ngôn ngữ rất khác nhau- Khả năng và mục đích tương tự nhau- Cả hai đều được chuẩn hóa và hỗ trợ bởi hầu hết các phần mềm thiết kế

Page 10: Thiet Ke So Su Dung VHDL

Nội Dung

1. Giới thiệu2. Khai báo cơ bản trong VHDL 3. Ví dụ thiết kế mạch tổ hợp4. Mô phỏng sử dụng Test Bench 5. Tái sử dụng thiết kế với Package

Page 11: Thiet Ke So Su Dung VHDL

Thiết kế mạch “Test”

Yêu cầu thiết kế của mạch “Test”:- Ba đầu vào (In1, In2, In3): kiểu dữ liệu 8 bit. - Hai đầu ra (Out1, Out2): kiểu dữ liệu boolean

(đúng/sai).- Out1=1 khi In1=In2, còn lại = 0.- Out2=1 khi In1=In3, còn lại = 0.

Page 12: Thiet Ke So Su Dung VHDL

Mạch Schematic

- Mạch Test: 3 đầu vào, 2 đầu ra. - Test được xây dựng từ 2 khối Compare.

In1

In2

In3

Test

Out1

Out2

Compare

A

B

EQ

Compare

A

B

EQ

Page 13: Thiet Ke So Su Dung VHDL

Mạch Schematic

Compare: xây dựng từ các cổng logic cơ bản.

A

B

EQ

Compare

A[0]

B[0]

A[1]

B[1]

A[7]

B[7]

EQ

XNOR

AND

Page 14: Thiet Ke So Su Dung VHDL

Mô tả mạch Test sử dụng VHDL?

- Mô tả compare sử dụng VHDL. - Mô tả Test từ 2 khối compare, sử dụng VHDL.

Page 15: Thiet Ke So Su Dung VHDL

Thiết kế compare

-- Bộ so sánh 8 bit--entity Compare is

port( A,B: in bit_vector(0 to 7);EQ: out bit);

end entity Compare;

architecture Behav1 of Compare isbegin

EQ <= ‘1’ when (A=B) else ‘0’;end architecture Behav1;

‘Entity’ định nghĩagiao diện của mạch= hộp đen của schematic

‘Architecture’ mô tảhoạt động và cấu trúc bên trong Entity

- Entity có thể có nhiều ‘Architecture’.

- Mô tả hành vi (Behavior): Công cụ tổng hợp sẽ tự động tạo ra mạch logic từ code VHDL.

- Các cổng vào ra: in, out, inout (bit hoặc bit_vector)

Page 16: Thiet Ke So Su Dung VHDL

Mô tả mạch Test sử dụng VHDL?

- Mô tả compare sử dụng VHDL. - Mô tả Test từ 2 khối compare, sử dụng VHDL.

Page 17: Thiet Ke So Su Dung VHDL

Thiết kế mạch Test sử dụng VHDL

- Hai bộ Comparator hoạt động song song.

entity Test isport( In1,In2,In3: in bit_vector(0 to 7);

Out1,Out2: out bit);end entity Test;

architecture Struct1 of Test iscomponent Comparator is

port( X,Y: in bit_vector(0 to 7);Z: out bit);

end component Comparator;begin

Compare1: component Comparator port map (In1,In2,Out1);Compare2: component Comparator port map (In1,In3,Out2);

end architecture Struct1;

Kết nối tín hiệu vào ra của Comparator trong mạch Test

- Mô tả cấu trúc (structural): entity được xây dựng từ các linh kiệncơ bản và kết nối các linh kiện sử dụng port map.

Comparator: Linh kiện cơ bản sử dụng trong entity Test Comparator có thể được thiết kế độc lập và đồng thời.

Page 18: Thiet Ke So Su Dung VHDL

Thiết kế mạch Test sử dụng VHDL

Entity có nhiều kiến trúc => định nghĩa kiến trúc được sử dụng trong entity?Ràng buộc linh kiện (Components) với ‘Entities’?

configuration Build1 of Test isfor Struct1

for Compare1: Comparator use entity Compare(Behav1)port map (A => X, B => Y, EQ => Z);

end for;for others: Comparator use entity Compare(Behav1)

port map (A => X, B => Y, EQ => Z);end for;

end for;end configuration Build1;

for Compare1 + for others =for All

Page 19: Thiet Ke So Su Dung VHDL

Cú pháp khai báo

ENTITY:entity Entity_name is

port( Signal_name: in Signal_type;Signal_name: out Signal_type);

end entity Entity_name;

ARCHITECTURE:architecture Architecture_name of Entity_name is

local_signal_declarations;component_declarations;

beginstatements;

end architecture Architecture_name;

entity Compare isport( A,B: in bit_vector(0 to 7);

EQ: out bit);end entity Compare;

architecture Behav1 of Compare isbegin

EQ <= ‘1’ when (A=B) else ‘0’;end architecture Behav1;

Page 20: Thiet Ke So Su Dung VHDL

Cú pháp khai báoCOMPONENT:component Component_name is

port( Signal_name: in Signal_type;Signal_name: out Signal_type);

end component Component_name;

COMPONENT INSTANTIATION:-- component instantiationInstance_name: component Component_name

port map (Signal_list);or

-- direct instantiationInstance_name: entity Entity_name(Architecture_name)

port map (Signal_list);

architecture Struct1 of Test iscomponent Comparator is

port( X,Y: in bit_vector(0 to 7);Z: out bit);

end component Comparator;begin

Compare1: component Comparator port map (In1,In2,Out1);Compare2: component Comparator port map (In1,In3,Out2);

end architecture Struct1;

Page 21: Thiet Ke So Su Dung VHDL

Cú pháp khai báo

CONFIGURATION:configuration Config_name of Entity_name is

for Architecture_namefor Instance_name: Component_name use entity

Entity_name(Architecture_name)port map (Signal_list);

end for;end for;

end configuration Config_name;

configuration Build1 of Test isfor Struct1

for Compare1: Comparator use entity Compare(Behav1)port map (A => X, B => Y, EQ => Z);

end for;for others: Comparator use entity Compare(Behav1)

port map (A => X, B => Y, EQ => Z);end for;

end for;end configuration Build1;

Page 22: Thiet Ke So Su Dung VHDL

Nội Dung

1. Giới thiệu2. Khai báo cơ bản trong VHDL 3. Ví dụ thiết kế mạch tổ hợp4. Mô phỏng sử dụng Test Bench 5. Tái sử dụng thiết kế với Package

Page 23: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kếThiết kế cổng AND 3 đầu vào

ABC

Y

entity AND3 isport ( A,B,C: in bit;

Y: out bit);end entity AND3;

architecture RTL of AND3 isbegin

Y <= ‘1’ when ((A=‘1’) and (B=‘1’) and (C=‘1’)) else ‘0’;end architecture RTL;

Page 24: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kếThiết kế cổng OR 3 đầu vào

ABC

Y

entity OR3 isport ( A,B,C: in bit;

Y: out bit);end entity OR3;

architecture RTL of OR3 isbegin

Y <= ‘0’ when ((A=‘0’) and (B=‘0’) and (C=‘0’)) else ‘1’;end architecture RTL;

Page 25: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kếThiết kế cổng đảo (INV)

entity INV isport ( A: in bit;

Y: out bit);end entity INV;

architecture RTL of INV isbegin

Y <= ‘1’ when (A=‘0’) else ‘0’;end architecture RTL;

A Y

Page 26: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kếThiết kế bộ ghép kênh MUX 2-1 theo hai cách:- Mô tả hành vi (behavioral description)- Mô tả cấu trúc (structural description)

A

S

BY

entity MUX21 isport ( A,B,S: in bit;

Y: out bit);end entity MUX21;

Giao diện hộp đen

architecture Behav of MUX21 isbegin

Y <= A when (S=‘1’) else B;end architecture Behav;

Mô tả hành vi

Page 27: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kế

architecture Struct of MUX21 issignal U,V,W : bit;component AND2 is

port ( X,Y: in bit;Z: out bit);

end component AND2;component OR2 is

port ( X,Y: in bit;Z: out bit);

end component OR2;component INV is

port ( X: in bit;Z: out bit);

end component INV;begin

Gate1: component INV port map (X=>S,Z=>U);Gate2: component AND2 port map (X=>A,Y=>S,Z=>W);Gate3: component AND2 port map (X=>U,Y=>B,Z=>V);Gate4: component OR2 port map (X=>W,Y=>V,Z=>Y);

end architecture Struct;

A

S

BY

A

S

B

Y

U V

W

Thiết kế bộ ghép kênh MUX 2-1 theo hai cách:- Mô tả hành vi (behavioral description)- Mô tả cấu trúc (structural description)

Page 28: Thiet Ke So Su Dung VHDL

3. Ví dụ thiết kế• Mô tả cấu trúc bộ MUX 2-1 sử dụng cổng

AND3, OR3 and INV trong ví dụ trước.

configuration Use3InputGates of MUX21 isfor Behavend for;for Struct

for Gate1:INV use entity INV(RTL)port map (A=>X,Y=>Z);

end for;for All:AND2 use entity AND3(RTL)

port map (A=>X,B=>Y,C=>’1’,Y=>Z);end for;for Gate4:OR2 use entity OR3(RTL)

port map (A=>X,B=>Y,C=>’0’,Y=>Z);end for;

end for;end configuration Use3InputGates;

Entities

ABC

Y

A Y

Components

X Y

Z

X Z

Page 29: Thiet Ke So Su Dung VHDL

Nội Dung

1. Giới thiệu2. Khai báo cơ bản trong VHDL 3. Ví dụ thiết kế mạch tổ hợp4. Mô phỏng sử dụng Test Bench 5. Tái sử dụng thiết kế với Package

Page 30: Thiet Ke So Su Dung VHDL

4. Mô phỏng sử dụng Test Bench.

• VHDL ‘Test Bench’ nằm ở mức cao nhất (top level) của thiết kế.

• Test Bench được sử dụng để kiểm tra hoạt động của thiết kế:- Đưa giả thuyết tín hiệu đầu vào để mô phỏng DUT

(Design Under Test ) - Kiểm tra sự đúng đắn tín hiệu đầu ra của thiết kế.- Lấy tín hiệu đầu ra của DUT và hiển thị dạng sóng

tín hiệu.

Page 31: Thiet Ke So Su Dung VHDL

4. Mô phỏng sử dụng Test Bench. • Thiết kế Test bench để kiểm tra thiết kế hành vi

(behavioral) của bộ MUX 2-1

MUX21

A

BY

S

entity Testbench isend entity Testbench; Testbench không có

các cổng vào ra

architecture BehavTest of Testbench isSignal In1,In2,Select,Out : bit;

beginDUT: entity MUX21(Behav) port map (In1, In2, Select, Out);Stimulus: process is

beginIn1<=‘0’;In2<=‘1’;Select<=‘0’; wait for 20 ns;Select<=‘1’; wait for 20 ns;In1<=‘1’;In2<=‘0’; wait for 20 ns;...end process Stimulus;

end architecture BehavTest;

Page 32: Thiet Ke So Su Dung VHDL

Nội Dung

1. Giới thiệu2. Khai báo cơ bản trong VHDL 3. Ví dụ thiết kế mạch tổ hợp4. Mô phỏng sử dụng Test Bench 5. Tái sử dụng thiết kế với Package

Page 33: Thiet Ke So Su Dung VHDL

• Các sản phẩm điện tử mới: 95% thiết kế được sử dụng lại, và chỉ có 5% được thiết kế mới.

• Trong VHDL, sử dụng ‘Packages’ có thể tái sử dụng các khối đã được thiết kế sẵn.

• ‘Package’ chứa các nội dung: constant values, component declarations, user data types, and sub-program.

5. Tái sử dụng thiết kế với Package

Page 34: Thiet Ke So Su Dung VHDL

5. Tái sử dụng thiết kế với Package Định nghĩa giao diện Package

package Package_name is-- constants-- user defined types-- component declarations-- sub programs

end package Package_name;

Cách sử dụng package?

use Library_name.Package_name.all;