Xây dựng project trong môi trường XPS

Một phần của tài liệu Các hệ phần mềm thiết kế chuyên dụng, Tự động thiết kế điện tử và lập trình FPGA (Trang 205 - 210)

6.2. Quy trình thiết kế một project trên XPS

6.2.2. Xây dựng project trong môi trường XPS

Phần trên chúng ta đã giới thiệu một cách khái quát về việc thiết kế một hệ xử lý nhúng trong ISE và XPS, tiếp theo chúng ta sẽ thảo luận và kết luận về các bước cần thiết và chung nhất để hoàn thành một thiết kế hệ xử lý nhúng. Việc thiết kế một hệ xử lý nhúng điển hình được thực hiện theo các bước sau:

1. Tạo dựng nền phần cứng.

2. Tạo dựng nền phần mềm.

3. Thiết kế phần mềm ứng dụng.

4. Gỡ rối và kiểm tra phần mềm.

5. Kiểm tra nền phần mềm và phần cứng.

6.

6.2.2.1. Phát triển phần cứng

Dấu (*) tại các bước chỉ thị rằng bước đó được thực hiện một cách tự động khi

- Chạy ứng dụng XPS và mở một project mới.

- Tạo dựng một project hoặc project nền với BSB hoặc tạo dựng một project từ đầu với XPS.

- Lựa chọn họ FPGA*.

- Bổ xung các bộ xử lý và thiết bị ngoại vi vào thiết kế*.

- Kết nối các thiết bị ngoại vi với bộ xử lý thông qua các bus.

- Thiết kế và kết nối các thiết bị ngoại vi người dùng (không bắt buộc).

- Kết nối các cổng không theo đường bus của các IP core*.

- Định nghĩa các cổng ngoài cho giao tiếp của hệ xử lý nhúng*.

- Kết nối các ngắt từ các thiết bị ngoại vi tới bộ xử lý thông qua một bộ điều khiển ngắt (không bắt buộc)*.

- Định sơ đồ địa chỉ hệ thống cho các thiết bị ngoại vi*.

- Thiết lập cấu hình cho các bộ xử lý hoặc các core ngoại vi*.

- Gán các chân của FPGA trong file UCF*.

- Xác định các ràng buộc về thời gian (ít nhất phải có một bộ xử lý tham chiếu xung nhịp clock)*.

- Cấu hình file dowload.cmd phù hợp với kết nối JTAG trên board*.

- Bổ xung vào hệ nhúng để hình thành một project mức cao trong ISE.

- Bổ xung và kết nối các core Xilinx Chípcope cho project để trợ giúp trong quá trình gỡ rối.

- Xây dựng các đoạn mã testbench cho mô phỏng.

6.2.2.2. Xây dựng phần mềm ứng dụng

- Thiết lập nền phần mềm (Hệ điều hành, driver và thư viện).

- Tạo dựng một project mềm, sau sẽ được biên dịch thành chuỗi bit.

- Lựa chọn một ứng dụng khởi tạo, hệ điều hành,…

- Soạn thảo mã lệnh và gỡ rối cho phần mềm ứng dụng.

- Gói các file header cho BSP (xparameters.h), driver và các thư viện vào mã nguồn.

- Soạn thảo và mô tả các trình phục vụ ngắt.

- Soạn thảo các driver cho các ngoại vi người dùng tự xây dựng.

- Soạn thảo và thiết lập các linker script.

- Thiết lập trình biên dịch và các tuỳ chọn liên kết.

6.2.2.3. Xây dựng phần mềm ứng dụng trong XPS

Trong phần này chúng ta sẽ chỉ nêu ra phương pháp thiết kế một phần mềm ứng dụng trực tiếp trong XPS. Một cách tiếp cận khác là xây dựng phần mềm bằng công cụ phát triển phần mềm thư viện nền SDK.

1. Trong cửa sổ thông tin về project của giao diện người dùng XPS, mở danh mục Applications. Cửa sổ sẽ xuất hiện một danh sách các project ứng dụng vàd các bộ xử lý, các file chạy, các tuỳ chọn biên dịch, file nguồn và các file header liên quan đến các ứng dụng này.

