Field-programmable gate array FPGA là một mạch tích hợp, có thể cấu trúc lại mảng phần tử logic bởi người sử dụng hoặc lập trình viên, bằng cách sử dụng ngôn ngữ lập trình mô tả phần c n
Trang 1
VI N CỌNG NGH THỌNG TIN VÀ TRUYỀN THỌNG
BÁO CÁO
Đ ÁN H NHÚNG Tìm hiểu và thực hành trên DE2i
Development Kit
Giáo viên h ng dẫn: TS Nguy n Kim Khánh Sinh viên thực hi n: Ph m Minh Tuấn 20112446
Ph m Quang Tùng 20112148
Trang 2
1 Tìm hi ểu về DE2i-150 Development Kit 1
1.1 Gi ới thiệu chung về DE2i-150 1
1.2 Cấu tạo của DE2i-150 1
1.2.1 Sơ đồ khối 1
1.2.2 B ộ vi xử lý 2
1.2.3 B ộ FPGA 3
1.3 Nh ữ g điể ưu việt của DE2i-150 4
2 Tìm hi ểu về FPGA 4
2.1 Khái ni ệm 4
2.2 So sánh FPGA với các loại vi mạch khác 4
2.3 Cấu tạo của FPGA 5
2.3.1 Logic Blocks 5
2.3.2 Programmable Interconnects 6
2.3.3 I/O Blocks 7
2.3.4 Các khối thiết kế sẵn 8
2.4 Ứng dụng của FPGA 8
3 Cài đặt Windows 7 8
3.1 Chu ẩn bị 8
3.2 Cá ước thực hiện 8
4 PCI Express 9
4.1 PCIe Fundamental 10
4.2 PCIe Display Demo 12
5 Th ực hành trên KIT 14
5.1 Thiết kế IC tạo hiệu ứng dải LED trên KIT 14
MÔ TẢ ĐỀ TÀI 14
THI ẾT KẾ IC 15
5.2 B ộ ALU 19
MÔ T Ả ĐỀ TÀI 19
ĐẶC TẢ MÔ HÌNH THIẾT KẾ 19
K ết luận 20
Danh mục tài li u tham khảo 21
Trang 3Phụ lục hình ảnh
Hình 1.1: Sơ đồ khối c a kit DE2i-150 1
Hình 2.1: Sơ đồ khối FPGA 5
Hình 2.2: Một số ví dụ c a logic cell 6
Hình 2.3: Sơ đồ khối chuyển mạch lập trình được 6
Hình 2.4: Cấu trúc PIP 7
Hình 2.5: Một ví dụ mô hình I/O cell 7
Hình 3.1: Kết nối các ngoại vi 9
Hình 3.2: Màn hình khởi động Windows 9
Hình 4.1: Cài đặt PCIe_DriverInstall 10
Hình 4.2: Sau khi thiết lập xong PCIe_Fundamental 10
Hình 4.3: FPGA được detect trong Device Manager 11
Hình 4.4: Bắt đầu chạy PCIe_Fundamental Application 11
Hình 4.5: LED control 12
Hình 4.6: Button Status 12
Hình 4.7: DMA memory test 12
Hình 4.8: DMA FIFO test 12
Hình 4.9: Hoàn tất cài đặt PCIe_Display 13
Hình 4.10: Tiến độ truyền dữ liệu qua DMA 13
Hình 4.11: Màn hình LCD hiển thị 14
Hình 5.1: Cấu trúc IC 15
Hình 5.2: Mạch chốt 16
Hình 5.3: Mux4x1 16
Hình 5.4: reg_status 16
Hình 5.5: rom_hu0 17
Hình 5.6: reg_rom_hu0 17
Hình 5.7: rom_hu1 17
Hình 5.8: reg_rom_hu1 18
Hình 5.9: rom_hu2 18
Hình 5.10: reg_rom_hu2 18
Trang 41 Tìm hiểu về DE2i-150 Development Kit
1.1 Gi ới thiệu chung về DE2i-150
DE2i-150 là một nền tảng đột phá, với sự kết hợp c a bộ vi xử lí nhúng Intel N2600
và bộ Altera Cyclone IV GX FPGA c a hãng Altera Chính nhờ sự kết hợp này,
DE2i150 trở thành một hệ thống máy tính đầy đ tính năng, và có hiệu năng xử lý
rất cao Đặc biệt, bộ Altera Cyclone IV GX FPGA nằm trên board DE2i-150 có thể
tăng tốc khả năng đáp ng c a hệ thống mà vẫn giữ nguyên chi phí giải pháp và
hiệu quả năng lượng
DE2i-150 có đến 150.000 phần tử logic, với sự mền dẻo, linh hoạt c a khả năng tái
cấu trúc phần c ng, nó có thể đáp ng cho bất c nhiệm vụ nào
Bộ vi xử lí c a Intel và bộ thiết bị FPGA được liên kết với nhau thông qua 2 luồng
PCIe tốc độ cao, đảm bảo cho việc truyền dữ liệu giữa chúng đạt tốc độ cao
Chính nhờ những điều này, DE2i-150 sẽ là một công cụ tuyệt vời để xử lý các tác
vụ đặc biệt, cũng như thiết kế phần c ng
Trang 5Qua sơ đồ trên, ta có thể nhận thấy, kit DE2i-150 gồm 2 khối: khối bên trái là Intel
Atom Processor, khối bên phải là FPGA Altera Cyclone GX Hai khối liên kết với
nhau bởi 2 đường PCIe
1.2.2 Bộ vi xử lý
Các thông số kĩ
thuật:
CPU : Intel® Atom™ Dual Core Processor N2600( 1M Cache, 1.6GHz )
• Intel® Hyper-Threading Technology
• Intel SpeedStep® Technology
• Instruction Set : 64-bit
• Instruction Set Extensions : SSE2, SSE3, SSSE3
• Integrated Graphics
• Graphics Base Frequency : 400MHz
Chipset : Intel® NM10 Express Chipset
• DMI x2 to CPU
• Intel® High Definition Audio
• Serial ATA (SATA) 3 Gb/s
• Universal Serial Bus(USB) Hi-Speed USB 2.0
• PCI Express Gen 1
• DIP package Bios Flash : GD25Q16
• Programming Interface for Bios : Dedi-Prog Interface
• 27MHz VGA clock source Ethernet
• Intel® 82583V GbE Controller
Trang 6• 3 status indicting LEDs
Others
• Power header for hard-disk
• Current limit for USB
• JTAG and AS mode configuration
• EPCS64 serial configuration device
• On-board USB Blaster circuitry
• High Speed Mezzanine Card (HSMC)
• 40-pin expansion port
• VGA-out connector
• VGA DAC (high speed triple DACs)
• DB9 serial connector for RS-232 port with flow control
Clock
• Three 50MHz oscillator clock inputs
• SMA connectors (external clock input/output)
Display
• 16x2 LCD module
Switches and indicators
• 18 slide switches and 4 push-buttons switches
Trang 7• 18 red and 9 green LEDs
• Eight 7-segment displays
Other features
• Infrared remote-control receiver module
• TV decoder (NTSC/PAL/SECAM) and TV-in connector
Sự kết hợp giữa bộ vi xử lí Intel Atom và bộ FPGA c a Altera giúp cho kit
trở thành một hệ thống hoàn chỉnh, mạnh mẽ và đầy đ các ch c năng
Số lượng thành phần logic lớn (150.000 phần tử logic) với khả năng tái cấu
trúc linh hoạt, mềm dẻo
Field-programmable gate array (FPGA) là một mạch tích hợp, có thể cấu trúc lại
mảng phần tử logic bởi người sử dụng hoặc lập trình viên, bằng cách sử dụng ngôn
ngữ lập trình mô tả phần c ng HDL như VHDL, Verilog, AHDL…
Hiện nay FPGA đã tích hợp được một số lượng lớn các cổng logic và các khối RAM
để xử lí các tính toán ph c tạp Đồng thời nó cũng được trang bị các cổng I/O tốc độ
cao, đảm bảo về mặt thời gian cho việc truyền và nhận dữ liệu FPGA có thể thực
hiện được bất c nhiệm vụ nào mà một ASIC có thể thực hiện, cùng với khả năng
tái cấu trúc linh hoạt, FPGA có ưu thế trong nhiều ng dụng
2.2 So sánh FPGA với các loại vi mạch khác
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng
nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên
thư viện logic thì FPGA không đạt được m c độ tối ưu như những loại này, và
hạn chế trong khả năng thực hiện các tác vụ đặc biệt ph c tạp, tuy nhiên FPGA
Trang 8lại ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế
đơn giản hơn, do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng
phần tử logic như PLA, PAL, CPLD thì FPGA ưu việt hơn cá điểm: tác vụ tái
lập trình c a FPGA được thực hiện đơn giản hơn; khả năng lập trình linh động
hơn; và khác biệt quan trọng nhất là kiến trúc c a FPGA cho phép nó có khả
năng ch a khối lượng lớn cổng logic
2.3 C ấu tạo của FPGA
FPGA được cấu tạo từ 3 thành phần chính:
Các khối logic cơ bản (Logic Blocks, ngoài ra còn có tên gọi khác như: CLB,
Logic Array Block, LAB…tùy vào nhà sản xuất)
Hệ thống mạch liên kết lập trình được (Programmable Interconnects hay
routing channels)
Các khối vào ra (I/0 Block)
Ngoài ra FPGA còn được trang bị các phần tử thiết kế sẵn như: DSP slice, RAM,
ROM, nhân vi xử lý…
2.3.1 Logic Blocks
Mỗi khối logic thông thường được tạo nên từ một vài phần tử logic cell
Mỗi logic cell điển hình bao gồm:
Trang 9Trong hình trên, khối LUT được chia làm 2 khối 3-LUT(LUT với 3 đầu vào) Nhưng
thông thường 2 khối 3-LUT được kết hợp lại thành 1 khối 4-LUT(LUT với 4 đầu
vào) thông qua bộ MUX Hiện nay khối LUT còn được bổ sung thêm 2 đầu vào kết
nối từ các khối logic trước và sau nó, nâng tổng số đầu vào c a LUT lên 6 chân Cấu
trúc này nhằm tăng tốc các bộ số học logic
2.3.2 Programmable Interconnects
Vai trò c a khối là:
• Kết nối hoặc ngắt kết nối giữa các khối logic với nhau
• Kết nối hoặc ngắt kết nối giữa các khối logic với các khối I/O bằng ngôn
ngữ lập trình
Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương
ngang và đ ng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các
nhóm khác nhau, ví dụ trong XC4000 c a Xilinx có 3 loại kết nối: ngắn, dài và rất
dài
Trang 10Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình
được (programmable switch), trong một khối chuyển mạch ch a một số lượng nút
chuyển lập trình được, đảm bảo cho các dạng liên kết ph c tạp khác nhau Các điểm
kết nối như vậy được gọi là programmable interconnect point(PIPs)
Một số kiểu PIPs hay được dùng:
• Cross-point: kết nối lần lượt các đường kết nối theo chiều dọc hoặc ngang
• Break-point: kết nối hoặc cô lập 2 đường kết nối
• Decoded MUX: nhóm 2^n cross-points thành một đầu ra với n config bit
• Non-decoded MUX: nhiều đường kết nối sử dụng chung 1 config bit
• Compound cross-point: gồm 6 Break-point
2.3.3 I/O Blocks
Các khối I/O được dùng để kết nối FPGA với các thiết bị phần c ng khác, đảm bảo
truyền và nhận dữ liệu giữa môi trường bên trong và môi trường bên ngoài FPGA
I/O Blocks gồm nhiều I/O cell Mỗi I/O cell có thể cấu hình lại thành một cổng vào,
một cổng ra, hoặc là một cổng hai chiều D flip-flop thường được sử dụng trong I/O
cell để cung cấp việc cho đăng kí đầu vào và đầu ra
Trang 112.3.4 Các kh ối thiết kế sẵn
Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp
thêm khác nhau, ví dụ để thiết kế những ng dụng SoC, trong dòng Virtex 4.5 c a
Xilinx có ch a nhân xử lí PowerPC, hay trong Atmel FPSLIC tích hợp nhân AVR,
hay cho những ng dụng xử lí tiens hiệu số DSP trong FPGA được tích hợp các DSP
Slide là bộ nhân cộng tốc độ cao, thực hiện hàm a*b+c…
ng dụng c a FPGA bao gồm:
• Xử lí tín hiệu số DSP
• 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ô phỏng phần c ng máy tính
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết được những
bài toán ph c tạp mà trước kia chỉ thực hiện được nhờ phần mềm máy tính, ngoài ra
nhờ số lượng cổng logic lớn mà FPGA được ng dụng cho những bài toán đòi hỏi
khối lượng tính toán lớn và dùng trong các hệ thống làm việc thời gian thực
3.1 Chuẩn bị
Sử dụng phần mềm Windows 7 DVD Download Tool trên chiếc máy tính
cá nhân để tạo một Windows 7 Bootable USB Flash Drive
Sau đó, kết nối USB vào DE2i-150 Development Kit, kết nối kit với một màn
hình máy tính qua cổng VGA, kết nối các ngoại vi cần thiết là Mouse và
Keyboard
Trang 12Hình 3.1: Kết nối các ngoại vi
Sau khi chuẩn bị xong tất cả, cắm nguồn điện cho Kit và khởi động Lúc
này màn hình LCD sẽ hiển thị:
Hình 3.2: Màn hình khởi động Windows
Từ đây chúng ta làm theo các bước cài Windows thông thường
Sau khi cài đặt hoàn tất khởi động lại DE2i-150 DK và bắt đầu cài đặt PCIe
để Windows có thể giao tiếp với FPGA
Có 2 đ ng PCIe trên DE2i-150 DK:
PCIe Fundamental Demo: Thể hiện này minh họa cho điều khiển I/O cơ bản
và truyền dữ liệu tốc độ cao c a PCIe qua DMA Việc truyền dữ liệu qua
DMA hỗ trợ cả hai loại bộ nhớ: memory mapping và FIFO
PCIe Display Demo: Thể hiện này minh họa cho điều khiển I/O cơ bản và
truyền dữ liệu tốc độ cao c a PCIe bus
Chuẩn b cho vi c cài đặt PCIe:
Copy Demonstration Files: Copy toàn bộ thư mục DE2i-150 System CD trên
máy tính cá nhân lên DE2i-150 DK
Trang 13 Cài đặt PCIe Driver: Mở thư mục PCIe_DriverInstall trong DE2i-150
System CD, chạy file PCIe_DriverInstall.exe và click button Install, như
hình dưới:
Cài đặt Altera Quartus II trên Windows 7
4.1 PCIe Fundamental
Program FPGA và Restart Windows 7
Sử dụng USB cable để kết nối hệ thống Windows 7 và USB-Blaster bên
FPGA
Mở thư mục “Demonstration/FPGA/PCIe_Fundamental/demo_batch”,
chạy file “sof_download.bat” để bắt đầu thiết lập xử lý
Khi thiết lập xong, màn hình sẽ hiển thị như hình dưới:
Restart Windows 7 để cho phép BIOS nhận diện được FPGA thông qua PCIe
bus
Sau khi Restart Windows 7, mở Windows 7 Device Manager Thiết bị FPGA
đã có trong Device Manager như hình dưới:
Trang 14Hình 4.3 : FPGA được detect trong Device Manager
Ch y Demonstration Application Software
Mở thư mục “PCIe_Fundamental/windows_app_vc2012/Release” và
chạy file “app.exe”, chương trình sẽ hiển thị:
Để chạy demo LED, gõ phím “0” và gõ “ENTER” để truy cập chế độ LED
control Chương trình sẽ hiển thị “Please input led control mask” để truy vấn
người dùng nhập vào một mặt nạ điều khiển (control mask), như hình dưới
Người dùng có thể nhập vào các số thập phân từ 0 đến 15 để điều khiển 4
LED (LEDG0/LEDG1/LEDG2/LEDG3) Giá trị 11 sẽ chỉ sáng duy nhất
LEDG0 Giá trị 0 sẽ tắt cả 4 LED
Trang 15Hình 4.5: LED control
Để chạy demo trạng thái nút bấm, gõ phím “1” sau đó gõ “ENTER” Chương
trình sẽ đưa ra trạng thái c a KEY0/KEY1/KEY2/KEY3 là một số thập lục
phân Nếu không có KEY nào được bấm thì giá trị là fh, như hình dưới Nếu
KEY0 được bấm, giá trị trạng thái là eh
Hình 4.6: Button status
Để test DMA memory, gõ phím “2” và nhấn “ENTER” Chương trình sẽ cho
kết quả như hình dưới:
Hình 4.7: DMA memory test
Để test DMA FIFO, nhập vào “3” và nhấn “ENTER” Chương trình sẽ hiển
thị như hình dưới:
Hình 4.8: DMA FIFO test
Để thoát chương trình, gõ “99” và nhấn “ENTER”
4.2 PCIe Display Demo
Program FPGA and Restart Windows 7
Trang 16 Vào thư mục “Demonstrations/FPGA/PCIe_Display/demo_batch”, chạy
file “sof_download.bat” để bắt đầu cài đặt
Sau khi cài đặt hoàn tất, sẽ có thông báo như hình dưới:
Khởi động lại Windows 7 để đồng ý cho BIOS nhận biết FPGA thông qua
PCIe bus
Ch y Demonstration Application Software
Kết nối một màn hình LCD với FPGA thông qua cổng VGA (J8)
Trong thư mục “PCIe_Display/windows_app_vc2012/Release” chạy file
“app.exe” Chương trình sẽ bắt đầu chuyền hình ảnh qua DMA và tiến độ
được thể hiện như hình dưới:
Trang 17 Người dùng sẽ thấy trên màn hình LCD 2 kiểu sau xuất hiện xen kẽ và liên
• Các hiệu ng này chuyển động không ngừng, lặp đi lặp lại
• Thời gian các đèn led chuyển từ hoạt cảnh này sang hoạt cảnh khác sẽ do người lập trình tự quyết định, chỉ cần mắt thường nhìn được
IC cũng đồng thời xử lý 3 nút bấm Key0, Key1 và Key 2 sao cho:
• Phím Key0 để reset mạch dãy
• Khi bấm Key1, sẽ chuyển hiệu ng này sang hiệu ng khác (hiệu ng 1 2 3
1 2…)
• Khi bấm và giữ Key2, hiệu ng sẽ tạm dừng Nhả Key2, hiệu ng lại tiếp tục
Trang 18• Key0: tương ng với key0 trên thiết bị, có ch c năng để reset mạch dãy
• Key1: tướng ng với key1 trên thiết bị, dùng để chuyển hiệu ng c a led dải
• Key2: tương ng với phím key2 trong thiết bị, có ch c năng tạm dừng
• clock: là chân tín hiệu lấy tín hiệu đầu vào từ xung động hồ (50MHz)
Các thành phần chính:
o M ch ch t
Trang 19Ch c năng: Chọn hiệu ng cho LED dải
Mô tả hoạt động: dựa vào tín hiệu chọn kênh CS để chọn hiệu ng cho LED dải,
CS = “00” tương ng hu0(hiệu ng nhấp nháy), CS=”01” tương ng hu1(hiệu ng con rắn), CS = “10” tương ng hu2(hiệu ng va chạm)
o reg_status
Hình 5.4: reg_status
Ch c năng: điều khiển tín hiệu chọn kệnh c a bộ Mux4x1
Mô tả: Dựa vào xung clock CLK để điều khiển CS Mỗi CLK có sườn lên (bấm key1) thì CS sẽ tăng thêm 1 Nếu CS = “10” thì sẽ cho CS = “00” để quay lại hiệu
ng đầu tiên
rom_hu0