Tải bản đầy đủ (.pdf) (61 trang)

Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC 310

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 (2.15 MB, 61 trang )

TRƯỜNG ĐẠI HỌC LÂM NGHIỆP VIỆT NAM
KHOA CƠ ĐIỆN & CƠNG TRÌNH
BỘ MƠN KỸ THUẬT ĐIỆN VÀ TỰ ĐỘNG HĨA

KHĨA LUẬN TỐT NGHIỆP
TÊN ĐỀ TÀI:
Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ
thống CIC-310

Giảng viên hướng dẫn : ThS. Lê Minh Đức
Sinh viên thực hiện

: Nguyễn Văn Sáng

Lớp

: K58-CĐT

Khóa

: K58

Hà Nội, 2017


TRƢỜNG ĐẠI HỌC LÂM NGHIỆP VIỆT NAM
KHOA CƠ ĐIỆN VÀ CƠNG TRÌNH
BỘ MƠN KỸ THUẬT ĐIỆN VÀ TỰ ĐỘNG HĨA

KHĨA LUẬN TỐT NGHIỆP
Tên đề tài: Nghiên cứu công nghệ FPGA và phát triển


ứng dụng trên hệ thống CIC-310

Giảng viên hƣớng dẫn : ThS.Lê Minh Đức
Sinh viên thực hiện

: Nguyễn Văn Sáng

Mã sinh viên

: 1351082130

Lớp

: K58_CĐT

Khóa

: 2013-2017

Hà Nội - 2017


LỜI NÓI ĐẦU
Ngày nay với sự phát triển hết sức mạnh mẽ cơng nghệ, thuật tốn ngày càng
đƣợc đổi mới và tối ƣu hố nhằm nâng cao tính hiệu quả của nó. Tuy nhiên, cơng
nghệ phát triển càng cao thì đòi hỏi phần cứng phải đủ nhanh để xử lý. Các mạch
lọc tƣơng tự trƣớc đây khơng cịn đủ khả năng để đáp ứng u cầu đó nữa. Vì vậy,
FPGA đã ra đời nhƣ một giải pháp cung cấp môi trƣờng làm việc hiệu quả cho các
ứng dụng thực tế. Tính linh động cao trong q trình thiết kế cho phép FPGA giải
quyết những bài toán phức tạp mà trƣớc kia chỉ thực hiện nhờ phần mềm máy tính.

Ngồi ra, nhờ mật độ cổng logic cao, FPGA đƣợc ứng dụng cho những bài tốn địi
hỏi khối lƣợng tính tốn lớn và dùng trong các hệ thống làm việc theo thời gian
thực. Những ứng dụng trong thực tế của FPGA rất rộng rãi, bao gồm: các hệ thống
hàng không, vũ trụ, quốc phịng,...Đặc biệt, với khả năng tái lập trình, ngƣời sử
dụng có thể thay đổi lại thiết kế của mình chỉ trong vài giờ.
Nhờ những đặc điểm mạnh mẽ và ứng dụng thực tiễn của FPGA em đã chọn
đề tài: “Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC310”.
Đề tài nghiên cứu khóa luận bao gồm các nội dung chính nhƣ sau:
Chƣơng 1: Tổng quan về FPGA
Chương 2: Hệ thống phát triển CIC-310 và môi trường lập trình MAX + PLUS II
Chương 3: Thiết kế một số mạch logic sử dụng hệ thống phát triển CIC-310
Mặc dù em đã nỗ lực và cố gắng để hồn thiện khóa luận một cách tốt nhất,
nhƣng do thời gian có hạn và vì kiến thức cịn hạn chế nên em vẫn khơng thể tránh
khỏi những sai sót trong việc xây dựng hệ thống và trình bày khóa luận. Em rất
mong nhận đƣợc ý kiến đóng góp của thầy, cô và các bạn.
Em xin chân thành cảm ơn các thầy cô trong trƣờng Đại học Lâm nghiệp
Quốc gia Việt Nam đã dạy bảo em trong suốt quá trình em học tập, rèn luyện tại
trƣờng, đặc biệt là thầy Lê Minh Đức và các thành viên trong tập thể lớp K58-CĐT
đã giúp em hồn thành tốt khóa luận này.
Hà Nội, ngày … tháng … năm 2017
Sinh viên thực hiện đề tài

Nguyễn Văn Sáng


MỤC LỤC
LỜI NÓI ĐẦU
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC BẢNG BIỂU

DANH MỤC CÁC HÌNH VẼ
CHƢƠNG 1: TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL ....................... 1
1.1. FPGA là gì? ......................................................................................................... 1
1.2. Lịch sử ra đời của FPGA ................................................................................... 2
1.3. Cơ bản lập trình FPGA ..................................................................................... 3
1.4. Ngơn ngữ VHDL ................................................................................................ 9
1.4.1. Giới thiệu về VHDL .......................................................................................... 9
1.4.2. Ƣu điểm của VHDL .......................................................................................... 9
1.4.3. Cấu trúc ngôn ngữ của VHDL ........................................................................ 10
1.4.4. Cấu trúc một mơ hình hệ thống mô tả bằng VHDL ....................................... 10
1.4.5. Cấu trúc chung của một chƣơng trình mơ tả VHDL ....................................... 13
CHƢƠNG 2: HỆ THỐNG PHÁT TRIỂN CIC-310 VÀ FPGA ......................... 16
2.1. Hệ thống phát triển CIC 310 ........................................................................... 16
2.1.1. Bảng phát triển SN-PLDE2............................................................................. 16
2.1.2. Bảng thí nghiệm SN-PLDE3A ........................................................................ 18
2.2. Giới thiệu phần mềm MAX + PLUS II .......................................................... 27
2.2.1. Cài đặt ............................................................................................................. 27
2.2.2. Kết nối máy tính với hệ thống CIC-310.......................................................... 29
2.3. Các thao tác sử dụng cơ bản trên MAX+Plus II ........................................... 29
2.3.1. Cấu trúc của MAX+Plus II ............................................................................. 29
Hình 2.13: Mơi trƣờng thiết kế Max+ Plus II....................................................... 29
2.3.2. Trình tự thiết kế mạch ..................................................................................... 30
2.3.3. Thiết kế đề án với Graphic Editor (Bộ soạn thảo đồ hoạ) .............................. 31
2.3.4. Biên soạn thiết kế ............................................................................................ 32
2.4. Ví dụ minh họa thiết kế mạch ......................................................................... 34


