Tải bản đầy đủ (.ppt) (135 trang)

Bài giảng môn kỹ thuật số 2 chương 5 GV nguyễn hữu chân thành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.2 MB, 135 trang )

Bài giảng môn Kỹ thuật số 2

Chương 5

THIẾT KẾ SỐ DÙNG VHDL

Giảng viên: Nguyễn Hữu Chân Thành

1


Bài giảng môn Kỹ thuật số 2

NỘI DUNG
1.
2.
3.
4.
5.
6.
7.

GIỚI THIỆU VỀ HDLs (Hardware Description Languages)
CÁC CẤU TRÚC CƠ BẢN CỦA VHDL
CÁC PHÁT BIỂU ĐỒNG THỜI
CÁC PHÁT BIỂU TUẦN TỰ
THIẾT KẾ MẠCH TUẦN TỰ
THIẾT KẾ MÁY TRẠNG THÁI
THIẾT KẾ PHÂN CẤP

Giảng viên: Nguyễn Hữu Chân Thành



2


Bài giảng môn Kỹ thuật số 2

1. GIỚI THIỆU

Các phương pháp thiết kế:

Các phương trình Boolean

Thiết kế dựa trên Schematic

Các ngôn ngữ mô tả phần cứng HDLs (Hardware
Description Languages): VHDL, Verilog HDL, ABEL, …

Giảng viên: Nguyễn Hữu Chân Thành

3


Bài giảng môn Kỹ thuật số 2

1. GIỚI THIỆU (tt)

Quá trình thiết kế hệ thống số:

Giảng viên: Nguyễn Hữu Chân Thành


4


Bài giảng môn Kỹ thuật số 2

1. GIỚI THIỆU (tt)

Các công cụ CAD:

Nhập yêu cầu thiết kế (design entry)






Dùng bảng chân trị

Trực tiếp

Vẽ dạng sóng quan hệ vào/ra (Waveform Editor)
Dùng sơ đồ mạch (Graphic Editor) → thiết kế phân cấp

Dùng HDLs

Giảng viên: Nguyễn Hữu Chân Thành

5



Bài giảng môn Kỹ thuật số 2

1. GIỚI THIỆU (tt)

Các công cụ CAD:

Tổng hợp (synthesis):




Tổng hợp logic (logic synthesis/logic optimization)
Ánh xạ công nghệ (technology mapping)
Tổng hợp sơ đồ mạch (layout synthesis/physical design)

Mô phỏng (simulation)





Mô phỏng chức năng (functional simulation)
Mô phỏng định thời (timing simulation)

Giảng viên: Nguyễn Hữu Chân Thành

6


Bài giảng môn Kỹ thuật số 2


1. GIỚI THIỆU (tt)

VHDL (Very High Speed Integrated Circuits HDL):

Ngôn ngữ được dùng để mô tả các hệ thống số: lập tài liệu
(documentation), mô phỏng (simulation), kiểm chứng
(verification) và tổng hợp (synthesis).

VHDL được chuẩn hóa vào năm 1987 qua chuẩn IEEE 1076
(VHDL-87) và được cập nhật năm 1993 (VHDL-93). Sau đó
được bổ sung qua chuẩn IEEE 1164 với hệ thống logic đa
trị.

Ứng dụng: thiết kế với các PLD, CPLD và FPGA.

Sự khác biệt giữa VHDL và các ngôn ngữ lập trình thông thường

Ngôn ngữ lập trình thông thường: tuần tự

VHDL: song song

Giảng viên: Nguyễn Hữu Chân Thành

7


Bài giảng môn Kỹ thuật số 2

2. CÁC CẤU TRÚC CƠ BẢN CỦA VHDL

2.1. Entity
Packages

Entity
Entity Declaration

Black box

Interface declaration
Architecture body

Internal
machinery

Functional definition

Giảng viên: Nguyễn Hữu Chân Thành

8


Bài giảng môn Kỹ thuật số 2

2.1. Entity (tt)

Khai báo entity

Entity định nghĩa giao tiếp của module phần cứng với môi
trường bên ngoài sử dụng nó.


Cú pháp khai báo:
entity entity_name is
generics
ports
begin
entity statements
end [entity] entity_name;

Giảng viên: Nguyễn Hữu Chân Thành

9


Bài giảng môn Kỹ thuật số 2

2.1. Entity (tt)

Các port trong khai báo entity:

Mỗi tín hiệu I/O trong một khai báo entity được xem là một
port.

Mỗi port được khai báo phải có tên, chiều dữ liệu (mode) và
kiểu dữ liệu.
port (port_name: mode data_type;
port_name: mode data_type;

port_name: mode data_type);

Các mode:








In: luồng dữ liệu chỉ đi vào entity.
Out: luồng dữ liệu chỉ đi ra khỏi entity.
Buffer: tương tự out, nhưng cho phép hồi tiếp nội
Inout: luồng dữ liệu có thể vào hay ra entity và cũng cho phép hồi
tiếp nội.
Giảng viên: Nguyễn Hữu Chân Thành

10


