Tích hợp thuật toán Matlab vào trong thiết kế FPGA

Một phần của tài liệu Kỹ thuật FPGA áp dụng thực hiện cho bộ mã FEC trong hệ DVB (Trang 80)

Có hai kiểu người trong thiết kế điện tử: những người nghĩ dưới dạng từ ngữ, và những người nghĩ dưới dạng hình ảnh. Sự phân nhóm này rõ ràng nhất trong DSP. Một số nhà thiết kế thích phát triển các thuật toán dưới dạng ngôn ngữ, trong khi một số khác lựa chọn vẽ ra các biểu đồ khối để mô tả các dòng dữ liệu. Cho đến bây giờ, mỗi phương pháp sử dụng các công cụ khác nhau nhưng tại sao phải có sự lựa chọn?

Xilinx System Generator cho DSP được thiết kế như một công cụ hữu ích cho việc tạo ra các phác họa DSP sử dụng các phương pháp đồ họa. Với một môi trường lập trình visual, System Generator đáp ứng các yêu cầu của người tạo ra hệ thống (để hợp nhất các thành phần phác họa) và người thiết kế phần cứng (tối ưu sự bổ sung).

Nhiều nhà phát triển thuật toán DSP thấy rằng ngôn ngữ MATLAB đáp ứng tốt nhất dạng phát triển ưa thích của họ. Với hơn 1000 chức năng cũng như các mở rộng chức năng cho xử lý tín hiệu, truyền thông, và xử lý wavelet, MATLAB cung cấp một môi trường phong phú cho việc phát triển thuật toán và gỡ rối.

Cộng thêm các chức năng IP cung cấp trong MATLAB, MATLAB là ngôn ngữ duy nhất thông thạo vector và ma trận trên cơ sở dữ liệu dạng sóng tại trung tâm của thuật toán trong các trình ứng dụng như truyền thông không dây, theo dõi rada/ hồng ngoại, và xử lý ảnh.

Công cụ AccelChip DSP Synthesis được phát triển cho các chuyên viên thiết kế thuật toán và những nhà xây dựng DSP, đó là những người đi theo một language-based flow. Với AccelChip, bắt đầu với các MATLAB M-file để thực hiện việc tạo ra các kích thích, ước lượng thuật toán và xử lý bổ sung. Ta có thể tải các M-file vào trong công cụ AccelChip, chúng trở thành “nguồn vàng” cho dạng thiết kế sản xuất các sự bổ sung tối ưu trong Xilins FPGAs.

Thống nhất từ ngữ và hình ảnh

Trong phần trước, các nhóm thiết kế đã tìm hiểu kỹ System Generator và AccelChop DSO Synthesis như các các công cụ thiết kế riêng biệt, nhưng được yêu cầu truy cập các khía cạnh tốt nhất của mỗi công cụ. AccelChip và phép chia DSP tại Xilinx cộng tác trong việc nỗ lực kết hợp các công cụ của AccelChip với System Generator. Kết quả cho phép kết hợp phác họa thuật toán dựa trên cơ sở ngôn ngữ trong MATLAB và phác họa hướng đến khối giao diện đồ họa trong Simulink như hình p-1.

---

Hình p- 1 Bộ tạo hệ thống, giao diện AccelChip

Công cụ tổng hợp DSP của AccelChip làm tăng System Generator bằng cách cung cấp một hướng tích hợp không có đường nối cho người thiết kế thuật toán, cho phép tạo ra các khối IP một cách mau lẹ, chính xác từ M-file, làm tăng khối Xilinx tạo ra trong System Generator. Hơn nữa, AccelChip có các bộ dụng cụ AccelWare tùy chọn bổ sung System Generator với các lõi IP được tối ưu cho các lõi Xilinx. Các bộ dụng cụ AccelWare bao gồm các khối xâu dựng toán học, xử lý tín hiệu, truyền thông và toán học tiên tiến để bổ sung các chức năng đại số tuyến.

Ví dụ phác họa Kalman Filter