2. Kích đúp vào Add Software Application Project để tạo một project phần mềm ứng dụng mới cho bộ xử lý trong hệ thống nhúng. Khi đó cửa sổ Add Software Application Project sẽ xuất hiện như Hình 6.4.

Hình 6.4: Tạo mới một project.

3. Đặt tên cho project và lựa chọn bộ xử lý mà ứng dụng này chạy trên nó.

4. Nếu file ELF được xây dựng cho project bên ngoài XPS, chúng ta cần đánh dấu vào hộp Project is an ELF-only Project và chọn đường dẫn đến file ELF có sẵn.

5. Kích OK.

Lúc này một project ứng dụng trống đã được tạo. Nó sẽ cho phép người dùng soạn thảo mã lệnh cho phần mềm mới hoặc có thể sử dụng các file mã lệnh có sẵn.

Sau khi soạn thảo xong, chúng ta có thể thiết lập các tuỳ chọn cho trình biên dịch để biên dịch ứng dụng sang file mã máy và có thể được nạp vào thiết bị FPGA..

6.2.2.4. Mô phỏng và gỡ rối cho phần mềm ứng dụng 6.2.2.4.1. Mô phỏng - Simulation

Mô phỏng để đảm bảo thiết kế làm việc theo đúng các tính năng đề ra. Có ba mức mô phỏng là mô phỏng hành vi (behavioral), mô phỏng cấu trúc (structural) và mô phỏng thời gian (timing). Các mức này được thực hiện ở các bước khác nhau trong quá trình thiết kế project. Các bước này được chỉ ra trong hình vẽ Hình 6.5.

Hình 6.5: Tiến hành các bước mô phỏng cho thiết kế.

a. Mô phỏng hành vi:

Bước này được thực hiện ở mức cao trong quy trình thiết kế. Bao gồm các mô phỏng cho các hoạt động ở mức cao. Như việc mô phỏng cho các toán hạng cộng 4 bit (khác với bộ cộng 4 bit ở mức cấu trúc). Lúc này chúng ta không cần quan tâm một cách chi tiết về thiết kế này được thực thi như thế nào. Các thiết kế ở mức hành vi này sau đó sẽ được các công cụ tổng hợp chuyển hoá thành các cấu trúc cổng và các kết nối để hình thành đặc tả mạch kết nối phần cứng.

Mô phỏng hành vi cho phép chúng ta kiểm tra về cú pháp và các chức năng mà không có các thông tin về định thời. Việc phát hiện sớm các lỗi trong bước này của chu trình thiết kế sẽ giảm thiểu về thời gian và tiết kiệm được tiền bạc. Sau khi các chức năng yêu cầu đạt được, các phương pháp mô phỏng cấu trúc và thời gian sẽ cho phép kiểm chứng được các thông tin chi tiết hơn.

b. Mô phỏng cấu trúc:

Tại bước này chúng ta có thể kiểm chứng những gì mà công cụ tổng hợp đã thực hiện trong bước hành vi. Lúc này thiết kế đã được mô tả hoàn toàn dưới dạng cấu trúc. Các thông tin về thời gian không được quan tâm trong mức mô phỏng này.

So với mô phỏng hành vi, bước này chạy chậm hơn nhưng lại cho chúng ta những thông tin chi tiết hơn về thiết kế.

Các công cụ của Xilinx có khả năng tạo ra những cấu trúc mạch HDL thuần tuý cho các thiết kế tiền tổng hợp. Các mạng kết nối VHDL và Verilog được xây dựng bằng các thành phần trong thư viện UNISIM. Các cấu trúc này mô tả tất cả các phần cứng cơ bản mức thấp trong các họ FPGA của Xilinx.

c. Mô phỏng thời gian:

Việc mô phỏng này cho chúng ta những thông tin quan trọng về mạch kết nối cụ thể. Bao gồm các thông tin về độ trễ giữa các đường tín hiệu. Trên cơ sở đó, sẽ xác định được các lỗi trong quá trình định vị các thành phần và kết nối chúng với nhau. Mô phỏng thời gian sẽ lâu hơn các bước mô phỏng trước nhưng đưa ra các thông tin chi tiết, cụ thể hơn.

6.2.2.4.2. Gỡ rối - Debug

