Xây dựng chƣơng trình quản lý cho tòa nhà

Một phần của tài liệu tích hợp dịch vụ đo và kiểm soát từ xa sử dụng fpga (Trang 74 - 84)

Với một hệ thống logic, các nhà cung cấp sẽ đưa ra quy trình thiết kế phù hợp cho sản phẩm của họ, các bước thiết kế sẽ bao gồm nhiều công đoạn từ việc thiết kế phần cứng hệ thống, phần mềm, mô phỏng, biên dịch, v.v… Và qua từng bước thiết kế, từng phần mềm đi kèm của nhà cung cấp sẽ được sử dụng tương ứng.

4.3.1. Quy trình thiết kế hệ thống

Dựa trên quy trình thiết kế của Xilinx, quy trình thiết kế VHDL, quy trình thiết kế hệ nhúng, dưới đây đưa ra trình tự thiết kế cho hệ thống như sau.

Hình 4-2 Quy trình thiết kế hệ thống

Đầu tiên của quy trình thiết kế là việc xây dựng hệ thống logic - nền tảng phần cứng của hệ thống, công việc này được thực hiện trên công cụ Xilinx EDK, sau bước này hệ thống đã có nền tảng phần cứng bao gồm vi xử lý MicroBlaze, các khối logic điều khiển SDRAM, FLASH, Debug, GPIO và các IP logic người dùng. Để phát triển các IP logic người dùng, sử dụng công cụ Xilinx ISE thiết kế RTL với VHDL và các IP dựng sẵn trên công cụ, sau

mong muốn, tích hợp lại hệ thống với Xilinx EDK và biên dịch lại, sản phẩm của bước này là tệp cấu hình cho hệ thống logic.

Sau khi xây dựng hoàn tất nền tảng phần cứng cho hệ thống, cần thiết kế phần mềm nhúng cho hệ thống. Trong đề tài này, công cụ thiết kế phần mềm cho hệ thống là uClinux-Petalinux, công cụ này cung cấp hệ điều hành và các ứng dụng cho hệ thống. Việc giao tiếp giữa hệ điều hành và nền tảng phần cứng cần có các trình điều khiển thiết bị. Do vậy trước khi bắt tay vào xây dựng các ứng dụng, cần viết các trình điều khiển cho các IP logic người dùng và tích hợp các trình điều khiển cho nền tảng phần cứng của hệ thống. Sau đó là tiến hành thiết kế các ứng dụng phần mềm cho hệ thống. Các ứng dụng phần mềm này được biên dịch và tạo ra tệp thực thi cho hệ thống logic.

Bước kế tiếp là thiết kế mạch mở rộng cho hệ thống. Khi hệ thống đòi hỏi các mạch phụ trợ và mở rộng bên ngoài FPGA, cần thiết kế các mạch điện phù hợp theo cách giao tiếp, sử dụng nền tảng phần cứng. Sản phẩm của bước này các mạch phụ trợ và mở rộng cho hệ thống logic.

Như vậy, một hệ thống hoàn chỉnh sẽ bao gồm: nền tảng phần cứng- hệ thống logic bao gồm các IP logic cùng vi xử lý hợp thành hệ vi xử lý nằm trên chip FPGA, hệ điều hành- hệ thống tệp thực thi điều khiển toàn bộ hệ thống logic, các mạch mở rộng phụ trợ cho chip FPGA kết nối tới thiết bị bên ngoài. Cuối cùng, nạp tệp cấu hình, tệp thực thi xuống FPGA và kết nối các mạch mở rộng cho hệ thống, có sản phẩm là một hệ thống logic có chức năng mong muốn.

4.3.2. Sơ đồ khối phần cứng DDR SDRAM Controller GPIO Controller Ethernet MAC FLASH ROM Controller MicroBlaze Processor DS1820 IF Control Board Motor UART Timer IRQ Controller PLB Bus JPEG Encoder IIC IF Hình 4-3 Sơ đồ khối nền tảng phần cứng

Hệ thống logic xây dựng trong luận văn là một hệ Vi điều khiển hoàn chỉnh bao gồm CPU, RAM, ROM, các khối logic. Mỗi khối logic đều có chức năng riêng biệt đảm bảo cung cấp đầy đủ các chức năng riêng rẽ cho hệ thống, bên cạnh những khối logic dùng sẵn là các khối logic xây dựng mới trong đề tài:

- Vi xử lý MicroBlaze: đây là một lõi Vi điều khiển mềm 32 bit, đi kèm cùng công cụ Xilinx EDK, Vi điều khiển đóng vai trò khối xử lý toàn bộ hệ thống, giao tiếp với các IP, xử lý luồng dữ liệu, thực thi mã lệnh trong tệp thực thi của hệ điều hành.