Bài giảng môn Kỹ thuật số 2

2.1. Entity (tt)

Kiểu dữ liệu:









IEEE 1076/93: boolean, bit, bit_vector, integer, …
IEEE std_logic_1164: std_ulogic, std_ulogic_vector, std_logic và
std_logic_vector (hệ thống logic đa trị).
Các kiểu dữ liệu do người sử dụng đinh nghĩa.
Khai báo của các kiểu dữ liệu phải cho phép entity thấy được qua
các mệnh đề library và use.

Ví dụ 2.1: khai báo cổng AND
entity andgate is
port (A, B:
in
bit;
C :
out
bit);
end andgate;

Giảng viên: Nguyễn Hữu Chân Thành

11


Bài giảng môn Kỹ thuật số 2

2.1. Entity (tt)

Ví dụ 2.2: khai báo bộ so sánh 4-bit
entity eqcomp4 is
port (A, B : in
bit_vector(3 downto 0);

equals : out bit);
end eqcomp4;

Ví dụ 2.3:
library ieee;
use ieee.std_logic_1164.all;
entity eqcomp4 is
port (a, b : in
std_logic_vector(3 downto 0);
equals:
out
std_logic);
end eqcomp4;
Giảng viên: Nguyễn Hữu Chân Thành

12


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body)

Khai báo entity là một hộp đen với mô tả các giao tiếp I/O còn
thân kiến trúc cung cấp mô tả chức năng của hộp đen đó.

Một entity có thể có nhiều thân kiến trúc.

Mỗi thân kiến trúc chỉ kết hợp với một khai báo entity.

Các kiến trúc của VHDL được chia làm 2 loại:


Mô tả hành vi (behavior description)






Mô tả dạng giải thuật (algorithmic description)
Mô tả luồng dữ liệu (data flow description)

Mô tả cấu trúc (structural description)
Một thiết kế có thể dùng một trong các loại trên hay cũng có thể
kết hợp các loại với nhau.

Giảng viên: Nguyễn Hữu Chân Thành

13


Bài giảng môn Kỹ thuật số 2

1. GIỚI THIỆU (tt)

Biểu diễn hệ thống:

Dạng hành vi: mô tả chức năng của hệ thống → tập trung
vào quan hệ giữa các tín hiệu vào và ra.

Dạng cấu trúc: mô tả cài đặt bên trong của hệ thống → đặc tả

rõ ràng các thành phần nào được dùng và kết nối giữa chúng.

Giảng viên: Nguyễn Hữu Chân Thành

14


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body) (tt)

Khai báo thân kiến trúc:
architecture architecture_name of entity_name is
declarations
begin
concurrent_statements
end [architecture] architecture_name;

Mô tả hành vi: mô tả chức năng của hệ thống → tập trung vào
quan hệ giữa các tín hiệu vào và ra.

Mô tả dạng giải thuật: còn được gọi là mô tả cấp cao (highlevel) vì nó tương tự với mô tả trong các ngôn ngữ cấp cao
như C, Basic …

Giảng viên: Nguyễn Hữu Chân Thành

15


Bài giảng môn Kỹ thuật số 2


2.2. Thân kiến trúc (Architecture body) (tt)
Ví dụ 2.4: Mô tả dạng giải thuật:
-- bộ so sánh bằng 4-bit
entity eqcomp4 is
port (a, b :
in std_logic_vector(3 downto 0);
equals: out std_logic);
end eqcomp4;
architecture behavioral of eqcomp4 is
begin
comp: process (a, b)
begin
if a=b then
equals <= ‘1’;
else
equals<=‘0’;
end if;
end process comp;
end behavioral;
Giảng viên: Nguyễn Hữu Chân Thành

16


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body) (tt)

Mô tả luồng dữ liệu: mô tả cách dữ liệu truyền từ ngõ vào

đến ngõ ra (không dùng các phát biểu tuần tự).
Ví dụ 2.5: Mô tả dạng luồng dữ liệu:
-- bộ so sánh bằng 4-bit
library ieee;
use ieee.std_logic_1164.all;
entity eqcomp4 is
port (a, b : in std_logic_vector(3 downto 0);
equals: out std_logic);
end eqcomp4;
architecture dataflow of eqcomp4 is
begin
equals <= ‘1’ when (a=b) else ‘0’;
end dataflow;
Giảng viên: Nguyễn Hữu Chân Thành

17


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body) (tt)
Ví dụ 2.6: Mô tả dạng luồng dữ liệu khác:
-- bộ so sánh bằng 4-bit
library ieee;
use ieee.std_logic_1164.all;
entity eqcomp4 is
port (a, b : in std_logic_vector(3 downto 0);
equals: out std_logic);
end eqcomp4;
architecture bool of eqcomp4 is

begin
equals <=
not(a(0) xor b(0))
and not(a(1) xor b(1))
and not(a(2) xor b(2))
and not(a(3) xor b(3)) ;
end bool;
Giảng viên: Nguyễn Hữu Chân Thành

18


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body) (tt)

Mô tả dạng cấu trúc:

