Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL - Hoàng Văn Phúc
Câu 3: Tham số tĩnh của một thiết kế là
A. Các hằng số khai báo trong thiết kế đó
B. Các cổng vào ra khai báo trong thực thể của thiết kế
C. Các biến generic khai báo trong thực thể của thiết kế,
khi sử dụng thiết kế đó như một khối con thì phải gán
một giá trị cố định.
D. Các tín hiệu và khối con cài đặt trong mô tả kiến trúc.
36 trang |
Chia sẻ: huongthu9 | Lượt xem: 706 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL - Hoàng Văn Phúc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Giáo viên: TS. Hoàng Văn Phúc
Bộ môn KT Xung-Số-Vi xử lý, Khoa Vô tuyến Điện tử
02/2017
Thiết kế logic số
(Digital Logic design)
Chương 2: Ngôn ngữ VHDL
Bài giảng: Giới thiệu VHDL, cấu trúc chương trình
VHDL
https://sites.google.com/site/phucvlsi/teaching
Nội dung: Lịch sử phát triển ngôn ngữ VHDL, Cấu
trúc chương trình VHDL, Các dạng mô tả kiến trúc
và ví dụ
Thời lượng: 3 tiết bài giảng
Phương pháp: Thuyết trình + Slides + Bảng + Minh
hoạ trên ModelSim
Yêu cầu: Nắm được các đặc điểm, cấu trúc chương
trình VHDL, các dạng mô tả kiến trúc, hiểu cách xử
lý với ngôn ngữ VHDL
Nội dung, Phương pháp
2 Chương 2: Ngôn ngữ VHDL
Tài liệu:
Giáo trình “Thiết kế logic số”, Học viện KTQS, trang 41-53
Douglas L Perry, VHDL Programming by Example, 4th
Edition, 2002
Phần mềm:
Phần mềm soạn thảo Notepad++
Phần mềm mô phỏng Modelsim
Tài liệu tham khảo và phần mềm hỗ trợ
3 Chương 2: Ngôn ngữ VHDL
Kiểm tra bài cũ
4
Câu hỏi: Thiết bị logic khả trình nào hiện nay (đã học
trong bài giảng 1) có thể cung cấp nhiều tài nguyên và
có khả năng xử lý mạnh mẽ nhất?
A. PLA
B. PAL
C. FPGA
D. CPLD
Chương 2: Ngôn ngữ VHDL
5
VHDL: Very-High-Speed-Integrated-Circuit Hardware
Description Language (Ngôn ngữ mô tả phần cứng vi mạch
tốc độ rất cao)
1981: Phát triển bởi Bộ Quốc phòng Mỹ
1983-1985: Được phát triển thành một ngôn ngữ HDL chính
thống bởi 3 công ty Intermetrics, IBM và TI
1986: Chuyển giao toàn bộ bản quyền cho IEEE
1987: Công bố thành chuẩn ngôn ngữ IEEE-1076 1987
2002: Công bố chuẩn VHDL IEEE-1076 2002
2009: Công bố chuẩn VHDL IEEE-1076 2009
Lịch sử phát triển của VHDL
Chương 2: Ngôn ngữ VHDL
HDL
RTL code
(tổng hợp)
testbench
(mô phỏng)
HDL trong phân cấp thiết kế hệ thống số
Một số ngôn ngữ HDL: VHDL, Verilog, AHDL
6
(Vật lý)
(Cấu trúc)
(Chức năng)
(Kiến trúc)
________________________________________________________
RTL (Register Transfer Level): Mức truyền thanh ghi (mức mô tả HDL)
Tại sao cần có VHDL?
Có thể hỗ trợ mô hình hoá, thiết kế, mô phỏng, kiểm tra
mạch số phức tạp
Tự động hóa thiết kế, kiểm tra, mô tả độc lập với công
nghệ
7 Chương 2: Ngôn ngữ VHDL
VHDL for Specification
VHDL for Simulation
VHDL for Synthesis
Các dạng mã nguồn VHDL
8
VHDL for Specification: Mã nguồn VHDL cho mô tả đặc tính kỹ thuật
VHDL for Simulation: Mã nguồn VHDL cho mô phỏng
VHDL for Synthesis: Mã nguồn VHDL cho tổng hợp
Tính phổ biến
Độc lập với công nghệ
Khả năng mô tả đa cấp
Khả năng trao đổi, tái sử dụng
Đặc điểm của VHDL
9 Chương 2: Ngôn ngữ VHDL
Phân cấp trong thiết kế với VHDL
10 Chương 2: Ngôn ngữ VHDL
Gói
Thực thể
Kiến trúc
Các phát biểu
Concurrent Statement: Phát biểu đồng thời
Sequential Statement: Phát biểu tuần tự
HDL có phải ngôn ngữ lập trình?
11
Không phải điều khiển thực hiện thao tác của hệ thống mà
là tạo ra/mô phỏng hệ thống phần cứng
Chương 2: Ngôn ngữ VHDL
VHDL có phải ngôn ngữ lập trình?
12
Không phải điều khiển thực hiện thao tác của hệ thống mà
là tạo ra/mô phỏng hệ thống phần cứng
Chương 2: Ngôn ngữ VHDL
VHDL: ngôn ngữ luồng dữ liệu (dataflow language)
các phép xử lý xảy ra đồng thời
khác với
Các ngôn ngữ thủ tục (procedural computing languages)
như Pascal, C, assembly: các lệnh được thực thi tuần tự
Ví dụ VHDL đơn giản
13 Chương 2: Ngôn ngữ VHDL
VHDL code:
if (S = '1') then
Y <= B;
else
Y <= A;
end if;
Phần cứng tạo ra:
?
Ví dụ VHDL đơn giản
14 Chương 2: Ngôn ngữ VHDL
VHDL code:
if (S = '1') then
Y <= B;
else
Y <= A;
end if;
Phần cứng tạo ra:
MUX2
HDL trong qui trình thiết kế vi mạch số sơ lược
15 Chương 2: Ngôn ngữ VHDL
Tổng hợp
Front-end
Back-end
Mô tả HDL ban đầu
Thiết kế mức cổng
Thiết kế vật lý
Mô tả mức RTL bằng HDL
Các chỉ tiêu kỹ thuật và ràng buộc
Thiết kế chip
Lựa chọn cấu trúc
Sắp xếp, tạo kết nối
HDL trong qui trình thiết kế trên FPGA
16
Chương 2: Ngôn ngữ VHDL
Một số lưu ý về VHDL
Không phân biệt chữ hoa/thường với tên biến, hằng, tín hiệu,
tên entity, architecture. Trừ trường hợp giá trị trực tiếp („Z‟, „X‟
chứ không phải là „z‟, „x‟)
Thống nhất một loại in hoa hay in thường
Một entity có thể có nhiều architecture khác nhau (để chọn
architecture nào được dùng thì dùng phát biểu configuration)
Các thành phần của một thiết kế VHDL có thể đặt ở trong
nhiều file khác nhau (.vhd). Tuy nhiên, thiết kế VHDL cho một
thực thể nên đặt trong 1 file duy nhất (1 entity/1 file)
17 Chương 2: Ngôn ngữ VHDL
Các từ khoá của VHDL
18 Chương 2: Ngôn ngữ VHDL
Cấu trúc chương trình VHDL
Khai báo thư viện
LIBRARY declaration
Mô tả thực thể
ENTITY Declaration
Hành vi
Behavioral
Luồng dữ liệu
DataFlow
Cấu trúc
Structure
Mô tả kiến trúc
ARCHITECTURE
19
Các kiểu dữ
liệu, toán tử
Giao diện của
khối thiết kế
Cấu trúc
bên trong
Chương 2: Ngôn ngữ VHDL
Khai báo thư viện (library)
20
• Phải được đặt đầu tiên
trong mỗi thiết kế VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
• IEEE.STD_LOGIC_1164: cung cấp các kiểu dữ liệu
std_ulogic, std_logic, std_ulogic_vector, std_logic_vector, các
hàm logic như and, or, not, nor, xor các hàm chuyển đổi
giữa các kiểu dữ liệu trên.
• IEEE.STD_LOGIC_ARITH: định nghĩa các kiểu dữ liệu số
nguyên SIGNED, UNSIGNED, INTEGER, cung cấp các hàm
số học bao gồm “+”, “-”, “*”, “/”, so sánh “”, “=”,
các hàm dịch trái, dịch phải, các hàm chuyển đổi từ kiểu
vector sang các kiểu số nguyên.
Chương 2: Ngôn ngữ VHDL
Mô tả thực thể (entity)
21
• Khai báo về mặt cấu trúc các cổng vào ra (port)
• Các tham số tĩnh (generic) của một khối thiết kế VHDL.
• Với mô tả để kiểm tra (test bench): khai báo dạng entity
trống, chỉ có tên entity
entity full_adder is
port (
A, B, Cin : in bit;
Cout, S : out bit);
end full_adder ;
Chương 2: Ngôn ngữ VHDL
Các dạng mô tả kiến trúc (architecture)
Hành vi (Behavioral): Thể hiện chức năng mạch thông qua
mô tả đáp ứng (hành vi) của mạch
Luồng dữ liệu (Dataflow): Sử dụng các phép gán tín hiệu
trực tiếp để mô tả mối quan hệ đầu ra/đầu vào của mạch
Cấu trúc (Structure): Thiết kế lớn được mô tả bởi tổ hợp
của các phần tử nhỏ hơn (Component)
22 Chương 2: Ngôn ngữ VHDL
0110
0101
0 1011
+
VD1– Khối cộng toàn phần (Full Adder)
23 Chương 2: Ngôn ngữ VHDL
A B Cin S Cout
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Bảng chức năng của Full Adder
24 Chương 2: Ngôn ngữ VHDL
A B Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Bảng chức năng của Full Adder
25 Chương 2: Ngôn ngữ VHDL
Full Adder theo kiến
trúc kiểu hành vi:
add: process (A, B, Cin)
begin
if (A ='0' and B='0' and Cin = '0') then
S <= '0';
Cout <= '0';
elsif (A = '1' and B = '0' and Cin = '0') or
(A = '0' and B = '1' and Cin = '0') or
(A = '0' and B = '0' and Cin = '1') then
S <= '1';
Cout <= '0';
elsif (A = '1' and B = '1' and Cin = '0') or
(A = '1' and B = '0' and Cin = '1') or
(A = '0' and B = '1' and Cin = '1') then
S <= '0';
Cout <= '1';
elsif (A = '1' and B = '1' and Cin = '1') then
S <= '1';
Cout <= '1';
end if;
end process add;
26 Chương 2: Ngôn ngữ VHDL
S <= (A xor B) xor Cin;
Cout <= (A and B) or (Cin and (A xor B));
Full Adder theo kiến trúc kiểu luồng dữ liệu (Dataflow)
Phần cứng tạo ra:
27
Phát biểu VHDL:
Chương 2: Ngôn ngữ VHDL
?
S <= (A xor B) xor Cin;
Cout <= (A and B) or (Cin and (A xor B));
Full Adder theo kiến trúc kiểu luồng dữ liệu (Dataflow)
Phần cứng tạo ra:
28
Phát biểu VHDL:
Chương 2: Ngôn ngữ VHDL
Bộ cộng 4-bit được tạo ra từ các Full Adder:
Bộ cộng 4-bit dạng cấu trúc (Structure)
29 Chương 2: Ngôn ngữ VHDL
Bộ cộng 4-bit dạng cấu trúc (VHDL)
u0: component full_adder
port map (A => A(0), B => B(0), Cin => C(0), S => S(0), Cout => C(1));
u1: component full_adder
port map (A => A(1), B => B(1), Cin => C(1), S => S(1), Cout => C(2));
u2: component full_adder
port map (A => A(2), B => B(2), Cin => C(2), S => S(2), Cout => C(3));
u3: component full_adder
port map (A => A(3), B => B(3), Cin => C(3), S => S(3), Cout => C(4));
30
FA
Chương 2: Ngôn ngữ VHDL
Kết nối các thành phần nhỏ (component)
trong một thiết kế lớn hơn
u0: component read_pointer
port map (.);
u1: component write_pointer
port map ();
31 Chương 2: Ngôn ngữ VHDL
Tổng kết bài giảng
Lịch sử hình thành VHDL, các đặc điểm, ứng
dụng
Cấu trúc của chương trình VHDL
Các kiểu mô tả kiến trúc: hành vi, luồng dữ liệu,
cấu trúc
Ví dụ với full adder và bộ cộng 4-bit
32 Chương 2: Ngôn ngữ VHDL
Chuẩn bị nội dung thảo luận về VHDL
VHDL coding style
Tự động kiểm tra thiết kế trên VHDL
Mô hình hóa FSM trên VHDL
Xử lý file text với VHDL testbench
33 Chương 2: Ngôn ngữ VHDL
Trắc nghiệm
Câu 1: Các thành phần bắt buộc của một thiết
kế VHDL là:
A.Khai báo thư viện
B.Khai báo thực thể và mô tả kiến trúc
C.Mô tả kiến trúc và khai báo cấu hình tương ứng
D.Khai báo thư viện, thực thể và mô tả kiến trúc
34 Chương 2: Ngôn ngữ VHDL
Câu 2: Mô tả kiến trúc dạng nào sau đây thể hiện
bản chất mạch thiết kế rõ nhất:
A. Dạng cấu trúc
B. Dạng hành vi
C. Dạng cấu trúc kết hợp hành vi
D. Dạng luồng dữ liệu
35 Chương 2: Ngôn ngữ VHDL
Trắc nghiệm
Câu 3: Tham số tĩnh của một thiết kế là
A. Các hằng số khai báo trong thiết kế đó
B. Các cổng vào ra khai báo trong thực thể của thiết kế
C. Các biến generic khai báo trong thực thể của thiết kế,
khi sử dụng thiết kế đó như một khối con thì phải gán
một giá trị cố định.
D. Các tín hiệu và khối con cài đặt trong mô tả kiến trúc.
36 Chương 2: Ngôn ngữ VHDL
Trắc nghiệm
Các file đính kèm theo tài liệu này:
- bai_giang_thiet_ke_logic_so_chuong_2_ngon_ngu_vhdl_hoang_van.pdf