Tải bản đầy đủ (.doc) (147 trang)

Thiet ke mach dien bang may tinh

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 (3.55 MB, 147 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG
Bài giảng:
THIẾT KẾ MẠCH ĐIỆN BẰNG MÁY TÍNH
(Tài liệu lưu hành nội bộ)
THÁI NGUYÊN - 2009
MỤC LỤC
1
Chương 1.....................................................................................................................8
GIỚI THIỆU VỀ PHƯƠNG PHÁP THIẾT KẾ SỐ .................................................8
BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG.............................................................8
1.1. CÁC PHƯƠNG PHÁP THIẾT KẾ TRUYỀN THỐNG.....................................9
1.1.1. Phương pháp thiết kế dùng hàm Boolean
9
1.1.2. Phương pháp thiết kế dựa trên sơ đồ
9
1.1.3. Nhược điểm của các phương pháp thiết kế truyền thống
10
1.2. PHƯƠNG PHÁP THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG
...................................................................................................................................10
1.3. CÁC QUÁ TRÌNH THỰC HIỆN THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ
PHẦN CỨNG TRÊN FPGA....................................................................................12
Chương 2...................................................................................................................17
GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH ................................................17
VÀ GIẢI PHÁP CỦA XILINX................................................................................17
2.1. GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH..........................................17
2.1.1. Mảng logic khả trình (PLA)
17
2.1.2. Logic mảng khả trình (PAL)
18
2.1.3. Vi mạch logic khả trình phức hợp (CPLD)


19
2.1.4. Mảng cổng cho phép lập trình được (FPGA)
20
2.2. GIỚI THIỆU VỀ GIẢI PHÁP CỦA XILINX...................................................22
2.2.1. CPLD Xilinx
23
2.2.2. FPGA Xilinx
25
2
Chương 3...................................................................................................................30
NGÔN NGỮ VHDL.................................................................................................30
GIỚI THIỆU VỀ VHDL...........................................................................................30
3.1. CÁC CẤU TRÚC CƠ BẢN CỦA NGÔN NGỮ VHDL..................................31
3.1.1. Khai báo Entity
32
3.1.2. Các kiểu kiến trúc (Achitecture)
35
3.1.2.1. Kiến trúc theo kiểu hành vi hoạt động (Behavioral)........................................35
3.1.2.2. Kiến trúc theo kiểu hoạt động của các luồng dữ liệu (Dataflow)....................36
3.1.2.2. Kiến trúc theo kiểu cấu trúc (Structure)...........................................................37
3.1.3. Các đóng gói (Packages)
38
3.1.3.1. Phần khai báo Package.....................................................................................38
3.1.3.1. Phần khai báo thân Package.............................................................................39
3.1.4. Định cấu hình (Configurations)
40
3.1.5. Các thư viện thiết kế
41
3.2. CÁC ĐỐI TƯỢNG DỮ LIỆU...........................................................................41
3.2.1. Các hằng (Constants)

42
3.2.2. Các biến (Variables)
42
3.2.3. Các kiểu tín hiệu (Signals)
42
3.3. CÁC KIỂU DỮ LIỆU........................................................................................43
3.3.1. Các kiểu liệt kê (ENUMERATION)
43
3.3.2. Kiểu nguyên
44
3.3.3. Các kiểu dữ liệu tiền định nghĩa trong VHDL
3
44
3.3.4. Kiểu mảng
45
3.3.5. Kiểu Record
46
3.3.6. Các kiểu STD_LOGIC
46
3.3.7. Các kiểu dữ liệu có dấu và không dấu
47
3.3.8. Các kiểu con
47
3.4. CÁC TOÁN TỬ.................................................................................................48
3.4.1. Các toán tử Logical
49
3.4.2. Các toán tử quan hệ
49
3.4.3. Các toán tử dịch bit
49

3.4.4. Các toán tử cộng
50
3.5. CÁC KIỂU TOÁN HẠNG................................................................................50
3.5.1. Kiểu chữ
51
3.5.1.1. Kiểu chữ ký tự..................................................................................................51
3.5.1.2. Kiểu chuỗi.........................................................................................................51
3.5.1.3. Kiểu BIT...........................................................................................................52
3.5.1.4. Kiểu BIT_VECTOR.........................................................................................52
3.5.1.5. Kiểu chữ trong đóng gói chuẩn STD_LOGIC.................................................52
3.5.1.6. Kiểu chữ STD_LOGIC_VECTOR...................................................................52
3.5.1.7. Kiểu Boolean.....................................................................................................52
3.5.1.8. Kiểu số thực......................................................................................................52
3.5.1.9. Kiểu nguyên......................................................................................................53
4
3.5.1.10. Kiểu TIME......................................................................................................53
3.5.2. Các kiểu định danh
53
3.5.3. Kiểu INDEX
53
3.5.4. Kiểu Slice và ALIAS
54
3.5.5. Kiểu thuộc tính ATTRIBUTE
54
3.5.6. Kiểu tập hợp
54
3.5.7. Biểu thức gán kiểu
55
3.5.8. Phép chuyển đổi kiểu tín hiệu
55

3.6. CÁC PHÁT BIỂU TUẦN TỰ (SEQUENTIAL STATEMENTS)....................55
3.6.1. Phát biểu gán biến
56
3.6.2. Phát biểu gán tín hiệu
58
3.6.3. Phát biểu IF
62
3.6.4. Phát biểu CASE
64
3.6.5. Phát biểu NULL
65
3.6.6. Phát biểu xác nhận ASSERTION
65
3.6.7. Phát biểu Loop
66
5
3.6.8. Phát biểu NEXT
67
3.6.9. Phát biểu EXIT
68
3.6.10. Phát biểu WAIT
68
3.6.11. Các lời gọi chương trình con
70
3.7. CÁC PHÁT BIỂU ĐỒNG THỜI......................................................................70
3.7.1. Phát biểu Process
71
3.7.2. Các phép gán tín hiệu đồng thời
72
3.7.3. Các phép gán tín hiệu có điều kiện và các phép gán tín hiệu được chọn lựa

73
3.7.4. Các phát biểu Block
76
3.7.5. Các lời gọi thủ tục đồng thời
77
3.7.6. Các chương trình con
78
3.8. CÁC ĐÓNG GÓI...............................................................................................82
3.9. MÔ HÌNH CẤU TRÚC.....................................................................................84
3.9.1. Các khai báo thành phần
84
3.9.2. Các thể hiện của Component
85
3.9.3. Các phát biểu Generate
87
3.9.4. Các thông số của việc định cấu hình
6
90
Chương 4...................................................................................................................91
GIỚI THIỆU PHẦN MỀM ISE CỦA XILINX.......................................................91
4.1. Các công cỤ thiẾt kẾ.........................................................................................91
4.1.1. Nhập thiết kế
92
4.1.2. Tổng hợp thiết kế
92
4.1.3. Thực thi và nạp cấu hình
92
4.1.4. Tích hợp mức Board
92
4.1.5. Các kỹ thuật kiểm tra

93
4.1.6. Công cụ phần mềm nhúng
93
4.2. Đăng ký và cài đẶt vỚi ISE WebPACK...........................................................93
4.3. ThiẾt kẾ ban đẦu trên ISE WebPACK.............................................................95
4.3.1. Thiết kế Module bằng ngôn ngữ mô tả phần cứng
95
4.3.2. Thiết kế Module bằng lưu đồ trạng thái
103
4.3.2. Thiết kế mức đỉnh bằng ngôn ngữ mô tả phần cứng
109
4.3.3. Thiết kế mức đỉnh bằng sơ đồ nguyên lý
117
4.4. ThỰc thi thiẾt kẾ.............................................................................................124
4.4.1. Thực thi thiết kế trên CPLD
124
4.4.1.1. Tổng hợp.........................................................................................................124
7
4.4.1.2. Chỉnh sửa các ràng buộc.................................................................................126
4.4.1.3. Thực thi với CPLD.........................................................................................131
4.4.1.4. CPLD Reports.................................................................................................132
4.4.1.5. Mô phỏng thời gian.........................................................................................134
4.4.1.6. Cấu hình..........................................................................................................135
4.4.2. Thực thi thiết kế trên FPGA
136
4.4.2.1. Thay đổi dự án từ CoolRunner-II thành Spartan-3E......................................137
4.4.2.2. Tổng hợp.........................................................................................................138
4.4.2.3. File ràng buộc thiết kế....................................................................................140
4.4.2.4. FPGA Reports.................................................................................................144
4.4.2.5. Tải cấu hình vào FPGA..................................................................................144

Chương 1
GIỚI THIỆU VỀ PHƯƠNG PHÁP THIẾT KẾ SỐ
BẰNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG
Hiện nay các mạch tích hợp ngày càng thực hiện được nhiều chức năng hơn, do
đó chúng ngày càng trở nên phức tạp hơn. Các phương pháp thiết kế mạch truyền
thống như dùng tối thiểu hóa hàm Boolean hay dùng sơ đồ các phần tử không còn
8
đáp ứng được các yêu cầu đặt ra khi thiết kế. Hơn nữa các mạch thiết kế ra yêu cầu
phải được thử nghiệm kỹ lưỡng trước khi đưa vào chế tạo hàng loạt và cần phải xây
dựng một bộ tài liệu hướng dẫn vận hành hệ thống hoàn chỉnh dễ hiểu và thống nhất.
Vì thế người ta thường sử dụng các ngôn ngữ mô tả phần cứng làm phương tiện thiết
kế, mô phỏng thử nghiệm các hệ thống số.
1.1. CÁC PHƯƠNG PHÁP THIẾT KẾ TRUYỀN THỐNG
1.1.1. Phương pháp thiết kế dùng hàm Boolean
Tất cả các mạch dựa trên các phần tử logic cơ bản gồm cổng logic và các mạch
flip-flop đều có thể thiết kế bằng các hàm Boolean. Có nhiều phương pháp đã được
sử dụng để tối thiểu hóa hàm Boolean nhằm tăng tính hiệu quả sử dụng các phần tử
logic, chẳng hạn như phương pháp dùng bìa cácnô. Về mặt lý thuyết bất kỳ hệ thống
số nào cũng có thể biểu diễn dưới dạng các hàm Boolean. Nhưng việc tối thiểu hóa
cũng như xử lý hàng nghìn hàm logic rõ ràng là không thực tế. Trong khi các yêu cầu
thiết kế hệ thống hiện nay đòi hỏi tới hàng nghìn hàm Boolean. Hình 1.1 minh họa
cho phương pháp thiết kế dùng hàm Boolean.
Hình 1.1: Minh họa cho phương pháp thiết kế dùng hàm Boolean.
1.1.2. Phương pháp thiết kế dựa trên sơ đồ
Phương pháp thiết kế dựa trên sơ đồ là sự mở rộng của phương pháp thiết kế
dùng hàm Boolean. Trong phương pháp này, người thiết kế có thể sử dụng thêm các
mạch chức năng thông dụng khác ngoài các phần tử cơ bản là cổng và flip-flop. Như
vậy, phương pháp này cho phép thiết kế hệ thống một cách có cấu trúc. Phương pháp
thiết kế dựa trên sơ đồ được dùng phổ biến và có rất nhiều phần mềm cung cấp cho
người thiết kế một giao diện đồ họa thuận tiện. Trong nhiều năm, phương pháp này

9
là phương pháp được sử dụng chủ yếu trong ngành công nghiệp chế tạo phần cứng
số.
1.1.3. Nhược điểm của các phương pháp thiết kế truyền thống
Mặc dù có ưu điểm là dễ hiểu và dễ sử dụng, phương pháp thiết kế dùng hàm
Boolean và phương pháp thiết kế dựa trên sơ đồ có một số nhược điểm. Nhược điểm
lớn nhất của các phương pháp này là chúng chỉ mô tả hệ thống dưới dạng mạng các
phần tử nối với nhau. Nhìn vào một hệ thống được mô tả bằng hai phương pháp trên
(dưới dạng hàm Boolean hay dạng sơ đồ) ta không thể lập tức chỉ ra được các chỉ
tiêu và chức năng chung nhất của hệ thống. Ðể thiết kế một hệ thống bằng phương
pháp truyền thống, người thiết kế cần phải đi qua hai bước thực hiện hoàn toàn thủ
công đó là: Chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn hệ
thống bằng hàm Boolean, sau đó chuyển từ hàm Boolean sang sơ đồ mạch của hệ
thống. Cũng tương tự khi cần hiểu được một hệ thống, người ta cần phân tích sơ đồ
mạch của hệ thống chuyển nó thành các hàm Boolean sau đó mới lập lại được các
chức năng, hoạt động của hệ thống. Các bước nói trên hoàn toàn phải thực hiện thủ
công không có bất kỳ sự trợ giúp nào của máy tính. Ở đây người thiết kế chỉ có thể
sử dụng máy tính làm công cụ hỗ trợ trong việc vẽ sơ đồ mạch của hệ thống (dùng
công cụ CAE – Computer Aided Tool) và chuyển từ sơ đồ mạch sang công cụ tổng
hợp mạch vật lý.
Một nhược điểm khác của phương pháp thiết kế truyền thống là sự giới hạn trong
độ phức tạp của hệ thống. Phương pháp dùng hàm Boolean chỉ có thể dùng để thiết
kế các hệ thống lớn nhất biểu diễn bởi vài trăm hàm. Phương pháp dựa trên sơ đồ chỉ
có thể dùng để thiết kế lớn nhất chứa tới 6000 phần tử.
1.2. PHƯƠNG PHÁP THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ TẢ PHẦN
CỨNG
Ngôn ngữ mô tả phần cứng giải quyết được nhược điểm lớn nhất của các phương
pháp thiết kế trước đây. Nếu các phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả
hệ thống (các chỉ tiêu về chức năng của hệ thống) sang tập hợp các hàm logic bằng
tay thì bước chuyển đổi đó hoàn toàn không cần thiết khi dùng ngôn ngữ mô tả phần

cứng. Hầu hết các công cụ thiết kế dùng ngôn ngữ mô tả phần cứng đều cho phép sử
dụng biểu đồ trạng thái (finite-state-machine) cho các hệ thống tuần tự cũng như cho
phép sử dụng bảng chân lý cho hệ thống tổng hợp. Việc chuyển đổi từ các biểu đồ
trạng thái và bảng chân lý sang mã ngôn ngữ mô tả phần cứng được thực hiện tự
động. Ngôn ngữ mô tả phần cứng được dùng nhiều để thiết kế cho các linh kiện
10
logic khả trình (PLD-Programmable Logic Device) từ loại đơn giản đến các loại
phức tạp như ma trận cổng lập trình được (Field Programmable Gate Array).
Phương pháp thiết kế số bằng ngôn ngữ mô tả phần cứng có nhiều ưu điểm hơn
so với phương pháp thiết kế truyền thống. Hãy lấy bộ nhân 16×16 làm ví dụ để so
sánh. Một bộ nhân thường phức tạp về mặt sắp xếp các bộ cộng và thanh ghi, công
việc này yêu cầu khá nhiều cổng. Ví dụ của chúng ta có hai đầu vào 16 bit (A và B)
và đầu ra 32 bit tổng cộng có 64 cổng vào/ra. Mạch này yêu cầu cỡ 6000 cổng. Thực
hiện theo sơ đồ mạch các cổng sẽ phải được lấy ra, đặt vào bản vẽ và nối với nhau
sau đó nối với các cổng vào ra. Như vậy sẽ phải mất khoảng 3 ngày làm việc.
Việc thực hiện bằng ngôn ngữ mô tả phần cứng, cũng với khoảng 6000 cổng, cần
8 dòng lệnh và có thể thực hiện trong 3 phút. Tệp này chứa tất cả những thông tin
cần thiết để định nghĩa một bộ nhân 16×16. Ngoài việc tiết kiệm thời gian ra,
phương pháp thiết kế bằng ngôn ngữ mô tả phần cứng còn độc lập hoàn toàn với nhà
cung cấp, đây cũng là một lợi thế của phương pháp này.
Hình 1.2: Bộ nhân (16×16) được thiết kế bằng HDL.
Để tạo ra bộ nhân 32×32, ta chỉ cần thay đổi một chút xíu. Đối với phương pháp
vẽ mạch, cần phải có 3 bản sao của thiết kế 30 trang trước đó, tức là 90 trang cần
phải vẽ lại, sau đó định địa chỉ lại cho bề rộng đường bus lớn hơn. Điều này có lẽ
phải cần đến 4 giờ chế bản bằng phương pháp đồ họa. Theo cách mô tả bằng ngôn
ngữ mô tả phần cứng thì vấn đề chỉ là thay đổi đường bus từ 15 thành 31 ở dòng thứ
2 và từ 31 thành 63 ở dòng thứ 3. Việc này có lẽ chỉ mất đến 6 giây. Sau đây là minh
11
họa của ngôn ngữ mô tả phần cứng khi thay đổi 2 bộ nhân trên. Ví dụ thay đổi file
HDL:

Đầu tiên là bộ nhân 16×16:
entity MULT is
port(A,B:in std_logic(15 downto 0);
Y:out std_logic(31 downto 0));
end MULT;
architecture BEHAVE of MULT is
begin
Y <= A * B;
end BEHAVE;
Sau đó được sửa thành bộ nhân 32 x 32:
entity MULT is
port(A,B:in std_logic(31 downto 0);
Y:out std_logic(63 downto 0));
end MULT;
architecture BEHAVE of MULT is
begin
Y <= A * B;
end BEHAVE;
1.3. CÁC QUÁ TRÌNH THỰC HIỆN THIẾT KẾ SỐ BẰNG NGÔN NGỮ MÔ
TẢ PHẦN CỨNG TRÊN FPGA
Phương pháp thiết kế số bằng ngôn ngữ mô tả phần cứng thể hiện nhiều ưu điểm
hơn so với phương pháp thiết kế số truyền thống. Sau đây, chúng ta sẽ tìm hiểu các
bước chính để thực hiện thiết kế số dùng ngôn ngữ mô tả phần cứng trên FPGA.
Hình 1.3 thể hiện quá trình thiết kế số trên FPGA.
12
Hình 1.3: Quá trình thiết kế số trên FPGA.
Quá trình 1: Mô tả ban đầu về thiết kế (Specification). Khi xây dựng một chip
khả trình (FPGA) với ý nghĩa dành cho một ứng dụng riêng biệt, vì xuất phát từ mỗi
ứng dụng trong thực tiễn cuộc sống, sẽ đặt ra yêu cầu phải thiết kế IC thực hiện tối
ưu nhất những ứng dụng đó. Bước đầu tiên của quy trình thiết kế này có nhiệm vụ

tiếp nhận các yêu cầu của thiết kế và xây dựng nên kiến trúc tổng quát của thiết kế.
Các bước gồm:
• Mô tả thiết kế (Design Specification): Trong bước này, từ những yêu cầu của
thiết kế và dựa trên khả năng của công nghệ hiện có, người thiết kế kiến trúc
sẽ xây dựng nên toàn bộ kiến trúc tổng quan cho thiết kế. Nghĩa là trong bước
này người thiết kế kiến trúc phải mô tả được những vấn đề sau:
- Thiết kế có những khối nào?
- Mỗi khối có chức năng gì?
- Hoạt động của thiết kế và của mỗi khối ra sao?
13
- Phân tích các kỹ thuật sử dụng trong thiết kế và các công cụ, phần mềm hỗ
trợ thiết kế.
Một thiết kế có thể được mô tả sử dụng ngôn ngữ mô tả phần cứng, như
VHDL hay Verilog HDL hoặc có thể mô tả qua bản vẽ mạch (schematic
capture). Một thiết kế có thể vừa bao gồm bản vẽ mạch mô tả sơ đồ khối
chung, vừa có thể dùng ngôn ngữ HDL để mô tả chi tiết cho các khối trong sơ
đồ.
• Mô phỏng chức năng (Function simulation): Sau khi mô tả thiết kế, người
thiết kế cần mô phỏng tổng thể thiết kế về mặt chức năng để kiểm tra thiết kế
có hoạt động đúng với các chức năng yêu cầu.
• Tổng hợp logic (Logic Synthesis): Tổng hợp logic là quá trình tổng hợp các
mô tả thiết kế thành sơ đồ bố trí mạch (netlist). Quá trình chia thành 2 bước:
Chuyển đổi các mã RTL, mã HDL thành mô tả dưới dạng các biểu thức đại số
Boolean và dựa trên các biểu thức này kết hợp với thư viện tế bào chuẩn sẵn
có để tổng hợp nên một thiết kế tối ưu.
Hình 1.4: Logic Synthesis.
• Hiệu chỉnh các kết nối (Datapath Schematic): Nhập netlist và các ràng buộc
về thời gian vào một công cụ phân tích thời gian (timing analysic). Công cụ
phân tích này sẽ tách rời tất cả các kết nối của thiết kế, tính thời gian trễ của
các kết nối dựa trên các ràng buộc. Dựa trên kết quả phân tích (report) của

công cụ phân tích, xác định các kết nối không thỏa mãn về thời gian. Tùy theo
nguyên nhân dẫn đến không thỏa mãn mà ta có thể viết lại mã và tiến hành lại
tổng hợp logic hoặc hiệu chỉnh lại các ràng buộc.
14
Quá trình 2: Thực thi (Implementation). Ta đã có sơ đồ bố trí netlist mô tả tổng
thể thiết kế tại mức cổng (chỉ gồm các cổng logic cơ bản). Quá trình này sẽ đặt sơ đồ
netlist này lên chip, gọi là quá trình thực thi (Device Implementation). Quá trình này
gồm các bước:
• Ánh xạ (mapping): Chuẩn bị dữ liệu đầu vào, xác định kích thước các khối.
Các khối này sẽ phải phù hợp với cấu trúc của một tế bào cơ bản của FPGA
(gồm nhiều cổng logic) và đặt chúng vào các vị trí tối ưu cho việc chạy dây.
Hình 1.5: Mapping.
• Đặt khối và định tuyến (Place & Route): Đặt khối tức là đặt các khối ánh xạ
vào các tế bào (cell) ở vị trí tối ưu cho việc chạy dây.
Hình 1.6: Placing.
15
Định tuyến tức là thực hiện việc nối dây các tế bào.
Hình 1.7: Routing.
Để thực hiện việc này, chúng ta cần có các thông tin sau:
- Các thông tin vật lý về thư viện tế bào, ví dụ kích thước tế bào, các điểm để
kết nối, định thời, các trở ngại trong khi đi dây.
- Một netlist được tổng hợp sẽ chỉ ra chi tiết các instance và mối quan hệ kết
nối bao gồm cả các đường dẫn bị hạn chế trong thiết kế.
- Tất cả các yêu cầu của tiến trình cho các lớp kết nối, bao gồm các luật thiết
kế cho các lớp chạy dây, trở kháng và điện dung, tiêu thụ năng lượng, các luật
về sự dẫn điện trong mỗi lớp.
Quá trình 3: Nạp (download) và lập trình (program). Sau quá trình thực hiện, thiết kế
cần được nạp vào FPGA dưới dạng dòng bit (bit stream). Quá trình nạp thiết kế vào FPGA
thường nạp vào bộ nhớ bay hơi, ví dụ như SRAM. Thông tin cấu hình sẽ được nạp vào bộ
nhớ. Dòng bit được truyền lúc này sẽ mang thông tin định nghĩa các khối logic cũng như kết

nối của thiết kế. Tuy nhiên, lưu ý rằng, SRAM sẽ mất dữ liệu khi mất nguồn nên thiết kế sẽ
không lưu được đến phiên làm việc kế tiếp. Lập trình là thuật ngữ để mô tả quá trình nạp
chương trình cho các bộ nhớ không bay hơi, ví dụ như PROM. Như vậy, thông tin cấu hình
vẫn sẽ được lưu trữ khi mất nguồn.
16
Chương 2
GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH
VÀ GIẢI PHÁP CỦA XILINX
2.1. GIỚI THIỆU VỀ VI MẠCH LOGIC KHẢ TRÌNH
2.1.1. Mảng logic khả trình (PLA)
Cuối những năm 1970, các linh kiện logic chuẩn đang chiếm toàn bộ trên bản
mạch in, và một số người đã đặt vấn đề: “Sẽ thế nào nếu nhà thiết kế có thể thực
hiện kết nối các đường mạch trong một linh kiện lớn hơn”. Điều này sẽ cho phép các
nhà thiết kế tích hợp nhiều linh kiện logic chuẩn trong một vi mạch.
Ron Cline đã đưa ra ý tưởng về hai mảng khả trình. Hai mảng này kết hợp các
cổng AND và OR. Đây là kiến trúc mềm dẻo và được gọi là PLA (Programmable
Logic Array). Đặc điểm PLA là:
• Có hai mảng khả trình.
• Bất kỳ sự kết hợp nào là của các cổng AND và OR.
• Mật độ logic cao nhất.
• Nhiều cầu chì, chậm hơn logic mảng khả trình (PAL).
• Mảng Logic khả trình.
Hình 2.1 mô tả kiến trúc của PLA.
Hình 2.1: Kiến trúc của PLA.
17
2.1.2. Logic mảng khả trình (PAL)
PAL đã có sự thay đổi nhỏ về kiến trúc so với PLA. Kiến trúc mới này khác với
PLA ở chỗ là một mảng khả trình được cố định với mảng cổng OR chỉ có mảng
AND là khả trình. Kiến trúc PAL nhanh hơn, phần mềm ít phức tạp hơn, nhưng
không được mềm dẻo như PLA. Đặc điểm của PAL là:

• Một mảng khả trình AND và một mảng OR cố định.
• Kết hợp có hạn của các cổng AND và OR.
• Mật độ logic trung bình.
• Ít cầu chì hơn, và nhanh hơn PLA.
• Logic mảng khả trình.
Hình 2.2 mô tả kiến trúc của PAL.
Hình 2.2: Kiến trúc của PAL.
Kiến trúc này có một mạng lưới kết nối ngang và dọc. Ở mỗi kết nối có một cầu
chì. Với sự trợ giúp của công cụ phần mềm, người thiết kế có thể lựa chọn kết nối
nào không được nối bằng cách phá vỡ tất cả các cầu chì không được kết nối (việc
này được thực hiện bằng một bộ nạp, nhưng bây giờ thường làm bằng công nghệ
ISP).
Công nghệ PLD đã phát triển từ những ngày đầu tiên cho đến bây giờ bởi những
công ty như Xilinx đang sản xuất những vi mạch trên công nghệ CMOS tiêu thụ
năng lượng cực nhỏ, dựa trên công nghệ lưu trữ flash. PLD dựa trên flash cho phép
khả năng lập trình lại nhiều lần, lập trình và xóa bằng điện.
18
2.1.3. Vi mạch logic khả trình phức hợp (CPLD)
CPLD (Complex PLD) mở rộng mật độ của SPLD (Simple PLD), CPLD có một
vài khối PLD hay còn gọi là macrocells trong một linh kiện vi điện tử, với mạng kết
nối nằm ở giữa. Các khối logic đơn giản có thể được thực hiện với một khối đơn lẻ
còn các khối logic tinh vi hơn yêu cầu nhiều khối và sử dụng với mạng kết nối
chung. CPLD có đặc điểm sau:
• Mạng kết nối trung tâm.
• Định thời trước, đơn giản.
• Định tuyến dễ dàng.
• Tác động nhanh.
Hình 2.3 mô tả kiến trúc của CPLD.
Hình 2.3: Kiến trúc CPLD.
Các CPLD rất thích hợp trong việc thực hiện các thiết kế phức tạp với tốc độ làm

việc lớn hơn 200MHz (tương đương 5ns). Mô hình định thời cho CPLD rất dễ tính
toán bởi vậy trước khi bắt đầu thiết kế ta có thể tính toán các tốc độ từ đầu vào đến
đầu ra trong thiết kế của mình dựa trên mô hình định thời này.
CPLD cho phép thiết kế dễ dàng, chi phí phát triển thấp hơn, và cho phép đưa các
sản phẩm ra thị trường một cách nhanh chóng. Các ưu điểm của CPLD như:
• Thiết kế dễ: CPLD hỗ trợ cách thiết kế một cách đơn giản. Khi một thiết kế
được mô tả bằng sơ đồ nguyên lí, hoặc ngôn ngữ mô tả phần cứng, ta chỉ cần
dùng công cụ phát triển CPLD để thực hiện tối ưu thiết kế, ghép nối thiết kế
vào thiết bị đích, và mô phỏng thiết kế. Công cụ thiết kế tạo ra một file để nạp
cho CPLD với chức năng mong muốn. Điều này tạo ra một cấu trúc phần
cứng và cho phép các quá trình xử lý, gỡ rối có thể thực hiện ngay từ khi bắt
đầu công việc thiết kế. Khi cần thiết phải thay đổi thiết kế, ta có thể thay đổi
thiết kế đó vào trong công cụ phát triển CPLD và thực thi trên nó, sau đó ta có
thể kiểm tra thiết kế mới ngay sau đó bằng một phần mềm mô phỏng.
19
• Chi phí phát triển thấp: CPLD làm cho chi phí phát triển giảm xuống còn
rất thấp. Vì có thể lập trình lại được, ta có thể dễ dàng và không tốn kém gì để
thay đổi thiết kế của mình. Điều này cho phép ta tối ưu thiết kế và thêm
những tính năng mới để nâng cấp sản phẩm. Công cụ thiết kế CPLD rất đáng
tin cậy và rất rẻ (hoặc miễn phí đối với trường hợp của Xilinx).
• Giảm kích thước bo mạch sử dụng: CPLD đưa ra một mức tích hợp cao
hơn (tức là một mức độ lớn các cổng hệ thống trên một đơn vị diện tích).
Điều này cung cấp một giải pháp hoàn chỉnh cho người thiết kế mà sản phẩm
của họ phải thích hợp với các bo mạch có diện tích bị giới hạn. Ví dụ, CP56
CPLD có khoảng cách của các chân là 0,5mm và kích thước đóng gói chỉ là
6×6 mm, điều này cho phép đưa ra một sản phẩm nhỏ gọn cùng với mức độ
tiêu thụ nguồn thấp. CoolRunner II CPLD cũng được đóng gói sẵn ở gói QF
(Quad Flat) là dạng nhỏ nhất trong công nghiệp. QF32 có kích thước chỉ là
5×5mm. Hình 2.4 là các dạng đóng gói khác nhau của CPLD.
Hình 2.4: Các dạng đóng gói khác nhau của CPLD.

• Chi phí của người sử dụng: Chi phí người sử dụng có thể định nghĩa như là
chi phí để bảo dưỡng, sửa chữa hoặc bảo hành sản phẩm. Bởi vì CPLD có khả
năng tái lập trình, không đòi hỏi phải tái lập lại phần cứng, như vậy chi phí rất
ít để thay đổi thiết kế sử dụng chúng.
• Độ tin cậy: Có độ tin cậy cao bởi việc sử dụng công suất nhỏ dẫn đến giảm
sự tiêu thụ năng lượng và giảm nhiệt.
2.1.4. Mảng cổng cho phép lập trình được (FPGA)
Năm 1985, Xilinx giới thiệu một ý tưởng mới: Đó là sự kết hợp giữa việc điều
khiển của người dùng và thời gian tiếp cận thị trường của các PLD cùng với mật độ
tích hợp và giá của các ma trận cổng. Điều này đã cho ra đời vi mạch FPGA và cho
đến nay Xilinx vẫn là nhà cung cấp số một về FPGA trên thế giới.
FPGA (Field Programmable Gate Array) thường là cấu trúc của các tế bào logic
(Logic Cell hay module) và các liên kết hoàn điều khiển được. Điều này có nghĩa là
ta có thể thiết kế, lập trình và thay đổi bất cứ lúc nào ta muốn. FPGA ngày nay đang
vượt qua giới hạn 10 triệu cổng và ta có thể thực hiện những tham vọng cho những
thiết kế lớn. Hình 2.5 là kiến trúc của một vi mạch FPGA.
20
Hình 2.5: Kiến trúc của FPGA.
Từ khi giới thiệu dòng Spartan đến giờ Xilinx đã hoàn thiện mảng cổng về mọi
khía cạnh - giá cả, cổng, số các đầu vào ra cũng như hiệu năng và chi phí.
Cơ bản thì có hai loại FPGA: Loại khả trình dựa trên SRAM và loại lập trình một
lần (One Time Programmable). Hai loại FPGA này khác nhau về việc thực hiện các
logic cell và cơ cấu sử dụng để tạo nên kết nối trong linh kiện. Với FPGA dựa trên
SRAM thì SRAM xác định các kết nối và các khối logic trong bảng tìm kiếm (Look
Up Table). Với FPGA lập trình chỉ một lần thì các liên kết là các cầu chì và các khối
Logic là các cổng truyền thống.
Loại ưu thế hơn cả là loại dựa trên SRAM vì nó có thể lập trình lại nhiều lần.
Thực tế thì một SRAM FPGA được nạp cấu hình lại mỗi khi được khởi động, bởi vì
FPGA loại này thực chất là một chíp nhớ theo ý muốn. Điều này giải thích tại sao
cần có một số PROM nối tiếp hay hệ thống nhớ với mọi SRAM FPGA. Chúng ta hãy

xem cấu trúc của SRAM FPGA như ở hình 2.6.
Hình 2.6: Cấu trúc SRAM FPGA.
21
Trong các tế bào logic, một bảng tìm kiếm LUT xác định đầu ra dựa trên giá trị
đầu vào. Ở hình 2.6, có sáu sự kết hợp khác nhau của bốn đầu vào để xác định giá trị
đầu ra. Các bit trong SRAM cũng được dùng để tạo ra các kết nối.
Các OTP FPGA chỉ cho phép lập trình một lần. Hình 2.7 là cấu trúc của OTP
FPGA.
Hình 2.7: Tế bào Logic OTP.
Trong OTP FPGA không cần SPROM hay các phương tiện khác để tải chương
trình về FPGA. Tuy nhiên mỗi khi muốn thay đổi thiết kế, ta phải thay chip khác.
Các tế bào logic OTP cũng tương tự như bộ PLD với các bộ cổng và các Flip-Flop
chuyên dụng.
2.2. GIỚI THIỆU VỀ GIẢI PHÁP CỦA XILINX
Giải pháp logic khả trình của Xilinx giúp tối thiểu rủi ro cho việc chế tạo thiết bị
điện tử bằng cách rút ngắn thời gian cần thiết để phát triển sản phẩm và đưa ra thị
trường. Ta có thể thiết kế và kiểm tra mạch điện trong các vi mạch logic khả trình
của Xilinx nhanh hơn so với việc lựa chọn các phương pháp thiết kế truyền thống
như là mảng cổng logic cố định và lập trình mặt nạ. Hơn nữa, bởi vì các vi mạch của
Xilinx là các vi mạch chuẩn nên nó chỉ cần được lập trình, ta không mất thời gian
chờ đợi để có được nguyên mẫu hoặc không phải trả tiền cho chi phí nghiên cứu
không thường xuyên.
Các sản phẩm của Xilinx hướng tới nhiều mảng thị trường. Trong đó có các lĩnh
vực như xử lí dữ liệu, viễn thông, điều khiển công nghiệp, máy công cụ, điện tử gia
dụng, tự động hóa, quốc phòng, và hàng không. Hình 2.8 là các vi mạch Logic khả
trình của Xilinx.
22
Hình 2.8: Các vi mạch Logic khả trình của Xilinx.
2.2.1. CPLD Xilinx
Hiện tại Xilinx chia các sản phẩm CPLD của mình ra làm hai loai: XC9500 và

CoolRunner. Hai loại này tập trung chủ yếu là hai dòng phổ biến nhất đó là
XC9500XL và CoolRunner-II.
- XC9500XL với tính năng tốc độ cao, chi phí thiết kế thấp.
- CoolRunner-II thì tiêu thụ năng lượng cực thấp, dẫn đầu trong các thiết bị cầm
tay. Với dòng tiêu thụ ở trạng thái nghỉ dưới micro ampe và tối thiểu năng lượng
tiêu thụ khi hoạt động. CoolRunner-II đặc biệt phù hợp với các ứng dụng cầm tay
chạy pin, hay những ứng dụng mà tiêu thụ nguồn là vấn đề cần phải quan tâm.
Để lựa chọn được vi mạch tốt nhất cho các tiêu chuẩn thiết kế của mình, ta cần
chú ý tới các chi tiết thiết kế và đặc điểm sản phẩm để có những thông tin về vi mạch
mình dùng trong thiết kế như:
• Mật độ: Mỗi phần đều có một lượng cổng hay ước lượng mật độ logic mỗi
phần.
• Số lượng thanh ghi: Đếm số thanh ghi cần cho bộ đếm, các máy trạng thái,
các thanh ghi và các bộ chốt. Số lượng các macrocell cần thiết trong một vi
mạch.
• Số lượng chân vào/ra: Mạch thiết kế cần bao nhiêu lối vào và bao nhiêu lối
ra.
• Tốc độ: Cần phải xác định tốc độ lớn nhất để lựa chọn vi mạch cho phù hợp
với thiết kế của mình.
23
• Đóng gói: Tác động của các điều kiện điện cơ, các kiểu đóng gói khác nhau
cho phù hợp với thiết kế của mình.
• Công suất nhỏ: Thiết kế có yêu cầu công suất thấp nhất có thể không? Có
quan tâm đến vấn đề giảm nhiệt lượng cho thiết bị không?
Giới thiệu CPLD công suất nhỏ CoolRunner-II:
• Dòng CoolRunner-II của CPLD kết hợp giữa nguồn tiêu thụ rất thấp và tốc độ
cao, nhiều cổng vào ra trên một vi mạch. Dòng CoolRunner-II có từ 32 đến
512 Macrocell. CoolRunnerII-CPLD là nét đặc biệt của công nghệ
RealDigital cho phép các thiết bị gần như không tiêu thụ nguồn ở chế độ chờ.
Điều này khiến nó trở nên lý tưởng cho các mảng thị trường của các thiết bị

điện tử cầm tay, chạy pin đang tăng trưởng nhanh như: Laptop PCs, điện
thoại cầm tay, PDA, trò chơi điện tử,...
• Dòng CoolRunner-II của CPLD tiêu thụ nguồn thấp. Đây là một đặc điểm
quan trọng cho các thiết bị có hiệu suất cao, nhạy cảm với nhiệt độ như là các
chuyển mạch viễn thông, hệ thống hội nghị bằng hình ảnh, các bộ mô phỏng,
các bộ kiểm tra đầu cuối... Hình 2.9 minh họa các loại CPLD và xu hướng
ứng dụng của CPLD.
Hình 2.9: Các hướng ứng dụng với CPLD.
• Công nghệ CMOS được dùng trong CoolRunner-II CPLD phát ra nhiệt lượng
rất nhỏ, cho phép sử dụng những bộ đóng gói nhỏ trong suốt quá trình hoạt
động ở tốc độ cao. Các đóng gói như VQ100, TQ144 và FT256. Loại FT256
đặc biệt phù hợp với các sản phẩm cầm tay mỏng với yêu cầu mật độ logic
cao.
• Bảng 2.1 chỉ ra các đặc điểm nổi trội thông qua dòng CoolRunner-II.
24
Bảng 2.1: Dòng CoolRunner-II.
2.2.2. FPGA Xilinx
Xilinx cũng chia sản phẩm FPGA của mình ra làm hai loại là: Spartan FPGA và
Virtex FPGA. Các dòng sản phẩm FPGA như: Spartan-3/3E FPGAs, Virtex-4/5
FPGAs.
Họ Spartan-3/3E FPGAs
Họ Spartan FPGA là ý tưởng dùng cho các ứng dụng với số lượng lớn, giá thành
thấp, chúng được đưa vào các thiết bị đích nhằm thay thế các mảng cổng logic cố
định và các sản phẩm chuyên dụng (chẳng hạn như các chip giao tiếp bus). Với họ
Spartan-3 FPGA (1.2V), nó không chỉ có giá thành thấp mà còn được tích hợp thêm
một số tính chất mới về cấu trúc. Spartan-3 FPGA đã tạo ra sự thay thế các chip
ASIC và các vi mạch chuyên dụng khác. Ví dụ một chip Spartan-3 FPGA trong hệ
thống đa phương tiện truyền thông trong xe hơi có thể tập hợp được rất nhiều chức
năng của hệ thống, bao gồm các lõi IP nhúng, giao tiếp hệ thống khách hàng, DSP và
các đơn vị logic khác. Hình 2.10 dưới đây minh họa một hệ thống Multimedia trên

xe hơi.
25

×