Chứa các danh sách kết nối (netlist) – các thành phần
(component) được khởi tạo và được kết nối với nhau qua các
tín hiệu.

Thiết kế dạng phân tầng (hierarchical design).



Top-down design
Bottom-up design

Giảng viên: Nguyễn Hữu Chân Thành


19


Bài giảng môn Kỹ thuật số 2

2.2. Thân kiến trúc (Architecture body) (tt)
Ví dụ 2.7: Mô tả dạng cấu trúc:
library ieee;
use ieee.std_logic_1164.all;
entity eqcomp4 is
port (a, b :
in std_logic_vector(3 downto 0);
equals: out std_logic);
end eqcomp4;
use work.gatespkg.all;
architecture struct of eqcomp4 is
signal x: std_logic_vector(0 to 3);
begin
u0: xnor2 port map (a(0), b(0),x(0));
u1: xnor2 port map (a(1), b(1),x(1));
u2: xnor2 port map (a(2), b(2),x(2));
u3: xnor2 port map (a(3), b(3),x(3));
u4: and4 port map (x(0), x(1),x(2),x(3),equals);
end struct;
Giảng viên: Nguyễn Hữu Chân Thành

20



Bài giảng môn Kỹ thuật số 2

2.3. Danh hiệu

Danh hiệu cơ bản: gồm các ký tự alphabet, các ký số và dấu
gạch dưới.

Ký tự đầu tiên phải là chữ cái.

Ký tự cuối cùng không được là dấu gạch dưới.

Không phân biệt chữ hoa/thường.

Không cho phép hai dấu gạch dưới xuất hiện liên tiếp.

Danh hiệu mở rộng: chuỗi ký tự được ghi giữa hai dấu ‘\’

Có thể sử dụng bất cứ ký tự cho phép nào, bao gồm cả các
ký tự !, ., @, và $.

Phân biệt chữ hoa và chữ thường.

Giảng viên: Nguyễn Hữu Chân Thành

21


Bài giảng môn Kỹ thuật số 2

2.3. Danh hiệu (tt)


Ví dụ 2.9: Các danh hiệu nào sau đây là hợp lệ:
_tx_clk?
Sai: phải bắt đầu bằng một chữ cái.
Tx_clk?
Đúng: danh hiệu hợp lệ.
6A15X?
Sai: không được bắt đầu bằng một chữ số.
Big#buffer?
Sai: không được có ký tự # trong danh hiệu.
Select?
Sai: từ khóa.
tx_clk_?
Sai: ký tự cuối cùng không được là dấu gạch dưới.
ABC_456?
Đúng: danh hiệu hợp lệ.
Tx__clk
Sai: không cho phép hai dấu gạch dưới liên tiếp.
Giảng viên: Nguyễn Hữu Chân Thành

22


Bài giảng mơn Kỹ thuật số 2

2.4. Các đối tượng dữ liệu

Đối tượng dữ liệu giữ giá trị có kiểu dữ liệu cụ thể.

Đối tượng dữ liệu thuộc một trong 4 lớp: hằng số, biến số, tín

hiệu và tập tin (file).

Khả năng nhìn thấy (visibility):

Một đối tượng được khai báo trong một package có thể
được tham chiếu bởi một entity hay một architecture dùng
package đó.

Một đối tượng được khai báo trong một entity chỉ được
thấy trong entity đó.

Một đối tượng được khai báo trong một architecture chỉ
được thấy trong architecture đó.

Một đối tượng được khai báo trong một process chỉ được
thấy trong process đó.
Giảng viên: Nguyễn Hữu Chân Thành

23


Bài giảng mơn Kỹ thuật số 2

2.4.1 Hằng số

Giữ một giá trị khơng đổi trong mơ tả thiết kế. Giá trị này
thường được gán khai báo.

Khai báo:
constant constant_name: type_name [:= value];

Ví dụ 2.10: Các khai báo hằng số:
constant bus_width: integer := 8;
constant rise_time: time := 10ns;
constant iteration: integer := 4;

Được khai báo trong vùng khai báo của package, entity,
architecture hay process.

Ứng dụng: đònh nghóa nội dung của ROM hay các thông số cố
đònh (delay, số lần lặp, rise time, hold time …).
Giảng viên: Nguyễn Hữu Chân Thành

24


Bài giảng mơn Kỹ thuật số 2

2.4.2 Tín hiệu

Đại diện cho giá trò dữ liệu trên các đường dữ liệu thực trong
mạch (wire, port …) hay trạng thái của các phần tử nhớ.

Khai báo:
signal signal_name: type_name [:= initial value];
Ví dụ 2.11: Các khai báo tín hiệu
signal clock: bit;
signal databus: std_logic_vector(0 to 7);

Thường được khai báo trong phần khai báo của entity hay
architecrture.


Có hai chiều: thời gian và giá trò.

Một giá trò được gán đến một tín hiệu không làm tín hiệu thay
đổi tức thời mà phải sau một thời gian delay nhỏ.

Ký hiệu phép gán: “<=”
Giảng viên: Nguyễn Hữu Chân Thành

25


×