Sai số của phép quay CORDIC phụ thuộc vào định dạng dữ liệu và số

Một phần của tài liệu Thuật toán đồng bộ và giải mã dữ liệu trong máy thu IRUWB tốc độ thấp (Trang 80 - 82)

vòng lặp

Do thuật toán CORDIC được triển khai trên phần cứng, tác giả tiến hành đánh giá sự ảnh hưởng của các yếu tố định dạng dữ liệu đầu vào và số vòng lặp cần thực thi lên độ chính xác và tốc độ thực thi của thuật toán. Hình 3.16 cho thấy mối liên hệ giữa hai yếu tố này và độ chính xác của khối CORDIC trên phần cứng. Cụ thể,

m x n k # Operations per Second NSV D0 /NSV D Non-pipeline (NSV D) Pipeline (NSV D0 ) 4 x 3 10 265.957 312.499 1.174.999 20 143.678 156.249 1.087.499 8 x 4 10 147.058 208.332 1.416.664 20 86.206 104.166 1.208.331 16 x 8 10 49.407 89.284 1.807.127 20 31.806 44.642 1.403.559 32 x 16 10 16.005 25.986 1.623.662 20 11.563 20.832 1.801.597 64 x 32 10 4.798 6.296 1.312.277 20 3.875 6.296 1.624.524 Bảng 3.2: Số phép toán SVD/s

tác giả tiến hành mô phỏng thuật toán CORDIC với năm định dạng khác nhau cho dữ liệu đầu vào: số dấu phẩy động độ chính xác đơn (single) và kép (double), số dấu phẩy tĩnh dạng 8 bit, 8.8 bit (8 bit trước và 8 bit sau dấu phẩy) và 8.16 bit. Trong năm định dạng dữ liệu trên, dạng single và double của MATLAB khó triển khai trên phần cứng và được dùng trong mô phỏng với mục đích là tham chiếu cho các định dạng khác. Kết quả mô phỏng cho thấy định dạng dấu phẩy tĩnh với 16 bit sau dấu phẩy và 12 bit trước dấu phẩy (4 bit được thêm vào để ngăn hiện tượng tràn ở kết quả đầu ra sau mỗi vòng lặp) là thích hợp nhất để triển khai trên phần cứng. Ngoài ra, kết quả mô phỏng cho thấy khi số lượng vòng lặp lớn hơn 16, độ chính xác của khối CORDIC gần như không được cải thiện. Nguyên nhân là do giới hạn về độ phân giải của dải giá trị có thể biểu diễn được (phụ thuộc vào định dạng dữ liệu được sử dụng) không cho phép thể hiện những cải thiện về độ chính xác khi số vòng lặp vượt qua ngưỡng 16 này. Vì vậy, khi triển khai trên phần cứng, số vòng lặp tối ưu được lựa chọn là 16, tức cần 4 bit cho bộ đếm. Khi đó, mỗi phép quay Givens được thực hiện bởi khối CORDIC trong 16 xung clock.

Sơ đồ ghép nối các khối CORDIC cải tiến để thực hiện phép quay Givens Rotation được thể hiện trên Hình 3.17, theo đó, tất cả N khối CORDIC đều thực thi phép toán cùng lúc (pipeline) dựa trên tín hiệu điều khiển từ khối điều khiển (CTRL) và khối

MUX. Khối CTRL có nhiệm vụ đưa ra tín hiệu điều khiển cho mỗi bộ CORDIC và chỉ số itrong mỗi vòng lặp. Khối MUXlựa chọn một trong các tín hiệu MSB để điều khiển các khối cộng/trừ (bên trong mỗi khối CORDIC) dựa theo chỉ số đầu vào (index). Chỉ số này chỉ thị cặp phần tử (xk, yk) cần thực thi phép toán CORDIC - Vectoring, chính là cặp phần tử giữ vai trò xác định chiều quay trong mỗi vòng lặp. Với thiết kế mới này, số lượng phép toán cần để thực hiện phép quay Givens Rotation trên phần cứng được giảm đi từ30−80%so với kiến trúc ban đầu (non-pipeline) tùy vào kích thước của ma trận (Bảng 3.2) nhờ tận dụng triệt để năng lực tính toán của các khối CORDIC, đồng thời tiết kiệm tài nguyên phần cứng cần sử dụng do loại bỏ được khối tính toán và xử lý góc quay θ.

CORDIC

MUX

CTRL

CORDIC CORDIC CORDIC

X in [N-1:0] Y in [N-1:0] · · · X out [N-1:0] Y out [N-1:0] · · · MSB MSB index i/MUX ctrl ADD/SUB ctrl

Một phần của tài liệu Thuật toán đồng bộ và giải mã dữ liệu trong máy thu IRUWB tốc độ thấp (Trang 80 - 82)

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

(134 trang)