Để minh họa phương pháp này, hãy làm một thuật toán nâng cao viết bằng MATLAB, sử dụng AccelChip để tổng hợp phác họa, và sau đó hợp nhất nó vào mô hình System Generator. Ví dụ là một bộ lọc Kalman – một phép đệ quy, bộ lọc thích ứng phù hợp để kết hợp các tín hiệu nhiễu vào một tín hiệu clear.

Các bộ lọc Kalman gắn vào một mô hình toán học của một đối tượng )như máy bay thương mại được theo dõi bởi rada mặt đất) và sử dụng một mô hình để dự báo các hoạt động trong tương lai. Sau đó các bộ lọc Kalman sử dụng các tín hiệu đo để hiệu chỉnh dự báo định kỳ. function [S] = simple_kalman(λ) DIM = size(λ,2); persistent p p_cap if isempty(p_cap) p_cap = [8 0 0; 0 8 0; 0 0 8]; p = ones(DIM,1)/2; end; I = eye(DIM); R = [128 0 0; 0 128 0; 0 0 128]; # estimate step:

--- #p_est = p; p_cap_est = p_cap+I; # correction step: K = p_cap_est * inv(p_cap_est+R); p = p + K * (λ' - p); p_cap = (I - K)*p_cap_est; S = p';

Ví dụ M-file cho bộ lọc Kalman, cho biết MATLAB M-file mô tả bộ lọc Kalman. Thuật toán định nghĩa ma trận R và I. Đó là 2 ma trận mô tả số liệu thống kê của tín hiệu đo và hoạt động được dự báo. Chín dòng cuối của thuật toán là mã dự báo và hiệu chỉnh ước lượng.

Thuật toán minh họa tính linh động và ngắn gọn của ngôn ngữ MATLAB. Các hoạt động thông thường như phép cộng và phép trừ thực hiện đa dạng như hai ma trận thứ nguyên A và P_cap mà không phải viết các vòng lặp, giống như phải làm trong các ngôn ngữ khác. Tính nhân của 2 ma trận thứ nguyên này được thực hiện tự động như tính nhân ma trận ngoại trừ các diễn giải đặc biệt. Các hoạt động MATLAB như sự hoán vị ma trận cho phép mã MATLAB cô đọng và dễ đọc. Và các hoạt động phức tạp như phép nghịch đảo ma trận được hoàn thành sử dụng các khả năng đại số tuyến rộng của MATLAB.

Với AccelChip, bước đầu tiên trong việc tổng hợp một thuật toán hoàn chỉnh là tạo ra các lõi chủ yếu được tham chiếu, trong trường hợp này, phép nghịch đảo ma trận được chỉ báo bời chức năng gọi inv(P_cap_est+R). Nhưng có thế thực hiện một phép nghịch đảo ma trận bằng nhiều cách; sử dụng phương pháp nào phụ thuộc vào kích cỡ, cấu trúc và giá trị của ma trận.

Sử dụng phép nghịch đảo ma trận lõi IP từ bộ dụng cụ AccelWare, có thể lựa chọn từ các kiểu cấu trúc vi mô được thiết kế cho các ứng dụng khác nhau. Những kiểu cấu trúc vi mô này có thể được tối ưu cho tốc độ, vùng, nguồn điện hoặc âm thanh. Trong trường hợp này, một hướng thích hợp nhất là sử dụng lõi phép nghịch đảo ma trận AccelWare QR.

Tổng hợp RTL với AccelChip

Với MATLAB M-file được tải vào AccelChip, bước tiếp theo là kích thích phác họa điểm di động để thiếp lập một đường cơ sở. Sau đó sử dụng AccelChip để chuyển đổi bản phác họa thành phép toán hỗn hợp điểm, xác minh nó trong MATLAB được biểu diễn trong hình p-3. AccelChip cung cấp một ma trận của các công cụ nhằm giúp sắp xếp các đoạn từ bản phác họa và xác minh các hiệu quả phác họa điểm hỗn hợp như bão hòa và làm tròn số. AccelChip hỗ trợ quy trình này bằng cách truyền bit tăng trong suốt quá trình mô phỏng và để cho sử dụng lời chỉ dẫn để thiết lập các ràng buộc vào độ rộng của bit. Sự khảo sát mô phỏng thuật toán này cho phép đạt được sự lượng tử hóa lý tưởng tối thiểu hóa độ rộng bit trong khi điều khiển tràn hoặc hụt bộ nhớ, …