2.4.1. Ví dụ bằng file vẽ *gdf.................................................................................... 34
2.4.2. Ví dụ bằng file lập trình *tdf ........................................................................... 35
2.4.3. Ví dụ bằng file mô phỏng................................................................................ 36

CHƢƠNG 3: THIẾT KẾ THỬ NGHIỆM MỘT SỐ MẠCH LOGIC SỬ
DỤNG HỆ THỐNG PHÁT TRIỂN CIC-310 ....................................................... 37
3.1. Thiết kế mạch logic tổ hợp .............................................................................. 37
3.2. Thiết kế mạch logic tuần tự ............................................................................. 46
KẾT LUẬN
DANH MỤC TÀI LIỆU THAM KHẢO


DANH MỤC CÁC TỪ VIẾT TẮT

CPLD

Complex Programmable Logic Device

Thiết bị lập trình logic bù

DSP

Digital Signal Processing

Xử lí tín hiệu số

FF

Flip-Flop

Phần tử nhớ

FPGA


Field-Programmable Gate Array

JTAG

Joint Test Adivisory Group

Chuẩn giao tiếp

LED

Light Emitting Diode

Diode phát sáng

LUT

Look up table

Bảng ánh xạ

MAC

Multication and accumulation

Bộ nhân cộng

RAM

Random Access Memory


Bộ nhớ truy cập ngẫu nhiên

ROM

Read-Only Memory

Bộ nhớ chỉ đọc

SPLD

Simple Programable Devices

Lập trình thiết bị đơn giản

SRAM

Stactic Random Access Memory

Bộ nhớ truy cập ngẫu nhiên tĩnh

Very High Speed Intergrated Circuit

Ngôn ngữ mô tả phần cứng cho

Hardware Description Language

mạch tích hợp tốc độ rất cao

Very High Speed Intergrated Circuit


Mạch tích hợp tốc độ cao

VHDL
VHSIC

Ma trận cổng lập trình đƣợc theo
trƣờng


DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Sơ đồ công tắc đầu vào Logic .................................................................. 19
Bảng 2.2: Sơ đồ chân cắm hiển thị LED Logic ........................................................ 20
Bảng 2.3: Sơ đồ chân cắm hiển thị 7 phân đoạn 6 chữ số ........................................ 21
Bảng 2.4: Sơ đồ bố trí chân của máy phát điện xung ............................................... 23
Bảng 2.5: Sơ đồ bàn phím ma trận ............................................................................ 24
Bảng 2.6: Sơ đồ chân cắm bộ hiển thị 16 phân đoạn. ............................................... 25
Bảng 2.7: Sơ đồ chân cắm điểm chấm 5x7 .............................................................. 26
Bảng 2.8: Sơ đồ chân cắm LCD 2021 ....................................................................... 27


DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Cấu trúc tổng thể một FPGA ......................................................................1
Hình 1.2: Khối logic FPGA ........................................................................................2
Hình 1.3: Lƣu đồ thiết kế FPGA .................................................................................6
Hình 1.4: Khai báo thực thể một cổng NAND .........................................................11
Hình 1.5: Mơ tả kiến trúc cổng NAND theo mơ hình hoạt động..............................12
Hình 1.6: Mơ tả kiến trúc RS theo mơ hình cấu trúc ................................................12
Hình 1.7: Minh họa một mơi trƣờng kiểm tra ảo bằng VHDL .................................13
Hình 1.8: Cấu trúc mô tả phần cứng và các đối tƣợng trong VHDL ........................13
Hình 1.9: D-FF với tín hiệu khơng đồng bộ rst.........................................................15

Hình 2.1: Hệ thống phát triển CPLD/FPGA .............................................................16
Hình 2.2: Bảng mạch phát triển mạch SN-PLDE2 ...................................................17
Hình 2.3: Bảng thí nghiệm SN-PLDE3A..................................................................18
Hình 2.4: Bộ chuyển mạch Logic S1-S3...................................................................19
Hình 2.5: Hiển thị LED Logic...................................................................................20
Hình 2.6: Phân định chân cắm của hiển thị 7 phân đoạn ..........................................20
Hình 2.7: Mã vận hành của bộ hiển thị 7 phân đoạn 6 chữ số ..................................22
Hình 2.8: Hiển thị 16 phân đoạn ...............................................................................24
Hình 2.9: Ổ cắm bộ hiển thị 16 phân đoạn. ..............................................................25
Hình 2.10: Phân định chân cắm của bộ LED điểm chấm 5x7 ..................................26
Hình 2.11: Ổ cắm bộ LED điểm chấm 5x7 JP22 và bộ chọn lọc điểm chấm JP24 ..26
Hình 2.12: Bộ kết nối LCD2021 ...............................................................................27
Hình 2.13: Mơi trƣờng thiết kế Max+ Plus II ...........................................................29
Hình 2.14: Cấu trúc MAX+plus II ............................................................................30
Hình 2.15: Bộ giải mã tuyến tính 2 đến 4 (decode24.gdf) ........................................34
Hình 2.16: Bộ đếm nối tiếp đồng bộ 8-bit (pcnt8t.tdf) .............................................35
Hình 2.17 Ví dụ về trạng thái đèn sáng của bộ đếm nối tiếp 8-bit ...........................36
Hình 3.1: Chọn máy ..................................................................................................37
Hình 3.2: Chọn thơng số máy ...................................................................................38
Hình 3.3: Chọn thơng số máy ...................................................................................38
Hình 3.4: Bộ giải mã tuyến tính 2 đến 4 (decode24.gdf) ..........................................39


