Phát triển phần cứng và phần mềm

Một phần của tài liệu Thiết kế hệ thống mạng cảm biến (Trang 26 - 31)

Giao diện phần cứng và phần mềm được tạo ra bởi một trình tạo giao diện. Phần mềm được thiết bị đo lường và mã byte được tạo ra để thực thi trên máy ảo Java. Phần phần cứng được tổng hợp và ánh xạ đến nền tảng mục tiêu FPGA có thể cấu hình lại. Giao diện được thực hiện trong cả phần mềm và phần cứng.

Trong giai đoạn đặc điểm kỹ thuật, chỉ các phương pháp phần mềm được sử dụng để xác thực chức năng và lập hồ sơ. Sau đó, đặc điểm kỹ thuật ban đầu được phân vùng thành một phần để thực hiện trên PC chủ (phương pháp phần mềm) và một phần được thực thi trên nền tảng phần cứng FPGA (phương pháp phần cứng). Phân vùng có thể dựa trên các phương thức Java, trên các vòng lặp hoặc ở cấp độ khối cơ bản. Trong quá trình tạo mã, mã byte được tạo cho tất cả các phương pháp, trong khi các tệp cấu hình FPGA chỉ được tạo cho các phương pháp phần cứng riêng lẻ. Hệ thống thời gian chạy (RTS) đọc thông tin từ bước phân vùng và quyết định xem, theo phương pháp phân vùng, để lên lịch cho nó trên PC chủ hoặc trên phần cứng FPGA. RTS cũng quản lý cấu hình lại động của phần cứng tại thời gian chạy.

Đối với mỗi phương pháp phần cứng, mô tả giao diện được tạo tự động.

Nó bao gồm một khung VHDL cấp RT để đưa vào khối xây dựng phần cứng và một phương thức phần cứng kêu gọi đưa vào mã phần mềm.

Tạo mã cho phần cứng bao gồm các bước sau:

● Tổng hợp cấp cao (HLS) của các phương thức Java đã chọn được triển khai trong phần cứng;

● Tổng hợp cấp đăng ký-chuyển giao của mô tả VHDL được tạo bởi công cụ HLS trong bước trước và tối ưu hóa logic của danh sách mạng kết quả;

● Tổng hợp bố cục và tạo dữ liệu cấu hình cho nền tảng phần cứng FPGA mục tiêu.

Việc trao đổi dữ liệu giữa phần cứng và phần mềm xảy ra thông qua giao diện. Trình tạo giao diện sử dụng thông tin được cung cấp bởi công cụ tổng hợp cấp cao và tự động tạo chuyển đăng ký mô tả mức độ của khung VHDL với kích thước chính xác. Cấu trúc của khung giao diện này được hiển thị trong Hình 1.7. Khung bao gồm một tập hợp các thanh ghi để lưu trữ dữ liệu đầu vào và đầu ra của phương thức Java tương ứng. Nó cũng chứa một khối logic nhỏ để xử lý các tín hiệu điều khiển cần thiết cho tương tác với hệ thống thời gian chạy. Điều này bao gồm các tín hiệu để bắt đầu và đặt lại quy trình phần cứng và tín hiệu sẵn sàng cho biết khi nào tính toán trong phần cứng được hoàn thành và kết quả có thể được đọc lại.

Thành phần VHDL cho phương pháp phần cứng Java được tạo ra trong quá trình tổng hợp cấp cao được nhúng vào khung VHDL được tạo bởi trình tạo giao diện. Thiết kế hoàn chỉnh được tổng hợp cho nền tảng FPGA.

Hệ thống thời gian chạy (RTS) chịu trách nhiệm quản lý việc thực thi và tương tác của các phương pháp phần cứng và phần mềm. RTS dựa trên cơ sở dữ liệu chứa tập hợp các phương pháp thực thi trong phần cứng hoặc phần mềm và các phương pháp có sẵn cả triển khai phần cứng và phần mềm. Các tệp thực thi phần mềm được xác định bởi các lớp Java được lưu trữ ở định dạng mã byte Java. Các khối phần cứng tương ứng được mô phỏng trên bảng FPGA và được lưu trữ dưới dạng tệp bit cấu hình.

Trong quá trình đồng hóa, hệ thống thời gian chạy lên lịch các phương pháp để thực hiện theo bảng phân vùng hiện tại. Các phương pháp phần mềm được thực thi trên Java Virtual Machine (JVM) trên máy trạm chủ.

Trong một cách tiếp cận theo định hướng phần mềm, luồng thực thi của hệ thống kết hợp bị chi phối bởi phần mềm của hệ thống.

Hệ thống thời gian chạy cũng quản lý việc thực hiện các nhiệm vụ trên nền tảng mô phỏng. Tập hợp các FPGAs có sẵn và các kênh truyền thông được chỉ định trong một tệp cấu hình. Trong quá trình đồng hóa, khi dòng điều khiển trong một trong các luồng đạt đến phương pháp