- Khối điều khiển DDR SDRAM: khối này làm nhiệm vụ điều khiển chip

- Khối điều khiển FLASH ROM: khối này làm nhiệm vụ điều khiển chip flash rom- bộ nhớ chương trình của hệ thống. Toàn bộ cấu hình phần cứng, ảnh của hệ điều hành và các chương trình ứng dụng sẽ lưu trữ trong flash rom, khi hệ thống được cấp điện, khối này đọc flash rom và truyền dữ liệu tới Vi điều khiển và bộ nhớ dữ liệu để khởi động hệ thống.

- Khối Ethernet MAC: khối này làm nhiệm vụ giao tiếp và điều khiển chip Ethernet MAC, cung cấp khả năng truy cập Ethernet cũng như truyền dữ liệu lên mạng Ethernet.

- Khối UART: khối này làm nhiệm vụ giao tiếp với PC qua cổng DCE-

RS232, cung cấp giao diện dòng lệnh giữa người dùng với hệ điều hành.

- Khối bộ định thời: khối này là bộ định thời cho hệ điều hành, cung cấp chính xác định thời và bộ đếm cho hệ điều hành.

- Khối điều khiển ngắt: khối này nhận các yêu cầu ngắt từ tất cả các khối logic, tổng hợp, mã hóa và gửi tới Vi điều khiển yêu cầu ngắt.

- Khối điều khiển GPIO: khối này làm nhiệm vụ điều khiển bật, tắt các

thiết bị điện kết nối tới hệ thống.

- Khối giao tiếp cảm biến nhiệt: khối này làm nhiệm vụ giao tiếp với cảm biến nhiệt DS1820, cung cấp khả năng theo dõi nhiệt độ nơi giám sát cho hệ thống.

- Toàn bộ hệ các khối logic trong hệ thống giao tiếp với vi xử lí qua bus PLB, đóng vai trò là tuyến kết nối dữ liệu, tín hiệu điều khiển, tín hiệu địa chỉ cho toàn bộ nền tảng phần cứng của hệ thống.

4.3.3. Cấu hình phần cứng

như khả năng đáp ứng tốt cho việc xây dựng hệ điều hành trên nền tảng phần cứng của hệ thống. Công cụ Xilinx EDK cung cấp một trình Wizard cho phép người dùng chọn và cấu hình các khối logic cơ bản nhất, bao gồm vi xử lý, khối điều khiển SDRAM, ROM, UART, Ethernet MAC, GPIO và bộ định thời. Dựa vào yêu cầu hệ thống, chọn các thông số cho các khối logic này như sau:

Bảng 4-1 Cấu hình phần cứng

Vi xử lý MicroBlaze

Tốc độ xung nhịp 50Mhz

Khối Debug Tích hợp trong chip

Sử dụng bộ nhớ cache có

Dung lượng cache lệnh 2KB

Dung lượng cache dữ liệu 8KB

Số FSL 1

Khối UART

Ngoại vi XPS UARTLITE

Tốc độ bit 9600 baud

Số bit dữ liệu 8

Khối điều khiển DDR SDRAM

Ngoại vi MPMC

Loại RAM DDR MT46V32M16-6/64MB

Khối điều khiển FLASH ROM

Ngoại vi XPS MCH EMC

Số bank nhớ 1

Khối Ethernet MAC

Ngoại vi XPS ETHERNETLITE Dùng ngắt Có Khối định thời Ngoại vi XPS TIMER Kích thước bộ đếm 32 bit Dùng 2 bộ định thời Có

Bổ sung khối giao tiếp IIC từ danh mục các IP đi kèm công cụ và thiết lập thông số cho khối này như sau:

Bảng 4-2 Cấu hình khối giao tiếp IIC

Khối giao tiếp IIC

Xung nhịp bus 50,000,000 Hz

Tần số tín hiệu SCL 100,000 Hz

Số bit địa chỉ 7 bit

Độ rộng 1 bit

4.3.4. Khối giao tiếp DS1820

Do việc thực hiện FSMD để giao tiếp với cảm biến này phức tạp và không hiệu quả bằng phần mềm nên trong khối này không triển khai xây dựng lõi giao tiếp bằng phần cứng cho cảm biến mà chỉ xây dựng giao diện giữa bus hệ thống với cảm biến. Giao diện này bao gồm bộ giao tiếp PLB bus và một thanh ghi dữ liệu duy nhất. Chân vào/ra duy nhất của khối này kết nối tới chân DQ của cảm biến nhiệt DS1820, đồng thời, tín hiệu từ chân này được kết nối tới bit có trọng số nhỏ nhất của thanh ghi. Thông qua bus PLB và các lệnh đọc ghi thanh ghi trực tiếp mà vi xử lý có thể giao tiếp với cảm biến này.