Hình 3.5: Gán các cổng vào/ra cho chip điều khiển .................................................40
Hình 3.6: Bit 0000 đèn sáng ......................................................................................40
Hình 3.7: Bit 0001 đèn sáng ......................................................................................40
Hình 3.8: Bit 0010 đèn tắt .........................................................................................41
Hình 3.9: Bit 0011 đèn tắt .........................................................................................41
Hình 3.10: Bit 1000 đèn tắt .......................................................................................41
Hình 3.11: Bit 1010 đèn tắt .......................................................................................41

Hình 3.12: Bit 1001 đèn tắt .......................................................................................42
Hình 3.13: Bit 1011 đèn sáng ....................................................................................42
Hình 3.14: Bit 0100 đèn tắt .......................................................................................42
Hình 3.15: Bit 0110 đèn sáng ....................................................................................42
Hình 3.16: Bit 0101 đèn sáng ....................................................................................43
Hình 3.17: Bit 0111 đèn sáng ....................................................................................43
Hình 3.18: Bit 1100 đèn tắt .......................................................................................43
Hình 3.19: Bit 1110 đèn sáng ....................................................................................43
Hình 3.20: Bit 1101 đèn sáng ....................................................................................44
Hình 3.21: Bit 1111 đèn tắt .......................................................................................44
Hình 3.22: Bộ cộng đủ 8-bit (8add.gdf) ....................................................................44
Hình 3.23: Gán các cổng vào/ra cho chip điều khiển ...............................................45
Hình 3.24: Mạch cộng 69+96=165 ...........................................................................45
Hình 3.26: Mạch Flip-Flop D cạnh lật kích (df.gdf).................................................46
Hình 3.27: Gán các cổng vào/ra cho chip điều khiển ...............................................46
Hình 3.28: Mạch hoạt động khi chƣa đƣợc tác động xung kích ...............................47
Hình 3.29: Mạch lật trạng thái khi có xung kích vào ................................................47
Hình 3.30: Mạch đƣợc giữ ngun trạng thái trƣớc đó.............................................48
Hình 3.31: Mạch lật trạng thái khi có xung kích vào ................................................48
Hình 3.32: Bộ đếm nối tiếp đồng bộ 8-bit (pcnt8t.tdf) .............................................49
Hình 3.33: Gán các cổng vào/ra cho chip điều khiển ...............................................49
Hình 3.34: Ví dụ về trạng thái đèn sáng của bộ đếm nối tiếp 8-bit ..........................50


CHƢƠNG 1
TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL
1.1. FPGA là gì?
FPGA (Field-Programmable Gate Array – Ma trận cổng lập trình được theo
trường) là vi mạch dùng cấu trúc mảng phần tử logic mà ngƣời dùng có thể lập trình
đƣợc. (Chữ field ở đây muốn chỉ đến khả năng tái lập trình “bên ngồi” của ngƣời sử

dụng, khơng phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn).
Vi mạch FPGA đƣợc cấu thành từ các bộ phận:

- Các khối logic cơ bản lập trình đƣợc (logic block).
- Hệ thống mạch liên kết lập trình đƣợc.
- Khối vào/ra (I/O Pads).
- Phần tử thiết kế sẵn khác nhƣ DSP slice, RAM, ROM, nhân vi xử lý...

Hình 1.1: Cấu trúc tổng thể một FPGA

Cấu trúc FPGA đơn giản gồm các khối logic (logic blocks) cách đều nhau,
đƣợc cấu thành từ LUT (Look up table) và một phần tử nhớ đồng bộ FF, liên kết
nhờ các đƣờng kết nối có thể thay đổi đƣợc theo yêu cầu của ngƣời thiết kế.
LUT là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết
quả của hàm này tùy vào mục đích mà gửi ra ngồi khối logic trực tiếp hay thông
qua phần tử nhớ FF.

1


Hình 1.2: Khối logic FPGA

Hiện nay, FPGA có mật độ khá cao, lên tới hàng trăm tỉ cổng và cấu trúc
cũng đa dạng, phức tạp hơn. Nhiều chức năng phức tạp đã đƣợc tích hợp sẵn để
tăng hiệu quả sử dụng FPGA. Ví dụ nhƣ ngồi những khối tế bào logic, nhiều họ
FPGA đã đƣợc tích hợp thêm các khối chức năng nhƣ các bộ nhân cứng, khối nhớ,
PLL, thậm chí cả một bộ vi xử lý mạnh…
1.2. Lịch sử ra đời của FPGA
FPGA đƣợc thiết kế đầu tiên bởi Ross Freeman, ngƣời sáng lập công ty
Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lƣợng tƣơng

đối lớn các phần tử bán dẫn vào một vi mạch so với kiến trúc trƣớc đó là CPLD.
FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD
chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA cịn thấp
hơn nữa chỉ đạt vài nghìn đến 10.000.
CPLD đƣợc cấu trúc từ số lƣợng nhất định các khối SPLD (Simple
Programable Devices), thuật ngữ chung chỉ PAL, PLA. SPLD thƣờng là một mảng
logic AND/OR lập trình đƣợc có kích thƣớc xác định và chứa một số lƣợng hạn chế
các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực
hiện những hàm phức tạp và thông thƣờng hiệu suất làm việc của vi mạch phụ
thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn
nhiều nếu đem so sánh với một khối SPLD, ƣu điểm này giúp FPGA có thể chứa
nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử
logic và hệ thống mạch kết nối, để đạt đƣợc mục đích này thì kiến trúc của FPGA
phức tạp hơn nhiều so với CPLD.

2


