Bài giảng Thiết kế logic số - Chương 2, Phần 1 - Hoàng Văn Phúc

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

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ự

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)

pdf 36 trang kimcuc 7080
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế logic số - Chương 2, Phần 1 - Hoàng Văn Phúc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Thiết kế logic số - Chương 2, Phần 1 - Hoàng Văn Phúc

Bài giảng Thiết kế logic số - Chương 2, Phần 1 - Hoàng Văn Phúc
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 

File đính kèm:

  • pdfthiet_ke_logic_so_lecture2_1_vhdl_overview_and_architectures.pdf