---

Hình p- 2 Kiến trúc bộ lọc ƣớc tính Kalman

Khi đạt được sự lượng tử hóa thích hợp, bước tiếp theo là tạo ra RTL cho dụng cụ Xilins. Tại điểm này, có thể sử dụng AccelChip GUI để tạo ra các ràng buộc vào các phác họa sử dụng lời chỉ dẫn phác họa theo sau để đạt được sự tối đa hóa cao hơn.

+ Cuộn lại hoặc mở ra các vòng lặp FOR.

+ Mở rộng phép cộng hoặc phép nhân vector và ma trận.

+ Bộ nhớ RAM/ROM ánh xạ của các vector và ma trận 2 thứ nguyên. + Sự chèn đường ống dẫn.

+ Ánh xạ dịch chuyển thanh ghi.

Sử dụng các chỉ dẫn thiết lập phần cứng trên cơ sở kiểm soát bản phác họa, cho phép đội phác họa cải tiến chất lượng kết quả. Trong việc tổng hợp RTL, AccelChip đánh giá phác thảo tổng hợp và sắp xếp thuật toán tổng hợp, thực hiện sự tối ưu hóa đường biên cần thiết trong quy trình.

---

AccelChip duy trì một môi trường xác minh không thay đổi thông qua một cuộc tự kiểm tra; các vector đầu vào/ đầu ra được tạo ra khi xác minh mô phỏng MATLAB điểm hỗn hợp được sử dụng để xác minh RTL được tạo ra. Bước xác minh RTL cũng đưa cho AccelChip thông tin cần thiết để tính toán thông lượng và góc trễ của bộ lọc Kalman. Đó là thông tin cần thiết để đánh giá cho việc thiết kế kỹ thuật và là đáp ứng quan trọng để đạt được trong chu kỳ mô phỏng chính xác.

Chuyển từ AccelChip tới System Generator

Mặc dù việc xác minh RTL là một bước quan trọng nhưng các nhà thiết kế muốn xem thuật toán chạy trong phần cứng. Các giao diện cùng mô phỏng phần cứng trong vòng lặp của System Generator tạo ra một hướng push-button, cho phép mang toàn bộ khả năng của MATLAB và các chức năng phân tích Simulink để xác minh phần cứng.

Bây giờ chạy xác minh RTL trong AccelChip, sẵn sàng để xuất khẩu phác họa AccelChip đến System Generator bằng cách “Export” bảng chọn pull-down trong AccelChip GUI và lựa chọn “System Generator”. Sau đó, AccelChip tạo ra một khối System Generator vòng chính xác hỗ trợ sự mô phỏng và sự tạo ra mã RTL.

Lúc này, chuyển tiếp hướng phác họa tới System Generator, nơi một khối mới cho bộ lọc Kalman có sẵn trong trình duyệt thư viện Simulink. Chỉ cần lựa chọn khối bộ lọc Kalman và kéo nó vào trong mô hình đích để sát nhập bộ lọc Kalman được tạo ra AccelChip vào trong một phác họa System Generator.

Hình p-4 cho ta thấy biểu đồ cho bộ lọc Kalman. Ở trung tâm của biểu đồ System Generator là bộ lọc Kalman, và xung quanh nó là các khối gateway cần thiết cho phác họa System Generator.

Khi phác họa System Generator bao gồm khối tạo ra AccelChip, có thể thực hiện hoàn chỉnh mô phỏng mức hệ thống của vòng chính xác, các mô hình bit thực để xác minh rằng hệ thống đáp ứng các yêu cầu kỹ thuật. Có thể sử dụng các khối được tạo ra AccelChip cho System Generator cùng với bộ khối Xilinx. Khi bước xác minh mức hệ thống hoàn thành, bước tiếp theo trong hướng System Generator là tiến đến thực hiện phác họa. Bước “Generate” trong System Generator tuân theo phác họa vào phần cứng.