Một điểm khác biệt với CPLD là trong những FPGA hiện đại đƣợc tích hợp
nhiều những bộ logic số học đã sơ bộ tối ƣu hóa, hỗ trợ RAM, ROM, tốc độ cao,
hay các bộ nhân cộng (Multication And Accumulation - MAC), thuật ngữ tiếng Anh
là DSP slice dùng cho những ứng dụng xử lý tín hiệu số DSP (Digital Signal
Processing) Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại
còn hộ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ
trong khi vẫn đảm bảo hoạt động bình thƣờng cho các bộ phận khác.
a) Ứng dụng
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng
khơng, vũ trụ, quốc phịng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống
điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học,

mơ hình phần cứng máy tính...
b) Phân loại
Có hai loại FPGA cơ bản: Loại lập trình đƣợc (dựa trên cơng nghệ SRAM)
và loại lập trình một lần.
- Loại lập trình lại đƣợc (dựa trên SRAM):
+ SRAM xác định các kết nối.
+ SRAM định nghĩa các hàm logic trong bảng ánh xạ (LUT)
- Loại lập trình một lần:
+ Kết nối dạng đốt đứt cầu chì.
+ Sử dụng các cổng logic truyền thống.
1.3. Cơ bản lập trình FPGA
Dƣới đây là quy trình thiết kế FPGA sử dụng bộ cơng cụ phần mềm thiết kế
ISE.
a) Yêu cầu chung khi thiết kế FPGA
- Chọn vi mạch FPGA phù hợp: Việc chọn đƣợc vi mạch, công nghệ phù hợp
nhất cho các tiêu chuẩn thiết kế đƣợc tiến hành theo các yêu cầu sau:
+ Mật độ: Dự tính mật độ logic của linh kiện.
+ Số lượng thanh ghi: Phải tính đƣợc số thanh ghi cần cho bộ đếm, máy
trạng thái, thanh ghi và bộ chốt. Số lƣợng macrocell trong vi mạch tối thiểu phải
bằng số thanh ghi cần có.

3


+ Số lượng chân vào/ra: Xác định số đầu vào/ra của vi mạch cần thiết kế.
+ Yêu cầu về tốc độ: Tuyến tổ hợp nhanh nhất sẽ xác định TPD (trễ truyền
trong vi mạch, tính theo ns). Mạch tuần tự nhanh nhất sẽ xác định tần số tối đa của
vi mạch (fmax).
+ Đóng vỏ: Phải xác định vi mạch cần gọn nhất hay chỉ sử dụng dạng QFP
thông thƣờng. Hoặc vi mạch thiết kế thuộc dạng có lắp chân cắm, trong trƣờng hợp

này là vi mạch PLCC.
+ Công suất thấp: Phải xác định sản phẩm sẽ sử dụng nguồn pin hay năng
lƣợng mặt trời, thiết kế có u cầu cơng suất tiêu thụ thấp hay không, vấn đề tổn
hao nhiệt có quan trọng hay khơng.
+ Chức năng cấp hệ thống: Phải xác định board mạch có bao gồm nhiều vi
mạch đa mức điện áp hay không, giữa các vi mạch có phải chuyển mức hay khơng,
có u cầu sửa dạng xung đồng bộ hay khơng, có u cầu giao tiếp giữa bộ nhớ và
bộ vi xử lý hay không.


Chọn giải pháp cấu hình cho FPGA
+ Lập trình ngay trên hệ thống:
Cấu hình FPGA có thể đƣợc lập trình ngay trên hệ thống (vi mạch đã đƣợc

hàn vào mạch ứng dụng) thông qua giao thức JTAG (Joint Test Adivisory Group:
Chuẩn giao tiếp) đã đƣợc tích hợp sẵn trong IC. Ngƣời thiết kế sử dụng cáp nạp để
nạp cấu hình cho FPGA.
+ Lập trình bên ngồi:
Các FPGA của Xilinx cũng có thể đƣợc lập trình bên ngồi bởi bộ lập trình
chip HW130 của Xilinx cũng nhƣ các bộ lập trình của các nhà phát triển khác.
Cấu hình hoạt động của FPGA đƣợc ghi vào SRAM nên sẽ mất đi khi mất
điện, vì vậy cần sử dụng FPGA và kết hợp với PROM lƣu cấu hình phù hợp, mỗi
khi bật nguồn, cấu hình sẽ nạp tự động từ PROM vào FPGA. Có thể sử dụng
PROM nối tiếp hoặc song song, tuy nhiên loại PROM nối tiếp đƣợc sử dụng phổ
biến hơn. Khi thiết kế cần chọn loại PROM có dung lƣợng phù hợp với mật độ của
các loại FPGA khác nhau.
Ngoài ra Xilinx còn cung cấp các giải pháp đƣợc thiết kế trƣớc, dễ sử dụng
để cấu hình cho tất cả FPGA của Xilinx, nhất là khi thiết kế các hệ thống phức tạp.

4