Giao tiếp Bus PLB T H A N H G H I Bus IP Bus PLB DQ

Hình 4-4 Khối giao tiếp DS1820

Bảng 4-3 Kết quả tổng hợp khối giao tiếp DS1820

Xung nhịp 203.9 Mhz 345.2 Mhz 429.4 Mhz

Slice 97/4656 (2%) 102/10752 (0.9%) 148/19200 (0%)

Bram 0/20 (0%) 0/72 (0%) 0/32 (0%)

Mul/dsp48s 0/20 (0%) 0/48 (0%) 0/32 (0%)

4.3.5. Thiết kế phần mềm

Toàn bộ phần mềm của hệ thống xây dựng trên môi trường hệ điều hành uClinux-petalinux. Đây là hệ điều hành đa tác vụ, do đó khi xây dựng các phần mềm ứng dụng, người dùng không gặp nhiều khó khăn về việc chia sẻ tài nguyên hệ thống cũng như khả năng xử lý công việc phức tạp của các module chương trình. Từ chương trình lõi là hệ điều hành khác hoặc uClinux, các module phần mềm ứng dụng sẽ được gọi và xử lý. Phần mềm của hệ thống bao gồm các module như sau:

Giao tiếp RTC Giao tiếp ds1820 webserver Điều khiển thiết bị Điều khiển motor Khởi tạo TVP5150 Giao tiếp JPEG Tạo ảnh động CGI Lõi uClinux

Hình 4-5 Các module chương trình thiết kế trên uClinux

- Web server: chương trình phục vụ web, cung cấp giao diện người dùng qua trang web nhúng trên tệp hệ thống của hệ điều hành.

- Điều khiển thiết bị: chương trình điều khiển bật, tắt các thíết bị kết nối tới hệ thống qua mạch điều khiển.

- Giao tiếp DS1820: chương trình giao tiếp với cảm biến nhiệt DS1820,

đọc cảm biến sau mỗi 2s và cập nhật lại thông số nhiệt độ theo dõi.

- …

a) Web server

Bộ uClinux-petalinux cung cấp sẵn ba chương trình web server bao gồm web app, boa server và fnord web server. Sau khi xem xét và kiểm tra với hệ thống đã được nhúng web server, chương trình web server được lựa chọn là fnord web server, đây là web server xử lý đa tác vụ, có hỗ trợ CGI và đơn giản khi sử dụng. Để nhúng fnord web server vào trong hệ thống, chỉ cần bật danh mục cấu hình ứng dụng cho uClinux và chọn mục tương ứng như sau:

b) Giao tiếp RTC

Chip RTC cung cấp giờ thực cho hệ thống, để cập nhật giờ thực chương trình sử dụng ngắt định thời hệ thống theo mỗi giây, đọc dữ liệu từ chip RTC và cập nhật lại biến lưu giờ hệ thống. Khi từ client gửi yêu cầu xem giờ hệ thống, giá trị giờ thực này sẽ được truyền đến client.

c) Điều khiển thiết bị

Đây là chương trình CGI cho phép người dùng tắt bật 4 thiết bị kết nối tới hệ thống, khi người dùng nhập chọn bật/tắt và nhấp nút submit, giao thức POST sẽ truyền đi gói tin mang theo giá trị của lựa chọn bật/tắt. Căn cứ vào giá trị đó mà chương trình sẽ ghi bit điều khiển xuống GPIO kết nối tới mạch điều khiển thiết bị.

d) Giao tiếp DS1820

Để cập nhật biến lưu giá trị nhiệt độ, chương trình dùng ngắt bộ định thời hệ thống mỗi 2s, đọc giá trị ds1820 và cập nhật lại giá trị nhiệt độ, khi client gửi yêu cầu xem nhiệt độ khu vực quan sát, thông số nhiệt độ này sẽ được truyền đi.

ds182 0 end Reset DS1820 Ghi lệnh bỏ qua ROM Định thời=2s? 1 0 Ghi lệnh chuyển đổi dữ liệu Chuyển đổi xong? Reset DS1820 Ghi lệnh bỏ qua ROM Đọc kết quả

Ghi vào biến lưu nhiệt độ 1

0

Hình 4-7 Giải thuật giao tiếp DS1820

Một phần của tài liệu tích hợp dịch vụ đo và kiểm soát từ xa sử dụng fpga (Trang 74 - 84)