phần cứng, hệ thống thời gian chạy xác định xem tệp bit cấu hình tương ứng đã được tải xuống FPGA.

Khi bắt đầu quy trình đồng hóa, không có FPGAs nào được cấu hình với một luồng bit. RTS xác định một FPGA có sẵn và kích hoạt cơ chế tải xuống. Khi tệp bit đã được tải xuống FPGA, RTS xác định địa chỉ của FPGA chứa phương pháp phần cứng được yêu cầu và bắt đầu truyền dữ liệu phải được xử lý bằng phương pháp này. Sau khi phương pháp mô phỏng đã xử lý xong, nó gửi tín hiệu ngắt đến RTS và kết quả từ tính toán có thể được đọc từ sổ đăng ký kết quả của thiết kế FPGA. Trong quá trình mô phỏng phương pháp phần cứng trên FPGA, luồng gọi bị treo và bất kỳ luồng phần mềm nào khác có thể được thực thi trên máy ảo Java cùng một lúc.

Máy trạm được sử dụng để nhập đặc tả Java, để biên dịch Java thành mã byte và thực thi mã byte cho phần mềm của hệ thống.

Các tác vụ tổng hợp khác nhau cần thiết để di chuyển các phương thức Java chuyên dụng đến bảng mô phỏng FPGA được thực hiện trên máy trạm chủ. RTS được thực hiện trong phần mềm trên máy chủ. Phần phần cứng được thực hiện bằng cách sử dụng một bảng FPGA chuyên dụng được kết nối với máy trạm qua bus PCI.

1.8 Hỗ trợ nhiều ứng dụng

Trong thiết kế hệ thống nhúng truyền thống, mục tiêu chính là tìm ra kiến trúc tối ưu để thực hiện một ứng dụng duy nhất, cụ thể. Trong hệ thống kiến trúc này, ASICs (Mạch tích hợp ứng dụng cụ thể) và bộ xử lý là các khối xây dựng điển hình. Nhà thiết kế thực hiện phân vùng ứng dụng lên ASICs và bộ xử lý theo các số liệu hiệu suất như sức mạnh xử lý, tính linh hoạt và tiêu thụ điện năng. Nhúng mới nổi hệ thống trong lĩnh vực thiết bị thông tin (ví dụ: PAS và imt2000 - thiết bị đầu cuối Viễn thông Di động Quốc tế) khác với các thiết bị đầu cuối truyền thống hệ thống nhúng trong các khía cạnh sau:

● Chạy nhiều ứng dụng như trình duyệt web, âm thanh và video ứng dụng giao tiếp, v.v., và

● Yêu cầu kết nối mạng.

Để thiết kế một hệ thống nhúng đa ứng dụng đòi hỏi khả năng xử lý đáng kể cho mỗi ứng dụng, là một nhiệm vụ đầy thách thức từ quan điểm của phương pháp thiết kế truyền thống, nói chung, một kiến trúc chỉ tốt cho

một ứng dụng nhưng kém hơn hoặc không phù hợp cho các ứng dụng khác. Để đáp ứng các hạn chế về chi phí và tiêu thụ điện năng, nhà thiết kế có thể phải sử dụng các vòng lặp thiết kế lại tốn kém thường không hội tụ

hoặc sản xuất quá thiết kế. Giải quyết vấn đề này đòi hỏi khả năng lập trình của kiến trúc hệ thống để một hệ thống nhúng có thể được điều chỉnh cho phù hợp với ứng dụng.

Khả năng lập trình được giới thiệu với kiến trúc bằng cách nhúng FPGAs vào hệ thống. FPGA là một lựa chọn khả thi vì những lý do sau:

● FPGAs có khả năng xử lý và dung lượng logic gần với asics.

● Bằng cách lập trình lại FPGAs, hệ thống nhúng có thể tự điều chỉnh theo ứng dụng mới.

● Mặc dù FPGAs có sẵn không hiệu quả về năng lượng, nhưng có những nỗ lực liên tục để đạt được mức tiêu thụ điện năng thấp thông qua các phương pháp như áp dụng điện áp cung cấp thấp và chế độ tắt nguồn. Quản lý hệ thống nhúng sử dụng kết nối mạng để tải xuống các ứng dụng mới từ máy chủ từ xa. Kết nối này có thể được phục vụ bằng cách sử dụng Java như một nền tảng phần mềm. Hệ thống nhúng có thể lập trình sử dụng.

Java để tải xuống và thực thi mã ứng dụng mới mà không cần tắt toàn bộ hệ thống.

Kiến trúc hệ thống nhúng dựa trên Java bao gồm FPGA cùng với