Tất cả các nội dung liên quan đến cấu hình PROM cho FPGA đều đƣợc đƣa ra. Các
giải pháp sử dụng công cụ 3rd part boundary scan, các giải pháp phần mềm kèm
theo, cáp ISP, thiết bị kiểm tra tự động ATE và hỗ trợ lập trình cũng nhƣ các thiết bị
lƣu trữ cấu hình.
Giải pháp cấu hình hiện đại nhất là nhóm cấu hình System ACE. Với giải
pháp System ACE, ngƣời thiết kế có thể dễ dàng sử dụng giao diện vi xử lí trong
System ACE để trực tiếp phối hợp cấu hình FPGA theo các yêu cầu của hệ thống.
Giải pháp đầu tiên trong nhóm này là System ACE CF, cung cấp công nghệ điều
khiển ở đĩa Microdrive kích thƣớc 1 inch và CompactFlash cũng nhƣ bộ lƣu trữ cấu
hình có dung lƣợng 8 gigabits. Ngồi ra, System ACE CF cũng đƣợc thiết kế trƣớc,
cung cấp các đặc tính hiện đại để tận dụng khả năng cấu hình linh hoạt của FPGA,
bao gồm:
+ Cấu hình multi-board từ một nguồn duy nhất
+ Quản lí bitstream đa cấu hình
+ Nâng cấp cấu hình qua mạng (IRL)
+ Hot-Swapping
+ Khởi tạo trung tâm xử lí và lƣu trữ phần mềm
+ Mã hóa
Với System ACE CF, ngƣời thiết kế có thể thực hiện đƣợc gần nhƣ tồn bộ
u cầu cấu hình cho FPGA. Các khả năng bổ trợ hệ thống này cho phép ngƣời thiết
kế sử dụng FPGA thỏa mãn các yêu cầu định trƣớc về mặt thiết kế và thời gian xử lí
lỗi. Ngồi ra, các cổng vi xử lí và cổng kiểm tra JTAG cịn cho phép tích hợp
System ACE trong mọi hệ thống.


Chọn công cụ phần mềm phù hợp
Xilinx đã cung cấp các cơng cụ thiết kế điện tử hồn chỉnh, cho phép thực


hiện thiết kế trên các thiết bị logic khả trình của Xilinx. Các cơng cụ này kết hợp
công nghệ tiên tiến với giao diện đồ họa linh hoạt, dễ sử dụng để ngƣời thiết kế có
đƣợc thiết kế tối ƣu. Bộ công cụ phần mềm hiện đang đƣợc sử dụng rộng rãi là ISE.

5


b) Lưu đồ thiết kế FPGA

Hình 1.3: Lƣu đồ thiết kế FPGA

Quá trình thiết kế cho FPGA chủ yếu thực hiện trên các công cụ phần
mềm, lƣu đồ thiết kế chung cho FPGA (ví dụ sử dụng phần mềm ISE) nhƣ hình 1-3,
bao gồm các bƣớc sau:
Bƣớc 1: Nhập thiết kế (Design Entry):
Các công cụ thiết kế cho phép nhập thiết kế theo các cách sau:
1a: Nhập thiết kế theo sơ đồ nguyên lý Schematic: Sử dụng các modul đã có
sẵn trong thƣ viện Schematic để ghép nối chúng với nhau tạo thành bản thiết kế
theo yêu cầu, cách này có thể thực hiện thiết kế nhanh nhƣng sẽ rất khó khăn và
khơng tối ƣu tài ngun của FPGA khi thiết kế phức tạp và thiết kế không sử dụng
sang công cụ thiết kế FPGA của các hãng khác. Từ sơ đồ nguyên lý thiết kế đƣợc
công cụ phần mềm sẽ chuyển đổi sang file ngôn ngữ mô tả phần cứng HDL, mà phổ
biến là VHDL hoặc Verilog.

6


1b: Nhập thiết kế sử dụng ngôn ngữ mô tả phần cứng HDL (VHDL, Verilog,
ABEL, AHDL, …): Sử dụng chƣơng trình soạn thảo để thực hiện việc mơ tả bản
thiết kế dƣới dạng ngơn ngữ HDL nào đó mà cơng cụ thiết kế có thể tổng hợp

đƣợc.
1c: Nhập thiết kế dưới dạng sơ đồ: Cơng cụ thiết kế cịn cho phép nhập thiết
kế vào dƣới dạng sở đồ mà điển hình là đồ hình trạng thái sau đó đƣợc chuyển đổi
sang HDL.
Bƣớc 2: Kiểm tra, mô phỏng thiết kế (Design Verification):
Thực hiện kiểm tra, mô phỏng chức năng hoạt động của thiết kế HDL đã tạo
ra ở trên. Các công cụ thiết kế đều hỗ trợ việc mô phỏng chức năng hoạt động của
bản thiết kế HDL theo mơ hình hoạt động (Behavioral Model), mức độ mô phỏng
này độc lập với loại FPGA đã đƣợc lựa chọn. Bƣớc này không cần thực hiện trong
khi thiết kế.
Bƣớc 3: Tổng hợp thiết kế (Design Synthesis):
Sau khi hồn thành mơ phỏng thiết kế, tiến hành chuyển thiết kế dƣới dạng
file văn bản HDL thành dạng file netlist, thực hiện mô tả mạch thực ở mức thấp
dƣới dạng cổng logic và kết nối giữa chúng với nhau.
Bƣớc 4: Thực hiện thiết kế (Design Implementation):
Xây dựng cấu hình cho FPGA, sử dụng file netlist và file ràng buộc
“contraints File” (mô tả các nguyên tắc thiết kế, các ràng buộc vật lý nhƣ gán vị trí
cho các đầu vào/ra trên chip, các ràng buộc về tốc độ, thời gian, tần số,…) để tạo ra
thiết kế sử dụng tài nguyên có sẵn của FPGA. Bƣớc này bao gồm các bƣớc: Biên
dịch (Translate), phân bố bản thiết kế vào chip (Map), định vị và định tuyến kết nối
(Place and Route).
4a: Biên dịch (Translate): Bƣớc này nhằm thực hiện kiểm tra thiết kế và
đảm bảo netlist phù hợp với kiến trúc đã chọn, kiểm tra file ràng buộc “contraints
File” của ngƣời sử dụng để phát hiện các lỗi mâu thuẫn với tham số của chip đã
chọn. Biên dịch thƣờng bao gồm các q trình: tối ƣu hóa, biên dịch thành các
thành phần vật lý của thiết bị, kiểm tra ràng buộc thiết kế. Khi kết thúc bƣớc biên
dịch, sẽ có một bản báo cáo về các chƣơng trình đƣợc sử dụng, danh sách các cổng
I/O và các thiết bị đƣợc sử dụng trong thiết kế, nhờ đó có thể lựa chọn đƣợc phƣơng
án thiết kế tối ƣu.