Các tùy chọn kiểm chứng

Tất cả các file thiết kế mà AccelChip tạo ra, bao gồm các file System Generator được xuất ra, và được kiểm chứng lại từ nguồn Matlab M-file. Phương pháp xác minh của AccelChip dựa trên cơ sở việc tạo ra một cuộc thử nghiệm từ nguồn MATLAB – cuộc thử nghiệm này được áp dụng tại mức RTL bên trong AccelChip và có thể được áp dụng trong System Generator để xác minh độ chính xác của bản thiết kế.

Một khi được kiểm tra trong môi trường System Generator, có thể xác minh khối tạo ra AccelChip sử dụng các phương pháp được hỗ trợ của System Generator, bao gồm mô phỏng HDL và phần cứng trong vòng lặp tăng nhanh tới 10 và 100 lần.

Kết luận

Sự tích hợp AccelChip với Xilinx System Generator là giải pháp đầu tiên để kết hợp thuật toán tổng hợp trên cơ sở MATLAB được ưu thích bởi các chuyên viên thiết kế thuật toán với hướng phác họa giao diện đồ họa được sử dụng bởi người thiết kế hệ thống và chuyên viên thiết kế phần cứng. Nó sử dụng ngôn ngữ MATLAB và các bộ

---

dụng cụ hướng dẫn để tạo ra các khối IP System Generator của các thuật toán DSP phức tạp.

Bằng cách cùng sử dụng các công cụ này, đội phác họa có thể tận dụng các biện pháp hữu ích nhất của phần cứng cho việc thực hiện, bao gồm đầy đủ các chuyên viên thiết kế thuật toán trong quá trình phác họa FPGA và hoàn thành các phác họa có chất lượng cao hơn với thời gian nhanh hơn.

1.2. Matlab một môi trƣờng phát triển cho thiết kế FPGA

Thiết kế luồng dựa trên cơ sở MATLAB

Trong những năm gần đây Matlab trở thành công cụ đắc lực cho việc mô phỏng, nó rút ngắn khoảng cách giữa việc nghiên cứu và phát triển hệ thống. Với cả người phát triển hệ thống và người nghiên cứu, đang làm việc trong cùng một lĩnh vực, thì thời gian để chuyển đổi một bài viết nghiên cứu hoặc đặc điểm kỹ thuật vào chi tiết kỹ thuật. có thể được giảm thiểu đáng kể. Trước đây, việc phân tích điểm cố định được thực hiện bằng tay và yêu cấu sự cần cù chăm chỉ. Thì hiện nay đang được chuyển đổi mã matlab chung sang mặt phẳng m-mã. Sự khác nhau phải được kiểm tra và được xác nhận cho các độ dài từ yêu cầu. Nói cách khác, m-code có thể được chuyển đổi tới mã cố định điểm C/C++. C-code có thể được tích hợp trong mô phỏng Matlab và được xác nhận. Tuy nhiên, các công cụ khác nhau có thể hỗ trợ chức năng điểm cố định. Mặc dù được điều khiển thủ công, việc chuyển đổi một m-code từ điểm động tới loại dữ liệu điểm cố định, yêu cầu sự thay đổi đơn giản. Một ưu điểm là các thực hiện khác nhau có giao diện tương tự nhau tạo cho nó ễ dàng hơn đối với cả người nghiên cứu và người phát triển. Bất kỳ sự thay đổi nào trong thuật toán có thể gây ra đánh giá trong kiến trúc điểm cố định. Ưu điểm khác nữa là sự tổng hợp mã Matlab điểm cố định hoặc mã C-code có thể được xem như là một chi tiết kỹ thuật của phần cứng hoặc sự

Một phần của tài liệu Kỹ thuật FPGA áp dụng thực hiện cho bộ mã FEC trong hệ DVB (Trang 80)

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

(89 trang)