bộ xử lý tiêu chuẩn. Trong kiến trúc này, mã Java và dòng bit FPGA của ứng dụng mới được tải xuống qua mạng. FPGA được lập trình và cấu hình lại động của FPGA được hỗ trợ. Giao tiếp giữa phần cứng (FPGA) và phần mềm (mã ứng dụng Java) sử dụng một tập hợp các API để truy cập phần cứng cơ bản từ các ứng dụng Java. Nguồn gốc API từ ứng dụng Java được gọi bởi Java Native Interface (JNI).

Độ chi tiết phân vùng là một phương thức Java được triển khai thành thành phần phần cứng (phương pháp phần cứng).

Thiết kế kiến trúc hệ thống nhúng cho các thiết bị thông tin mới nổi, chẳng hạn như PLA và thiết bị đầu cuối IMT2000, yêu cầu hỗ trợ nhiều ứng dụng và kết nối mạng. Kiến trúc có thể lập trình là một cách hiệu quả để thực hiện hỗ trợ nhiều ứng dụng. Kiến trúc hệ thống nhúng dựa trên FPGA sử dụng Java như một nền tảng phần mềm. Một tập hợp các

API giao tiếp gốc được sử dụng để giao tiếp giữa ứng dụng Java và FPGA, trong đó từ 80 đến 90% thời gian thực thi của hệ thống được sử dụng để liên lạc qua bus PCI.

1.8.1 Kiến trúc hệ thống dựa trên FPGA

Nền tảng phần cứng của kiến trúc bao gồm một bộ xử lý tiêu chuẩn, FPGA và bộ nhớ hệ thống, được kết nối thông qua bus bộ xử lý.

Khi bộ xử lý bắt đầu thao tác đọc hoặc ghi vào một số phương pháp phần cứng, phương pháp phần cứng tương ứng phản hồi hoạt động bus với sự trợ giúp của bộ giải mã địa chỉ của chính nó. Bộ xử lý bắt đầu giao tiếp phần cứng và phần mềm và. Bộ điều khiển cấu hình với lưu trữ bit-stream được bao gồm trong kiến trúc để hỗ trợ cấu hình lại động của FPGA. Vì bộ điều khiển cấu hình chịu trách nhiệm lập trình FPGA với sự khởi đầu từ bộ xử lý, bộ xử lý có thể thực hiện các công việc hữu ích khác song song với công việc lập trình FPGA.

Một HĐH nhúng cung cấp các dịch vụ, ví dụ như dịch vụ luồng và dịch vụ quản lý phần cứng khác, cho môi trường thời gian chạy Java. Các ứng dụng Java ở những nơi xa xôi có thể được tải xuống hệ thống nhúng thông qua trình quản lý hệ thống. Trình quản lý hệ thống thực hiện ba giao thức cơ bản như sau:

● Giao thức tải xuống mã ứng dụng (bao gồm cả luồng bit FPGA);

● Giao thức liên quan đến bảo trì hệ thống để quản lý từ xa;

● Giao thức xác thực để kiểm soát quyền truy cập vào hệ thống nhúng.

Trình quản lý hệ thống chứa một bộ nạp lớp tuỳ chỉnh dựa trên kết nối ổ cắm. Một ứng dụng ở một nơi xa xôi có thể được tải xuống và thực hiện theo các quy trình sau:

có thẩm quyền để làm cho hệ thống vào chế độ quản lý;

● Tải xuống mã ứng dụng mới, sau đó thực hiện khởi tạo như đặt luồng bit FPGA vào lưu trữ bit-stream;

● Thực hiện ứng dụng mới.

Để đơn giản, người ta cho rằng bộ đệm của các phương pháp phần cứng được ánh xạ vào các vùng địa chỉ vật lý được xác định trước và cố định.

Khi Java được sử dụng như một nền tảng phần mềm, ứng dụng không thể truy cập trực tiếp vào phần cứng cơ bản. Ứng dụng chạy

trong JVM trên bộ xử lý không thể truy cập vùng địa chỉ vật lý được ánh xạ vào bộ đệm của phương pháp phần cứng trong FPGA trực tiếp. Điều này có thể được giải quyết bằng cách:

● Sửa đổi JVM để có dịch vụ truy cập trực tiếp vào địa chỉ thực của bộ xử lý, hoặc

● Phát triển một thư viện giao tiếp gốc để một ứng dụng có thể truy cập nó thông qua Java Native Interface (JNI) với một số chi phí.

Giải pháp đầu tiên dẫn đến chi phí tối thiểu, tuy nhiên, sửa đổi nội bộ JVM là không dễ dàng và có thể không tuân theo các bản phát hành mới nhất của JVM. Phát triển một thư viện giao tiếp ngoại bản bên ngoài JVM giới thiệu một lớp JNI.

Một phần của tài liệu Thiết kế hệ thống mạng cảm biến (Trang 26 - 31)

Tải bản đầy đủ (DOCX)

(32 trang)
w