7


4b: Phân bố bản thiết kế vào chip (Map): Tạo bản phân bố thiết kế tới các tài
nguyên cụ thể trong FPGA. Nếu thiết kế quá lớn so với thiết bị đƣợc lựa chọn, quy
trình này khơng thể hồn thành nhiệm vụ của mình. Q trình Map có các tham số
ràng buộc của thiết kế, ví dụ nhƣ tham số tốc độ, thời gian của thiết kế và đôi khi
quyết định gắn thêm các thành phần logic để đáp ứng các yêu cầu về thời gian. Map
có thể thay đổi thiết kế xung quanh các bảng ánh xạ để tạo khả năng thực hiện tốt
nhất cho thiết kế.
4c: Định vị và định tuyến kết nối (Place and Route – PAR): Đây là q trình
lựa chọn vị trí phù hợp của khối chức năng trong thiết kế và đƣa các cổng logic của
phần đó vào các khối logic hay các modul cụ thể trong FPGA trên cơ sở tối ƣu việc
kết nối và đảm bảo về các ràng buộc thời gian. Những phần logic hoạt động tốc độ
cao sẽ đƣợc xếp cạnh nhau để giảm độ dài đƣờng kết nối.
Bƣớc 5: Mơ phỏng có tham số thời gian (Timing Simulation):
Bắt đầu thực hiện mô phỏng thiết kế ở mức cổng logic đã đƣợc định vị trí và
định tuyến trên FPGA, phần mềm sử dụng file cấu hình đã đƣợc tạo ra và kết hợp
với thƣ viện về mơ hình thời gian của các họ FPGA, để thực hiện mô phỏng hoạt
động của thiết kế mà có tính đến các tham số thời gian trễ, thời gian thiết lập…của
các cổng logic trong FPGA.
Bƣớc 6: Cấu hình (Configuration):
6a: Create Bit File: Tạo file “bitstream” để nạp vào bộ nhớ cấu hình trong
FPGA (thƣờng là bộ nhớ tạm thời nhƣ SRAM). Dòng bit đƣợc nạp mang tất cả
thông tin để định nghĩa các hàm logic và các liên kết trong thiết kế. Mỗi thiết kế
khác nhau có một dịng bit khác nhau. Các thiết bị SRAM mất tồn bộ thơng tin mỗi
khi ngắt nguồn, do đó khi cần thiết phải nạp dịng bit cấu hình này vào trong PROM
(thƣờng sử dụng PROM nối tiếp). Mỗi khi thiết bị đƣợc bật nguồn file cấu hình từ
PROM sẽ đƣợc nạp tự động vào bộ nhớ SRAM của FPGA và FPGA hoạt động theo
cấu hình đƣợc nạp đó.

6b: Download (iMPACTE): Gọi chƣơng trình điều khiển việc nạp cấu hình,
thực hiện kết nối thiết bị nạp (cáp nạp) đến FPGA và nạp file cấu hình cho FPGA.
Với FPGA của hãng Xilinx, q trình lập trình có thể thực hiện ngay trong hệ thống
nhờ công cụ JTAG hoặc sử dụng bộ lập trình thiết bị chuyên dùng.

8


1.4. Ngôn ngữ VHDL
1.4.1. Giới thiệu về VHDL
VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit
Hardware Description Language - ngôn ngữ mô phỏng phần cứng cho các mạch
tích hợp tốc độ rất cao. VHDL là ngơn ngữ mơ phỏng phần cứng đƣợc phát triển
dùng cho chƣơng trình VHSIC (Very High Speed Intergrated Circuit) của Bộ quốc
phòng Mỹ. Mục tiêu của việc phát triển VHDL là có đƣợc một ngôn ngữ mô phỏng
phần cứng tiêu chuẩn và thống nhất cho phép phát triển thử nghiệm các hệ thống số
nhanh hơn cũng nhƣ cho phép dễ dàng đƣa các hệ thống đó vào ứng dụng trong
thực tế. Ngơn ngữ VHDL đƣợc ba công ty Intermetics, IBM và Texas Instruments
bắt đầu nghiên cứu phát triển vào 7/1983. Phiên bản đầu tiên đƣợc cơng bố vào
8/1985. Sau đó VHDL đƣợc đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn.
Năm 1987, đã đƣa ra tiêu chuẩn về VHDL – tiêu chuẩn IEEE-1076-1987.
VHDL đƣợc phát triển để giải quyết các khó khăn trong việc phát triển,
thay đổi và lập tài liệu cho các hệ thống số. Nhƣ ta đã biết, một hệ thống số có rất
nhiều thơng số mơ tả. Ðể có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm
hiểu thơng số đó kỹ lƣỡng. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét
các thông số mô tả trở nên dễ dàng hơn vì bộ thơng số đó có thể đƣợc thực thi để
mô phỏng hoạt động của hệ thống. Nhƣ thế ta có thể xem xét tồn bộ các phần tử
của hệ thống hoạt động trong một mơ hình thống nhất.
1.4.2. Ưu điểm của VHDL
a. Tính cơng cộng

VHDL đƣợc sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng nhƣ nhiều nhà
cung cấp công cụ thiết kế mô phỏng hệ thống. Hiện nay VHDL là một tiêu chuẩn
của IEEE.
b. Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế
VHDL cho phép thiết kế bằng nhiều phƣơng pháp dựa vào các thƣ viện sẵn
có. VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch.
c. Ðộc lập với cơng nghệ
VHDL hồn tồn độc lập với cơng nghệ chế tạo phần cứng.

9


