Bài 3: Điều khiển hệ thống

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 181 - 186)

5.2. Làm quen với System Generator

5.2.3. Bài 3: Điều khiển hệ thống

Điều khiển một hệ thống DSP

Khi bạn phát triển một hệ thống DSP trên phần cứng, thường yêu cầu vài mức độ điều khiển khác nhau. Ví dụ như các hành vi phụ thuộc vào từng trạng thái khác nhau của hệ thống, hoặc đơn giản là thực thi các thao tác cập nhật hệ số bộ lọc.

System Generator hỗ trợ các cơ chế điều khiển như sau:

- Máy trạng thái hữu hạn (Finite State Machines) - Điều khiển luồng dữ liệu ra

- Các điều khiển cho phép tín hiệu Clock và Reset - Các diễn đạt logic

Hình 5.24: Điều khiển một hệ thống DSP Khối MCode

Khối MCode hỗ trợ việc sử dụng MATLAB cho vấn đề thực thi các toán tử điều khiển rẽ nhánh có điều kiện hay điều khiển phụ thuộc trạng thái. Khối chức năng này không phù hợp cho việc mô tả một toán tử dạng thuật toán như một bộ lọc số FIR hay phép đảo ma trận, trong trường hợp này, công cụ AccelDSP của Xilinx có thể được sử dụng. Khối Mcode cung cấp một phương thức tiện lợi và hiệu quả cho việc thực thi các máy trạng thái và các điều kiện ghép phức tạp.

Ví dụ dưới đây mô tả khối Mcode thực hiệu chức năng như một hàm tích lũy:

Hình 5.25: Khối MCode Kiểu dữ liệu “xl_state”

Khi thực hiện một máy trạng thái sử dụng khối Mcode, một hàm MATLAB được cung cấp bởi Xilinx gọi là “xl_state” phải được sử dụng để khởi tạo một biến liên tục. Hàm này có hai đối số, đối số đầu tiên là điều kiện khởi tạo, đối số thứ hai

là lượng tử hóa của biến đã được khai báo. Ví dụ, nếu máy trạng thái của bạn có 6 trạng thái, bạn cần một số lượng tử 4 bít không dấu.

Cấu trúc của hàm như sau:

v=xl_state(init, precision) Trong đó:

Init – giá trị khởi tạo của thanh ghi trạng thái sau khi reset.

Precision - một số dấu phảy tĩnh xác định cho khối Mcode - - xlUnsigned(<độ dài từ>, <con trỏ nhị phân>) - - xlSigned(<độ dài từ>, <con trỏ nhị phân>) Ví dụ về máy trạng thái

Hình dưới đây mô tả một ví dụ đơn giản về máy trạng thái. Có thẻ dễ dàng mở rộng ra thành một lưu đồ nhiều trạng thái hơn. Lưu ý rằng một biến có tên “state”

được khai báo là liên tục và được khởi tạo với 2 bít, không dấu sử dụng hàm

“xl_state”. Một phát biểu chuyển trạng thái sau đó được sử dụng để giải mã các đầu vào, chuyển tới trạng thái tiếp theo và gán giá trị cho đầu ra.

Hình 5.26: Máy trạng thái Khối Expression

Khối Expression thực thi các toán tử bitwise not, and, or và xor đối với hai tín hiệu đầu vào. Các tín hiệu đầu vào có thể có độ dài bít lớn hon 1. Trong trường hợp khi hai đầu vào có độ dài bít khác nhau, con trỏ nhị phân được sử dụng để làm phù hợp sự khác biệt trên, sau đó các toán tử logic được thực hiện. Khối này cung cấp một cách rất hiệu quả để thực hiện các điều khiển logic trong hệ thống DSP.

Hình 5.27: Khối Expression Các cổng Reset và Enable

Trong System Generator, các khối như bộ nhớ hay lưu trữ đều cung cấp các tùy chọn cho các tín hiệu reset và clock_enable. Nếu như không được chọn, các cổng này được tự động kết nối tới các tín hiệu toàn cục tương ứng. Các tín hiệu điều khiển các cổng này đều ở dạng “boolean”.

Hình 5.28: Các cổng Reset và Enable Bursty Data

Một vài khối DSP phức tạp thường xuất dữ liệu ra dưới dạng không liên tục mà là bung ra, còn gọi là “bursty data”. Ví dụ khối non-streaming FFT yêu cầu vài chu kỳ clock để xử lý dữ liệu đầu vào trước khi đưa ra được kết quả ở đầu ra. Trong trường hợp này, các khối sẽ bao gồm cả các cổng điều khiển luồng dữ liệu mà cần phải được sử dụng trong hệ thống DSP. Các cổng này cung cấp các điều khiển kiểu luồng dữ liệu cơ bản. Các cổng này bao gồm cổng vin, thông báo dữ liệu hợp lệ đã sẵn sàng ở các đầu vào, và vout, thông báo dữ liệu hợp lệ đã sẵn sàng ở các đầu ra.

Hình 5.29: Bursty Data Tóm tắt bài 3

Sử dụng khối MCode cho các máy trạng thái và các điều khiển logic rẽ nhánh có điều kiện

Sử dụng khối Expression để thực hiện các điều khiển logic ở mức bít Các phần tử lưu trữ được tích hợp sẵn các chân tín hiệu reset và clock enable mà có thể được kết nối trong System Generator

Các khối mà dữ liệu đầu ra ở dạng “bursty” bao gồm các chân điều

khiển luồng dữ liệu gọi là vin và vout

Bài tập thực hành 4: Điều khiển hệ thống

Trong bài tập thực hành này, bạn sẽ thiết kế một máy trạng thái đơn giản sử dụng khối Mcode để phát hiện một chuỗi số nhị phân có giá trị “1011”. Lưu đồ máy trạng thái cũng phải có khả năng phát hiện nhiều lần xuất hiện giá trị trên, ví dụ

“10111011”

Các hướng dẫn về bài tập thực hành này nằm tại đường dẫn:

...<sysgen_tree>/examples/getting_started_training/lab4/

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 181 - 186)

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

(231 trang)