EDK cung cấp các công cụ cho mục đích gỡ rối như trình gỡ rối GNU, công cụ gỡ rối SDK. Các công cụ này hỗ trợ các cấu trúc bộ vi xử lý MicroBlaze và PowerPC 405. Do vậy, chúng ta có thể gỡ rối cho các chương trình đang chạy trên

các board cụ thể, các bộ mô phỏng đặt lệnh chu trình chính xác ISS (Cycle-accurate instruction set simulator) hay một hệ thống nền ảo Microblaze (MicroBlaze Cycle- accurate Virtual Platform).

Các công cụ gỡ rối sử dụng bộ gỡ rối vi xử lý của Xilinx XMD (Xilinx®

Microprocessor Debugger) như một thiết bị nền để giao tiếp với các thiết bị đích khác nhau. XMD cung cấp các giao tiếp khác nhau cho việc điều khiển và gỡ rối nhằm thực hiện các phép kiểm tra phức tạp cho một hệ thống hoàn chỉnh. Công cụ XMD được sử dụng với MicroBlaze và PowerPC GDB (mb-gdb & powerpc-eabi- gdb) cho việc gỡ rối. Mb-gdb và powerpc-eabi-gdb kết nối với XMD thông qua một giao thức TCP từ xa nhằm điều khiển các board tương ứng. Do vậy GDB có thể được kết nối tới XMD trên cùng một máy tính hoặc qua Internet.

6.2.2.5. Khởi tạo và ghép nối phần mềm, phần cứng

Sau khi thiết kế nền phần cứng hoàn thành, chúng ta có thể biên dịch sang chuỗi bit cấu hình của FPGA. Nếu hệ thống nhúng là một module con trong thiết kế ISE mức cao, người dùng có thể dùng ISE để biên dịch tất cả nền phần cứng nhúng và các phần tử logic truyền thống đi kèm sang dạng bit. Ngược lại, nếu chúng ta sử dụng XPS như một ứng dụng độc lập, ta có thể dùng lệnh Generate Bitstream trong XPS để tạo chuỗi bit cho thiết kế. Khi này chúng ta chỉ đạt được chuỗi bit cho phần cứng và chưa thể tải lên FPGA cho đến khi phần mềm ứng dụng đi kèm được biên dịch.

Sau khi phần mềm ứng dụng đã được biên dịch, chúng ta có thể thực hiện một trong các bước sau để chạy trên phần cứng.

- Nếu phần ứng dụng được nạp vào các vùng nhớ trên chip, chúng ta có thể ghép file ELF vào file bit phần cứng. Do vậy, phần mềm ứng dụng sẽ được tải vào bộ nhớ trên chip và chạy mỗi khi FPGA được khởi động.

- Khi bắt đầu chạy, XPS sẽ tải file chạy lên board qua cáp JTAG đã được kết nối với FPGA. Trong trường hợp này, chúng ta nên chọn để file ứng dụng được ghép vào chuỗi bit phần cứng để khởi tạo bộ nhớ trên chip trong quá trình boot dữ liệu, điều này khiến cho bộ xử lý được duy trì ở trạng thái ổn định cho đến khi việc tải file ứng dụng hoàn thành.

- Cho các hệ thành phẩm, chúng ta có thể lưu trữ các file chạy trên các bộ nhớ ngoài không mất dữ liệu như PROM hoặc trong một thiết bị System ACE. Trong trường hợp này, người dùng cần cấu hình để trong quá khởi động, file chạy ghép với chuỗi bit phần cứng được nạp vào bộ nhớ trên chip. Sau mỗi lần FPGA được khởi động, trình khởi tạo sẽ copy file chạy ứng dụng lên thiết bị nhớ ngoài và bắt đầu chạy.

- Người dùng cần phải lựa chọn cách khởi tạo thích hợp cho file chạy trong XPS cho mỗi bộ xử lý. Sau đó chúng ta mới thực hiện cập nhật chuỗi bit, tức là ghép file chạy vào chuỗi bít phần cứng và sẵn sàng cho việc tải vào FPGA. Chúng ta có thể thực hiện bước cập nhật chuỗi bit trong ISE hoặc XPS.

Một phần của tài liệu Các hệ phần mềm thiết kế chuyên dụng, Tự động thiết kế điện tử và lập trình FPGA (Trang 205 - 210)

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

(231 trang)