Professional Documents
Culture Documents
Lab0 Gioithieu PDF
Lab0 Gioithieu PDF
Mục tiêu
Nắm được công nghệ FPGA
Làm quen board thực hành DE2
Cài đặt, và làm quen với các phần mềm: Quartus II, Nios II
Fail
Fail
Function And Pass
Schematic Layout Post-Layout Pass
Function Design Timing Fabrication
Design Design Simulation
verification
Hiện nay, theo qui trình sản xuất Chip fabless, các nhà sản xuất chip không trực tiếp chế
tạo ra chip mà họ chỉ thiết kế cấp cao rồi outsource cho các công ty sản xuất chuyên sản xuất
chip như TSMC, Samsung… gia công. Phương pháp thiết kế này dựa trên các standard-cell do
các nhà sản xuất chip cung cấp sẵn.
FPGA Cell
Library
Generate Download
High-Level Logic Placement Post-Layout
RTL Design FPGA FPGA
Simulation Synthesis & Routing Verification
bitstream
Fail Fail
Hình sau là một ví dụ về kiến trúc của một FPGA công nghiệp và chip FPGA trong thực tế.
Lý tưởng cho việc chế tạo các sản phẩm mẫu prototype.
Các thiết bị cần thời gian bán ra thị trường ngắn.
Các sản phẩm số lượng nhỏ, theo yêu cầu khách hàng.
Các phần cứng cần khả năng tái cấu hình linh hoạt.
Các hệ thống cần thay đổi cấu hình trong quá trình hoạt động (vd như SDR)
II. Giới thiệu FPGA
Qui ước đặt tên cho FPGA của altera.
Logic Element
Đây là phần tử logic nhỏ nhất trong kiến trúc FPGA thông thường, gọi tắt là LE, nó cho phép
thực hiện các chức năng logic hiệu quả. Đặc tính của một LE :
Là một bảng tra 4 ngõ vào (hoặc nhiều hơn tùy kiến trúc FPGA) gọi là look-up table
(LUT), mà có thể thực hiện hàm logic 4 biến bất kỳ.
Một thanh ghi có thể lập trình được (programmable register)
Một chuỗi các kết nối mắt xích.
Một chuỗi kết nỗi các thanh ghi.
Có khả năng lái tất cả các loại lien kết nối bao gồm : local, row, column, register chain,
hoặc nối trực tiếp
Liên kết nối.
Hỗ trợ register packing
Hỗ trợ register feedback
Hình 6 : Logic Element
LE Features
Ta có thể cấu hình mỗi thanh ghi của LE thành D, T, JK, hoặc SR flip-flop. Mỗi thanh
ghi có data, clock, clock enable, và chân clear. Tìn hiệu có thể là global clock network, các chân
I/O pins, hoặc bất kỳ logic nội nào.
Các chân I/O pins hoặc logic nội có thể lái các chân enable. Nếu muốn LE thực hiện chức năng
của các mạch tổ hợp, LUT sẽ được bypass qua khối thanh ghi.
Hình 7 : LAB
Mạng clock (Clock Network)
Bởi vì clock có thể cần phân phối toàn bộ chip FPGA, và yêu cầu nghiêm ngặt về timing, do đó
clock được phân phối đến toàn bộ FPGA bới một mạng clock như hình 4.
I/O Pins
Hệ thống IO của FPGA thường tổ chức thành các Bank, mỗi bank gồm nhiều chân IO có
cùng tính năng. Để hỗ trợ nhiều hệ thống phần cứng khác nhau, các chân IO của FPGA gồm
hàng chục kiểu khác nhau với các tính chất về điện cũng khác nhau (xem bảng).
Hình 9 : IO Pins
Hình 10 : IO Banks
Kiến trúc của một FPGA
Ngoài các phần tử cơ bản như LE, LAB, Clock, IO pin. FPGA còn có các phần tử Embedded
Memory block, Embedded Multiplier, DSP Block, Integrated Controller …
III. Giới thiệu Board DE2 của Altera
1. Giới thiệu
Board DE2 là board mạch phục vụ cho việc nghiên cứu và phát triển về các lĩnh vực luận
lý số học (digital logic), tổ chức máy tính (computer organization) và FPGA.
2. Thành phần
Board DE2 cung cấp khá nhiều tính năng hỗ trợ cho việc nghiên cứu và phát triển, dưới đây
là thông tin chi tiết của một board DE2:
FPGA:
- Vi mạch FPGA Altera Cyclone II 2C35.
- Vi mạch Altera Serial Configuration – EPCS16.
Các thiết bị xuất nhập:
- USB Blaster cho lập trình và điểu khiển API của người dung; hỗ trợ cả 2 chế độ lập
trình JTAG và AS.
- Bộ điều khiển Cổng 10/100 Ethernet.
- Cổng VGA-out.
- Bộ giải mã TV và cổng nối TV-in.
- Bộ điều khiển USB Host/Slave với cổng USB kiểu A và kiểu B.
- Cổng nối PS/2 chuột/bàn phím.
- Bộ giải mã/mã hóa âm thanh 24-bit chất lượng đĩa quang với jack cắm line-in, line-
out, và microphone.
- 2 Header mở rộng 40-pin với lớp bảo vệ diode.
- Cổng giao tiếp RS-232 và cổng nối 9-pin.
- Cổng giao tiếp hồng ngoại.
Bộ nhớ:
- SRAM 512-Kbyte.
- SDRAM 8-Mbyte.
- Bộ nhớ cực nhanh 4-Mbyte (1 số mạch là 1-Mbyte).
- Khe SD card.
Switch, các đèn led, LCD, xung clock
- 4 nút nhấn, 18 nút gạt.
- 18 LED đỏ, 9 LED xanh, 8 Led 7 đoạn
- LCD 16x2
- Bộ dao động 50-MHz và 27-MHz cho đồng hồ nguồn.
3. Một vài ứng dụng của board DE2
Ứng dụng làm TV box
Hình 14 : Ứng dụng TV Box
1. Giới thiệu
Bộ phần mềm thiết kế đi kèm với board DE2 bao gồm 2 đĩa CDROM: Quartus 2 và Nios
2 Integrated Development Environment (IDE)
Quartus II là phần mềm hỗ trợ tất cả mọi quá trình thiết kế một mạch logic, bao gồm quá
trình thiết kế, tổng hợp, placement và routing (sắp xếp và chạy dây), mô phỏng (simulation), và
lập trình lên thiết bị (DE2).
Nios II, môi trường phát triển tích hợp của họ Nios II (IDE), nó là công cụ phát triển chủ
yếu của họ vi xử lý Nios II. Phần mềm sẽ là môi trường cung cấp khả năng chỉnh sửa, xây dựng,
debug và mô tả sơ lược về chương trình. IDE còn cho phép tạo các chương trình từ đơn nhiệm
(single-threaded) đến các chương trình phức tạp dựa trên một hệ điều hành thời gian thực và
các thư viện middleware.
Ngoài ra, chúng ta có thể cần một chương trình mô phỏng code Verilog ở cấp độ RTL
(mức truyển thanh ghi) hoặc mô phỏng ở mức cổng (Gate level Simulation)
2. Cài đặt
Cài đặt Quartus II và Nios II
Quá trình cài đặt Quartus II và Nios đơn giản chỉ cần đưa đĩa vào máy và thực hiện theo
hướng dẫn của chương trình cài đặt như bất kỳ phần mềm nào .
Kết tiếp bạn chọn Search for the best driver in these location và sau đó nhấn Browse.
Hình 20 : Chọn thư mục tìm kiếm driver
Hộp thoại mới sẽ xuất hiện bạn tìm đến vị trí C:\altera\10.0\quartus\drivers \usb−blaster, sau đó
nhấn OK và tiếp tục nhấn Next
Cửa sổ thông báo việc kiểm tra logo window không thành công, tuy nhiên việc này sẽ
không bị ảnh hưởng đến việc kết nối của chương trình sau này. Bạn tiếp tục nhấn Continue
Anyway. Nhấn Finish để hoàn tất việc cài đặt.
Chú ý driver USB blaster có thể nằm trong thư mục khác so với hướng dẫn tùy thuộc vào
phiên bản quartus mà bạn cài đặt, thậm chí bạn có thể copy driver tới một thư mục khác và trỏ
đường dẫn tới thư mục này khi cài đặt.
V. Tạo một project mới với Quartus II 10.0:
1. Tạo 1 project:
Bước 1. Vào Menu > file chọn New Project Wizard
Bước 2. Ta chọn thư mục để chứa project và đặt tên cho project, xem hình bên dưới
Bước 3. Sau đó ta chọn hãng sản xuất chip và tên loại chip trên mạch (EP2C35F672C6)
Bước 2. Sau đó chọn loại file mà chúng ta muốn viết chương trình. Ở đây ta chọn loai
file Verilog HDL
Hình 26 : Lựa chọn loại file cần tạo
Bước 3. Dưới đây là một đoạn chương trình demo: tính hàm f = x1 EX-OR x2
Bước 4. Sau khi viết xong thì ta phải lưu tên file trùng với tên module của chương trình
Hình 28 : Hộp thoại lưu file
Bước 5. Sau khi lưu file xong phải thiết lập cho file là top-level thì mới biên dịch được
Chú ý: Đến đây thì có thế nạp trực tiếp lên board DE2 để kiểm thử hoặc sử dụng chương trình
mô phỏng có trên Quartus II.
3. Gán chân và nạp xuống phần cứng FPGA:
Bước 7. Gán chân cho thiết kế:
Ở các bước trên ta mới chỉ thực hiện thiết kế và biên dịch chương trình. Để có thể chạy thử trên
phần cứng FPGA, chúng ta cần phải thực hiện gán chân cho thiết kế. Quá trình gán chân (Pin
assignment) là quá trình chỉ định các input/outout/inout trong thiết kế (logic) kết nối tới một chân
vật lý thực sự trên chip FPGA (physical).
Hệ thống chân của FPGA được đánh nhãn bởi chữ cái và số theo qui định của nhà sản xuất
FPGA, ví dụ như N25,M20 … ta xem thông tin các chân này trong tài liệu datasheet của dòng
chip Cyclone II.
Hình 32 : Pin planner (sơ đổ layout chân của một chip FPGA)
Tuy nhiên, khi thiết kế board DE2, nhà thiết kế Terasic đã kết nối cố định các chân của
FPGA với phần cứng tương ứng trên kit, ví dụ : như SW[0] được kết nối với PIN_N25, và
LEDR[0] được kết nối với chân PIN_AE23 của Cyclone II. Như vậy, khi ta kết nối một chân
logic f (của thiết kế) với chân PIN_AE23 của FPGA. Có nghĩa là chân f trong thiết kế light.v sẽ
được kết nối trực tiếp với LEDR[0] khi ta nạp thiết kế xuống kit DE2.
Để gán chân, ta vào menu Assignment>Pin planner, sẽ hiện ra hộp thoại sau :
Sau khi gán chân xong, ta thực hiện biên dịch lại thiết kế để cập nhật thông tin về pin.
Một câu hỏi đặt ra là : ta lấy thông tin về các chân này ở đâu ?
Trả lời :
Vì các chân này được ghép nối với phần cứng trên board bởi nhà thiết kế board DE2,
do đó để có thông tin về chân IO, ta tìm trong tài liệu DE2 manual.
Một cách khác, các nhà thiết kế board FPGA thường cung cấp một file CSV (một dạng
giống excel) có thể import trực tiếp vào phần mềm quartus với tên chân được định nghĩa
sẵn, vd file DE2_pin_assignments.csv đối với board DE2.
Để import file này,vào assignments>import assignments. Chọn đường dẫn đến file
“DE2_pin_assignments.csv”rồi nhấn OK.
Để kiểm tra kết quả, vào lại Assignments>Pin Planner, sẽ thấy như sau.
Chip FPGA phải được nạp và cấu hình để thực hiện thiết kế của chúng ta. File cấu hình
được tạo ra bởi quá trình compile của phần mềm Quartus nếu không có lỗi xảy ra. Và chúng
ta có thể lập trình và cấu hình FPGA theo hai cách, đó là chế độ JTAG và AS. File cấu hình
được truyền từ máy chủ PC (chạy quartus) xuống board FPGA bởi một cáp USB kết nối giữa
board và máy tính PC. Để sử dụng cáp này, chúng ta cần phải cài driver USB blaster như đã
nói ở trên.
Trước khi nạp chương trình, chúng ta phải đảm bảo cáp USB đã được kết nối và board
FPGA đã bật nguồn.
Trng chế độ nạp JTAG, FPGA sẽ giữ nguyên cấu hình được nạp miễn là còn cấp nguồn cho
kit FPGA, có nghĩa là khi mất nguồn, Chip FPGA sẽ bị mất cấu hình và trở thành thiết bị
trắng. Trong chế độ thứ hai, chế độ AS, file cấu hình được lưu trong chip flash trên kit
FPGA. Và nó sẽ được load vào FPGA mỗi khi bật nguồn, vì vậy, chúng ta sẽ không cần phải
nạp lại file cấu hình mỗi khi bật nguồn kit FPGA nữa (như ở trường hợp nạp JTAG)
. Để chọn lựa mode nạp, chọn RUN/PROG switch trên DE2 board. Vị trí RUN là chọn JTAG
mode, còn vị trí PROG là chọn AS mode.
Quá trình nạp thông qua mode JTAG như sau :
o Gạt switch RUN/PROG trên FPGA sang vị trí RUN.
o Chọn Tools>Programmer. Một cửa sổ sẽ hiện ra như hình 35.
o Ở đây chúng ta cần phải chỉ định công cụ lập trình và mode lập trình
o Chọn JTAG trong hộp thoại mode
o Nếu USB-Blaster chưa được chọn, nhấn vào hardware Setup và chọn USB-
Blaster trong hộp thoại sổ xuống như hình 36
o Nếu không thấy hiện lên thiết bị USB-Blaster nào, hãy kiểm tra cáp USB, bật
nguồn board, driver …
o Sau đó chọn file cần nạp dạng sof (nếu nó chưa có sẵn trong hộp thoại) bằng
cách nhấn Add file
o Sau khi đã chọn xong, nhấn start để bắt đầu lập trình. Một led trên board sẽ
sang chi đến khi quá trình lập trình thành công.
o Nếu có bất cứ lỗi gì hiện lên trên cửa sổ quartus,thì hãy kiểm tra lại board đã
cấp nguồn chưa. Nếu vẫn không phát hiện ra lỗi, hãy hỏi thầy hướng dẫn của
bạn để được giúp đỡ.
Quá trình nạp thông qua mode Active Serial như sau :
o Để chọn thiết bị cần lập trình, chọn Assignments>Device như hình 37.
o Click vào Device & Pin Options và chọn như hình 38, rồi nhấn OK để quay
lại hình 38, tiếp tục nhấn OK rồi compile lại toàn bộ project.
Nếu không có phần cứng, có thể mô phỏng bằng phần mềm model-sim hoặc quartus
simulation
Nếu có phần cứng (DE1,DE2 hoặc tương đương) có thể tổng hợp trực tiếp và thực hiện
ngay trên phần cứng của kit FPGA (có thể mô phỏng hoặc không, tùy yêu cầu của giáo
viên hướng dẫn).
2. Chi tiết các bài lab phải thực hiện