Xilinx là nhà phát triển FPGA, CPLD được sử dụng rộng rãi trong những ứng dụng truyền thông, tự động hóa, mật mã... và các lĩnh vực khác. Các sản phẩm phần cứng của Xilinx gồm có các dòng CPLD như CoolRunner, các họ FPGA như Spartan, Virtex...
30
Xilinx còn cung cấp các phần mềm hỗ trợ lập trình FPGA, CPLD như ISE, EDK, LogicCore, System Generator. Các công cụ này hỗ trợ rất nhiều cho quá trình lập trình FPGA, giúp giảm thời gian và công sức thiết kế.
2.2.2.1. Mạch phát triển - Spartan 3E
Hình 2-6: Kit phát triển Spartan-3E [12]. Các thành phần của KIT
31
Hình 2-7: Các thành phần của Kit Spartan-3E[12].
Cấu trúc tổng quan của Spartan-3 gồm có 5 thành phần có chức năng khả trình cơ bản sau:
Configurable Logic Blocks bao gồm các Look-Up Tables rất linh động có chức năng thực thi các logic và các phần tử nhớ dùng như là các flip-flop hoặc các chốt. CLB thực hiện phần lớn các chức năng logic như lưu trữ dữ liệu.
Input/Output Blocks điều khiển dòng dữ liệu giữa các chân vào ra I/O và các logic bên trong của FPGA. IOBs hỗ trợ luồng dữ liệu 2 chiều và hoạt động logic 3 trạng thái. Hỗ trợ phần lớn các chuẩn tín hiệu, bao gồm một vài chuẩn tốc độ cao, như Double DataRate.
Block RAM cho phép lưu trữ dữ liệu dưới dạng các khối dualport 18-Kbit.
Multiplier Blocks cho phép 2 số nhị phân 18bit làm đầu vào và dễ dàng tính toán tích của chúng.
Digital Clock Manager Blocks cung cấp khả năng tự xác định xung clock, là giải pháp số hoàn chỉnh cho các tín hiệu clock phân phối, trễ, nhân, chia và dịch bit.
32
Hình 2-8: Kiến trúc của Spartan 3E [12].
Hình 2.8 cho thấy một vòng IOBs bao quanh các mảng CLBs. Mỗi cột block RAM bao gồm một vài block RAM 18-Kbit, mỗi block RAM lại gắn liền với một multiplier dành riêng. Các DCM được đặt ở các vị trí: 2 DCM phía trên và 2 cái phía dưới của thiết bị, và đối với các device lớn hơn thì có thêm các DCM ở phía bên cạnh.
Đặc điểm chung mạng Spartan-3E là kết nối liên thông giữa 5 phần tử cơ bản này, và truyền tín hiệu giữa chúng. Mỗi thành phần chức năng này có một ma trận chuyển đổi dành riêng để cho phép chọn lựa kết nối cho việc đi dây trong FPGA.
2.2.2.2. Vi điều khiển mềm - MicroBlaze
MicroBlaze là một vi điều khiển mềm nhúng 32 bit của Xilinx. Lõi có cấu trúc Harvard và tập lệnh thu gọn RISC, với các bus riêng biệt để truy xuất dữ liệu và lệnh từ bộ nhớ on-chip và với bộ nhớ ngoài tại cùng một thời điểm. Chúng ta có thể thiết lập các thông số để sử dụng đối với vi điều khiển này như các cổng vào ra ngoại vi thông qua bộ công cụ EDK.
33
Hình 2-9: Sơ đồ khối lõi Microblaze [11]. Tính năng:
Ba tầng xử lý đường ống với 32 thanh ghi mục đích 32 bit.
Từ lệnh 32 bit với 3 toán hạng và 2 chế độ định địa chỉ.
Đường bus 32 bit địa chỉ.
Một khối ghi dịch.
Hai cấp độ ngắt.
Khối ALU: Gồm các bộ cộng/trừ, ghi dịch/logic, nhân.
Một bộ đếm chương trình.
Một đơn vị quản lý bộ nhớ.
Ngoài những tính năng trên, tùy vào các phiên bản mà bộ xử lý microblaze có thêm những tính năng khác.
Kiến trúc đường ống của vi điều khiển microblaze: Vi điều khiển micorblaze xử lý lệnh theo kiến trúc đường ống song song, hầu hết các lệnh của nó, mỗi giai đoạn mất một chu kỳ đồng hồ để thực hiện xong. Quá trình xử lý lệnh được chia làm 3 giai đoạn: nhận lệnh (Fetch), giải mã lệnh (Decode), thi hành lệnh(Execute):
34
Hình 2-10: Kiến trúc đường ống trong microblaze.
Thông thường, nếu bỏ qua thời gian trễ nghỉ “stall” thì mỗi gia đoạn trên chỉ mất một chu kỳ đồng hồ, khi đó ba lệnh có thể được xử lý cùng một lúc, mỗi lệnh được thi hành trong một đường ống gồm ba giai đoạn. Microblaze có một bộ đệm tiền nhận lệnh IPB để làm giảm xung đột tiềm ẩn trong bộ nhớ khi thực hiện các lệnh đa chu kỳ. Khi đường ống được tạo trễ nghỉ do thực hiện lệnh đa chu kỳ trong giai đoạn thi hành, bộ đệm tiền nhận lệnh sẽ tiếp tực nhận có thể lấy lệnh trực tiếp từ bộ đệm tiền nhận lệnh, thay vì đợi cho bộ nhớ lệnh truy cập để thi hành.
Như đã trình bày, Microblaze cung cấp 3 giao tiếp bộ nhớ: - LMB: Local Memory Bus.
- PLB: Processor Local Bus.
- OPB: On-chip Peripheral Bus và XCL
35
Hình 2-11: Hệ thống BUS điển hình của Microblaze [11].
2.2.2.3. Bộ công cụ phát triển hệ thống nhúng của hãng Xilinx - EDK
EDK - Embedded Development Kit là công cụ và các IP để thiết kế hệ thống xử lý nhúng trên FPGA của Hãng Xilinx. EDK bao gồm Xinlinx Platform Studio (XPS) để thiết kế phần cứng của hệ thống xử lý nhúng và Software Development Kit (SDK) được sử dụng cho việc khởi tạo và kiểm tra các ứng dụng phần mềm nhúng viết bằng ngôn ngữ C/C++. SDK được xây dựng trên Eclipse™ open-source framework.
XPS cung cấp một giao diện người dùng với các công cụ tổng hợp phần cứng, hỗ trợ xây dựng hệ thống từ việc cấu hình bộ vi xử lý đến các ngoại vi, khối bộ nhớ, cổng vào ra, và các thư viện IP core trong một thiết bị của Xilinx. Màn hình giao diện chính của XPS gồm có 3 vùng:
36
Hình 2-12: Giao diện sử dụng của công cụ XPS.
Project Information Area (1), System Assembly View (2), Console Window (3). Ngoài ra cửa sổ màn hình chính của XPS còn có các nhãn để chỉ thị các vùng 4, 5, 6: Connectivity Panel (4), View Buttons (5), Filters Pane (6).
Công cụ XPS cho phép khởi tạo một hệ thống phần cứng trên nền tảng FPGA, với XPS chúng ta lựa chọn “Base System Builder” để tạo project, khi đó các thông tin về cầu hình phần cứng sẽ được lưu dưới dạng file .bsb. Khi cần tạo một project mới với cùng một cấu hình phần cứng, chúng ta chỉ cần import file .bsb để sử dụng các thông số. Sau khi lựa chọn các thông số loại CPU, tốc độ clock hệ thống, chúng ta lựa chọn các ngoại vi như RS232, các cổng vào ra IO, quản lý ngắt, quản lý bộ nhớ, bộ đếm, timer… Để thêm vào các chức năng chuyên biệt chúng ta cần thêm vào hệ thống các IP core, ví dụ VGA core, Ethernet core với các phiên bản khác nhau, sau đó cấu hình các bus hệ thống, sắp đặt các chân vào, ra cho các ngoại vi và khởi tạo địa chỉ vùng nhớ. Cuối cùng công cụ XPS cho phép xây dựng hệ thống dưới dạng .bit file để nạp xuống bo mạch FPGA tương ứng.
SDK hỗ trợ tạo hệ thống phần mềm nhúng bắt đầu từ việc khởi tạo “Hardware platform” được Export từ công cụ XPS sau khi đã tổng hợp phần cứng. Hardware
37
Platform sẽ chứa tệp tin .bit được xây dựng từ công cụ XPS. Một bộ chương trình phần mềm nhúng thực hiện trên SDK sẽ cần một project chứa thư viện phần mềm - Board Support Package, và một project ứng dụng phần mềm.
Hình 2-13: Giao diện sử dụng của công cụ SDK
Một gói hỗ trợ bo mạch BSP là một bộ sưu tập của thư viện và các driver mà sẽ định hình lớp thấp nhất của các phần mềm ứng dụng. Ứng dụng phần mềm phải liên kết với hoặc chạy trên của một môi trường phần mềm sử dụng các API mà nó cung cấp. Vì thế, trước khi tạo và sử dụng các ứng dụng phần mềm trong SDK, chúng ta phải tạo một BSP. SDK bao gồm 2 loại BSP cho phát triển ứng dụng:
- Standalone là môi trường đơn luồng cung cấp các đặc tính như chuẩn vào/ra và truy cập tới các đặc tính bộ vi xử lý phần cứng.
- Xilkernel là một loại hệ điều hành thời gian thực, hỗ trợ phân luồng, các thread, đồng bộ, truyền các thông tin và các bộ định thời.
Khi một BSP được xây dựng, các thành phần phần mềm được tự động ghép vào trong thư viện gồm có các chuẩn của thư viện C (libc.a, libm.a) và các drivers của thiết bị cho tất cả các ngoại vi trong thiết kế củ (libxil.a).
38
Chương 2 của luận văn đã trình bày những vấn đề cơ bản của công nghệ nền tảng FPGA và giới thiệu về phương pháp xây dựng một hệ thống nhúng trên nền FPGA sử dụng ngôn ngữ mô tả phần cứng VHDL. Quy trình thiết kế một vi mạch FPGA trải qua các bước như sau: Mô tả đặc điểm kĩ thuật, Lựa chọn công nghệ, công cụ tổng hợp, Thiết kế vi mạch, tổng hợp, Mô phỏng, kiểm tra. Chương này cũng trình bày giải pháp thực hiện đề tài Luận văn bằng các công cụ phần cứng và bộ công cụ phần mềm phát triển hệ thống FPGA của hãng Xilinx. Giải pháp phần cứng của đề tài sử dụng mạch phát triển Spartan-3E, vi điều khiển mềm MicroBlaze. Để tổng hợp các thành phần của hệ thống, chúng ta sử dụng bộ công cụ phần mềm Xilinx Embedded Development Kit.
39
CHƯƠNG 3: HỆ THỐNG HIỂN THỊ THÔNG TIN HÌNH ẢNH THÔNG QUA MẠNG INTERNET
Nội dung chương thứ ba sẽ trình bày việc xây dựng ý tưởng thiết kế, đặc tả hệ thống, mô tả thiết kế tổng thể, thiết kế từng mô-đun, thiết kế và xây dựng phần mềm.