d. Khả năng mô tả mở rộng
VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho
đến mức cổng.
e. Khả năng trao đổi kết quả
Một mơ hình VHDL có thể chạy trên mọi bộ mơ tả đáp ứng đƣợc tiêu
chuẩn VHDL.
f. Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế
VHDL đƣợc phát triển nhƣ một ngôn ngữ lập trình bậc cao, vì vậy nó có
thể sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều
ngƣời. Bên trong ngơn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử
nghiệm và chia sẻ thiết kế. VHDL cũng cho phép dùng lại các phần đã có sẵn.
1.4.3. Cấu trúc ngơn ngữ của VHDL
VHDL là ngôn ngữ cho phép mô tả các thiết bị phần cứng số trừu tƣợng.
Các mơ hình trừu tƣợng gồm:
+ Mơ hình hoạt động (a Model of Behavior).
+ Mơ hình thời gian (a Model of Time).
+ Mơ hình cấu trúc (a Model of Structure).
Để thực hiện mô tả cho một hệ thống số nào đó cần thực hiện theo các bƣớc nhƣ

sau:
Bƣớc 1: Phân tích yêu cầu của hệ thống số cần phải thiết kế hoặc cần phải mô tả.
Bƣớc 2: Phân tách hệ thống thành những khối con.
Bƣớc 3: Xác định mơ hình mơ tả phù hợp cho mỗi khối con hoặc cho cả hệ thống.
Bƣớc 4: Sử dụng ngôn ngữ VHDL để mô tả hệ thống số theo các mơ hình đã xác
định.
Ngồi ra trong lập trình VHDL cần chú ý:
+ Trong các đoạn mã mơ tả VHDL trong chƣơng các từ khóa đều đƣợc in
đậm.
+ Trong VHDL không phân biệt chữ hoa, chữ thƣờng.
1.4.4. Cấu trúc một mơ hình hệ thống mơ tả bằng VHDL
Thơng thƣờng một mơ hình VHDL bao gồm ba phần: thực thể, kiến trúc và
các cấu hình. Trong một số trƣờng hợp mơ hình cịn có thêm phần các mơi trƣờng
kiểm tra.
10


a) Thực thể (Entity)
Khai báo thực thể trong VHDL là câu lệnh định nghĩa các chỉ tiêu phía
ngồi của một phần tử hay một hệ thống. Các thơng tin có trong phần khai báo thực
thể cho phép kết nối phần tử (hệ thống) mà thực thể đó đại diện với các phần tử (hệ
thống) khác. Dƣới đây là một ví dụ khai báo thực thể cho một cổng NAND (Một
loại cổng số cơ bản thi hành chức năng so sánh hai đƣờng nhập và cho một đƣờng
xuất bằng 1 chỉ khi nào hai đƣờng nhập bằng 0. Cổng NAND đƣợc tạo từ hai cổng
AND và NOT).

Hình 1.4: Khai báo thực thể một cổng NAND

Câu lệnh LIBRARY IEEE và USE IEEE.std_logic_1164.ALL cho phép
thực thể sử dụng các định nghĩa trong thƣ viện về các tiêu chuẩn của IEEE. Khai

báo thực thể bao gồm tên của thực thể và một tập các cổng và phần chung. Trong đó
phần chung GENERIC là các hằng số đƣợc truyền cho phần tử (hệ thống). Phần
chung có thể coi là các tham số định trƣớc của phần tử, chẳng hạn nhƣ độ trễ. Các
cổng là phần giao diện vào ra của phần tử. Các cổng có thể tƣơng ứng với các chân
IC, hay các đầu nối trên bảng mạch. Các cổng đƣợc khai báo là cổng vào, cổng ra,
cổng hai chiều hay bộ đệm.
b) Kiến trúc (Arrchitecture)
Một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tƣơng ứng.
VHDL cho phép khai báo nhiều kiến trúc cho một thực thể. Một khai báo kiến trúc
có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ
thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Có hai cách mơ tả kiến
trúc của một phần tử (hệ thống) đó là mơ tả theo mơ hình hoạt động hay mơ tả theo
mơ hình cấu trúc. Tuy nhiên một hệ thống có thể bao gồm cả mơ tả theo mơ hình
hoạt động và mơ tả theo mơ hình cấu trúc.

11




Mơ tả kiến trúc theo mơ hình hoạt động
Mơ hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng

với các tín hiệu vào nhƣ thế nào và đƣa các kết quả gì ra đầu ra) dƣới dạng các câu
lệnh cảu ngơn ngữ lập trình bậc cao. Các câu lệnh đó có thể là PROCESS, WAIT,
IF, CASE, FOR-LOOP...Ví dụ, kiến trúc của cổng NAND nói trên có thể mơ tả
theo mơ hình hoạt động nhƣ sau.

Hình 1.5: Mơ tả kiến trúc cổng NAND theo mơ hình hoạt động


Ta thấy kiến trúc của phần tử NAND có một lệnh gán tín hiệu mơ tả chức
năng của phần tử. Câu lệnh này đƣợc thực thi khi một trong hai cổng a,b thay đổi
giá trị. Và câu lệnh gán có độ trễ, tức là tín hiệu ở bên vế trái sẽ thay đổi tƣơng ứng
sau thời gian trễ.


Mô tả kiến trúc theo mơ hình cấu trúc
Mơ hình cấu trúc của một phần tử (hệ thống) có thể bao gồm nhiều cấp cấu

trúc bắt đầu từ một cổng logic đơn giản để xây dựng mô tả cho một hệ thống hồn
thiện. Thực chất của việc mơ tả theo mơ hình cấu trúc là mô tả các phần tử con bên
trong hệ thống và sự kết nối của các phần tử con đó. Nhƣ với ví dụ mơ tả mơ hình
cấu trúc một flip-flop RS gồm hai cổng NAND nhƣ sau.

Hình 1.6: Mơ tả kiến trúc RS theo mơ hình cấu trúc

12


