Mô tả thuật toán 49

Một phần của tài liệu Nghiên cứu mạng neuron nhân tạo và thực hiện mô hình NN trên FPGA (Trang 49 - 52)

Thuật toán thực hiện một trong hai kiểu: Rotation (Quay) hoặc Vectoring (Véc-tơ). Hai kiểu xác định tập các hàm có thể được tính toán sử dụng trong thuật toán. Trong kiểu Rotation, thành phần x- và y- của véc-tơ khởi tạo là đầu vào, cũng như là một góc quay. Sau đó phần cứng tính toán lặp đi lặp lại các thành phần x- và y- của véc-tơ sau khi nó được quay bởi các góc quay lý thuyết [8]

Trong kiểu Vectoring, hai thành phần đầu vào, biên độ và góc của vectơ gốc

được tính toán. Điều này được thực hiện bằng cách quay vectơđầu vào cho đến khi nó được sắp thẳng hàng với trục x-. Bằng cách ghi lại các góc quay để đạt được sự

sắp xếp này, khi biết trước góc của vectơ gốc. Khi thuật toán hoàn thành, thành phần x- của vectơ sẽ bằng với biên độ của vectơ khởi đầu.

Thuật toán CORDIC thực hiện việc tính toán của nó chỉ sử dụng các phép toán công, trừ, và dịch. Điều này được thực hiện bằng việc quay lặp đi lặp lại vectơđầu vào và đồng qui một cách chậm chạp tới vectơ quay cuối cùng. Điều này được thực hiện trong một chuỗi các bước hoàn toàn xác định. Bước quay đầu tiên nhìn vectơ

quay radians:

(3.1) = = sin( ± ) = = cos( ± )

Trong đó và là các vectơđầu vào được gắn ở gốc với biên độ và góc :

(3.2) = cos = sin

Trong mỗi bước xảy ra sau, một góc quay mới được xác định như sau: (3.3) = ( ), trong đó i > 0

50

Sự giới hạn được quyết định trong sự cho phép các phép tính quay biểu diễn trong mỗi bước được thực hiện chỉ sử dụng một phép cộng (hoặc trừ) và một phép dịch.

Hình 3.1: Bước thứ i trong thuật toán CORDIC

Hình 3.1 biểu diễn mỗi bước trong thuật toán CORDIC trông như thế nào. Tại mỗi bước, một quyết định được đưa ra để thực hiện quay vectơ theo góc hoặc là + hoặc là - . Kết quả của cả hai quyết định này được nhìn thấy ở hình trên. Biểu thức để quay vectơ trong bước thứ (i+1) là:

(3.4) = =

51

(3.5) = ( = (

Trong đó, = , = ±1

Ki là thành phần giới hạn lỗi biên độ và di tương ứng với hướng quay (+1 tương ứng với việc quay từ trục x-). Các thành phần 2-i trong các phương trình trên và dưới tương ứng lần lượt là sự dịch trái của yi và xi khi tính toán theo cơ số hai. Giá trị dịch này sau đó được cộng (hoặc trừ) cho giá trị hiện tại của thành phần. Volder gọi phép tính này là cross-addition.Nó cho phép thuật toán được sử dụng một cách hiệu quả trong phần cứng số.

Như mô tả trong hình 3.1, Tất cả các bước quay ảnh hưởng đến việc tăng độ

lớn biên độ của véc-tơ đầu vào bởi hệ số với mỗi lần quay. Sai số này

được đưa ra như là kết quả của phép tính thu được của thuật toán từ biến đổi Givens, quay một véc-tơ bởi một góc lý thuyết đã định rõ:

(3.6) =

=

Các chỉ số x’ và y’ có thể được tính lại bằng việc sử dụng công thức lượng giác cơ bản = cho ra kết quả sau:

(3.7) = =

Cũng sử dụng giới hạn trong phương trình (3.3), chúng ta cũng có được các mối liên hệ như trong phương trình (3.5). Giới hạn sai số từ sự hiện diện của hệ số

cosine trong phương trình (3.7), độc lập với hướng quay. Sine cosine đối xứng với nhau về hướng quay, sine cosine đối xứng qua trục y-. Thêm vào đó, với việc tích lũy sai số của mỗi bước quay, do đó nếu số lần lặp được thiết lập, sai số tổng cộng trong thuật tóan độc lập với góc quay đầu vào.

Nếu lần quay đầu tiên là: (3.8)

52

Sau đó, lần quay thứ hai được tính như sau: (3.9)

Suy rộng ra, lần quay thứ n sẽ được tính như sau và dẫn đến công thức định nghĩa tổng quát:

(3.10)

Sự gia tăng độ lớn biên độ tổng có thể được định ra bằng hệ số

. Sự gia tăng này phải được tính toán khi các phép tính thực hiện sử

dụng thuật toán này.

Một phần của tài liệu Nghiên cứu mạng neuron nhân tạo và thực hiện mô hình NN trên FPGA (Trang 49 - 52)

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

(86 trang)