c) Cấu hình
Việc khai báo cấu hình tƣơng tự nhƣ việc liệt kê các phần của bản thiết kế.
Khai báo cấu hình thực chất là chỉ ra kiến trúc nào đƣợc gắn với thực thể nào. Nhƣ
vậy các kiến trúc khác nhau có thể cùng đƣợc gắc với một thực thể. Ðiều này cho
phép thay đổi bản mô tả ở thời điểm mô phỏng hay tổng hợp hệ thống. Việc khai
báo cấu hình là tuỳ chọn, cũng có thể sử dụng cấu hình mặc định do VHDL cung
cấp, khi đó kiến trúc đƣợc khai báo cuối cùng cho một thực thể sẽ đƣợc gắn với
thực thể đó.
d) Mơi trường kiểm tra (testbench)
Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế. Kiểm
tra một mô hình VHDL đƣợc thực hiện bằng cách quan sát hoạt động của nó trong

khi mơ phỏng và các giá trị thu đƣợc có thể đem so sánh với yêu cầu thiết kế.

Hình 1.7: Minh họa một mơi trƣờng kiểm tra ảo bằng VHDL

Trong đó: + DUT (device under test): Mơ hình VHDL cần kiểm tra
+ Observer: Khối quan sát kết quả
+ Data source: Nguồn dữ liệu (khối tạo ra các tín hiệu kích thích)
1.4.5. Cấu trúc chung của một chương trình mơ tả VHDL
a) Cấu trúc tổng qt
Mơ hình cấu trúc mô tả phần cứng số và phạm vi sử dụng của các đối
tƣợng trong VHDL có thể đƣợc biểu diễn ở hình 1.8:

Hình 1.8: Cấu trúc mơ tả phần cứng và các đối tƣợng trong VHDL
13


Sau đây là cấu trúc chung đơn giản của một chƣơng trình mơ tả VHDL:
-- Ví dụ cấu trúc 1 file mô tả cho một hệ thống phần cứng số dùng VHDL
-- Khai báo thƣ viện, mặc định cần khai báo thƣ viện IEEE (thƣ viện chuẩn
đã đƣợc xây dựng)
library IEEE;...

-- Khai báo gói dữ liệu (package) trong thƣ viện cần sử dụng:
use IEEE.STD_LOGIC_1164.ALL;...

-- Khai báo thực thể
Entity Tên_thực_thể is

-- Khai báo các tham số generic nếu cần:
Generic(-- khai báo danh sách các tham số);

Port(-- Khai báo danh sách các cổng vào/ra);
End Tên_thực_thể;

-- Bắt đầu viết
Architecture Tên_kiến_trúc of Tên_thực_thể
{Khai

báo:

kiểu

dữ

liệu,

các

is

component,

các

đối

tượng constant, signal}
Begin
{Viết các mô tả dùng cấu trúc lệnh song song}
Process(-- danh sách tín hiệu kích thích nếu cần)
{Khai báo: kiểu dữ liệu, các đối tượng biến constant,

variable}
Begin
{Viết các mô tả dùng cấu trúc lệnh tuần tự} End process;
{Viết các mô tả dùng cấu trúc lệnh song song hay process
khác}
End Tên_kiến_trúc;

b) Ví dụ minh họa
Thiết kế 1 Flip-Flop loại D (D-FF) có 3 tín hiệu đầu vào:
 d: dữ liệu vào.
 q: dữ liệu ra.
 clk: xung đồng hồ.

14


 rst: tín hiệu reset: khi rst='1': đầu ra q ở mức thấp, khi rst='0': đầu ra q copy
tín hiệu ở đầu vào d.

Hình 1.9: D-FF với tín hiệu khơng đồng bộ rst.

Đoạn mã VHDL cho mạch điện trên nhƣ sau
1 --------------------------------------2 LIBRARY ieee;

--khai báo sử dụng thư viện ieee.

3 USE ieee.std_logic_1164.all;
4 --------------------------------------5 ENTITY dff IS

--khai báo cấu tạo của mạch điện(thực


thể)
6 PORT (d, clk, rst: IN STD_LOGIC;
7

q: OUT STD_LOGIC);

8 END dff;
9 ---------------------------------------10 ARCHITECTURE
behavior OF dff IS
10 BEGIN
11 PROCESS (rst, clk)
12 BEGIN
13 IF (rst='1') THEN

--Khi có tín hiệu rst(rst=1), gán

q=0.
14 q <= '0';
15 ELSIF (clk'EVENT AND clk='1') THEN

--khi rst=0, và

có sườn lên của xung clk, gán q=d.
16
17

q <= d;
END IF;


18 END PROCESS;
19 END behavior;
20 ---------------------------------------

15


CHƢƠNG 2
HỆ THỐNG PHÁT TRIỂN CIC-310 VÀ FPGA
2.1. Hệ thống phát triển CIC 310
Hệ thống phát triển CIC-310 CPLD/FPGA đƣợc trình bày nhƣ hình 2.1 là
thiết bị độc lập bao gồm hai bảng mạch sơ cấp nhƣ sau:
+ Bảng phát triển mạch số:
Bảng phát triển mạch số EPF8282ALC84 SN-PLDE2 hoặc bảng phát triển
mạch số EPF10K10LC84 SN-PLDE3
+ Bảng thí nghiệm SN-PLDE3A

Hình 2.1: Hệ thống phát triển CPLD/FPGA

2.1.1. Bảng phát triển SN-PLDE2
a) Cấu tạo
Bảng phát triển mạch SN-PLDE2 gồm các thành phần sau:
+ Bộ chuyển đổi SRAM dựa trên cơ sở của bộ FPGA thuộc loại
EPF8282ALC84-4 (Bộ đếm cổng 5000).
+ Bộ vi điều khiển AT89C2051.
+ Thiết bị cấu hình 24LC64.
+ Lỗ cắm mở rộng 89C51.
+ Mạch giao diện RS-232.
Bộ vi điều khiển AT89C2051 đƣợc sử dụng để truyền tải dữ liệu cấu hình
đến FPGA hoặc các thiết bị SEEPROM thơng qua chuỗi cổng RS-232


16


×