Thiết kế khối tổng hợp dao động số NCO Gồm 3 nội dung chính: Định nghĩa và cơ sở toán học của NCO Kết quả mô phỏng trên modelsim và hiện thực hóa khối tổng hợp dao động số NCO t
Trang 1Thiết kế khối tổng hợp dao động số
NCO
Gồm 3 nội dung chính:
Định nghĩa và cơ sở toán học của NCO
Kết quả mô phỏng trên modelsim và hiện thực hóa
khối tổng hợp dao động số NCO trên FPGA
Ứng dụng của khối tổng hợp dao động số NCO
Trang 2Thiết kế khối tổng hợp dao động số NCO
1 Định nghĩa
NCO viết tắt của Numerically Controler Osillator Là khối tổng hợp dao động bằng vi mạch số Khối này có khả năng tổng tạo ra dao động với tần số mong muốn một các trực tiếp bằng một vi mạch số tích hợp
Cơ sở toán học của NCO
Sóng sin mà ta muốn tổng hợp có hàm số phụ thuộc thời gian và tần số như sau:
Nếu đặt φ(t) = ∆φt = 2пft thì φ(t) là một hàm phụ
thuộc tuyến tính theo thời gian, nếu biểu diễn giá trị pha theo thang 0-3600
Trang 3Thiết kế khối tổng hợp dao động số NCO
Trang 4
Thiết kế khối tổng hợp dao động số NCO
Chia trục thời gian thành các khoảng cách đều nhau ∆t, khi
đó giá trị biên độ tương ứng là:
y k = U 0 sin(φ k (t)) = U 0 sin(∆φ.k.∆t)
Áp dụng định lý kachenhikov về rời rạc hóa và khôi phục tín
hiệu, để thu được tổ hợp các giá trị Uk đủ để khôi phục hoàn toàn sóng ban đầu giá trị đó phải thỏa mãn: ∆t < 1/2f
Giá trị tích lũy pha không nhất thiết thay đổi từ 0-360 0 mà
trên thực tế chọn miền giá trị 0-2 N (2N > 3600),để thu được
độ chính xác và độ phân giải cao hơn
Giá trị tích lũy pha Pk được tính bởi 1 khối cộng có đầu vào
là giá trị tích lũy N bit m
P k = k.m
G iá trị biên độ Uk được số hóa tương ứng trong bảng Sin là:
U k =
Trang 5Thiết kế khối tổng hợp dao động số NCO
Sơ đồ khối của NCO
Thời gian để thực hiện hết một chu kỳ sóng Sin là:
Tần số của sóng thu được tính theo công thức:
Trang 6Thiết kế khối tổng hợp dao động số NCO
Nếu x3x2= 00 thì giá trị tương ứng giữ nguyên
Nếu x3x2 = 01 thì giá trị tương của biên độ
Nếu x3x2 = 10 thì giá trị tương của biên độ
Nếu x3x2 = 11 thì giá trị tương của biên độ
Trang 7
Thiết kế khối tổng hợp dao động số NCO
2 Kết quả mô phỏng trên modelsim và hiện thực hóa khối
tổng hợp dao động số NCO trên FPGA
Tài nguyên sử dụng:
Chu kỳ nhỏ nhất: 5.656ns (Tần số lớn nhất: 176.803MHz)
Thời gian trễ nhỏ nhất ở đầu vào trước xung nhịp clock: 2.360ns
Thời gian đòi hỏi lớn nhất ở đầu ra sau xung nhịp clock: 5.434ns
Kết quả về thời gian tĩnh sau khi thực hiện kết nối và phân bố thu được
chu kỳ nhỏ nhất là 4,947 ns tương ứng với xung nhip cực đại chính xác là 202,143 Mhz
Trang 8Thiết kế khối tổng hợp dao động số NCO
3 Ứng dụng của khối tổng hợp dao động số NCO
Điều chế biên độ:
Trang 9
Thiết kế khối tổng hợp dao động số NCO
3 Ứng dụng của khối tổng hợp dao động số NCO
Điều chế tần số:
Trang 10
THUẬT TOÁN CORDIC
Gồm có 4 nội dung chính sau
A Giới thiệu thuật toán cordic
B Nội dung thuật toán
D Kết luận
Trang 11A Giới thiệu
CORDIC = COordinate Rotation DIgital Computer
Được tính toán và mô tả lần đầu tiên vào năm 1959 bởi
Jack E Volder cho việc tính toán các hàm lượng giác,
nhân và chia
Năm 1971, John Walther phát triển giải thuật CORDIC
cho việc tính các hàm hypebolic Cùng thời gian này
Cochran cũng đánh dấu việc thay đổi giải thuật và chỉ ra rằng CORDIC là lựa chọn tốt nhất cho các ứng dụng tính toán khoa học
Do tiềm năng, hiệu quả và chi phí thấp của CORDIC nên được phổ biến và phát triển mạnh
• CORDIC thực hiện một lớp lớn của các ứng dụng gồm các hàm: lượng giác, logarit và siêu việt; phép nhân số
phức, tính trị riêng của vector, ma trận nghịch đảo, giải các hệ thống tuyến tính và phân tích giá trị bất thường
trong xử lý tín hiệu, xử lý hình ảnh, và tính toán khoa học nói chung
Trang 12B NỘI DUNG THUẬT TOÁN
Quay (1,0) đi 1 góc f để đạt được
(x,y) : x = cos (f), y = sin (f)
f
(x’,y’)
Y
X (x,y)
Y
f
sin f
cos f
X
) sin(
)
cos(
.
) sin(
)
cos(
.
f f
f
f
x y
y
y x
x
)]
tan(
).[
cos(
)]
tan(
).[
cos(
f f
f
f
x y
y
y x
x
)
tan(
) cos(
)
sin(
f
Trang 13B NỘI DUNG THUẬT TOÁN
Ta chọn các góc đặc biệt: f1, f2, …, fm
Sao cho: fi = arctan 2-i hay tan fi = 2-i
Tại lần quay thứ i, tính được (x i+1 , y i+1 ) từ (x i , yi)
như sau:
Trong đó:
Sau n lần quay
)]
tan(
).[
cos(
)]
tan(
).[
cos(
f f
f
f
x y
y
y x
x
)]
tan(
).[
cos(
)]
tan(
).[
cos(
1
1
i i
i i
i i
i i
i i
i i
d x y
y
d y x
x
f f
f
f
] 2 [
] 2 [
1
1
i i
i i
i i
i i
i i
i i
d x y
K y
d y x
K
x
1
)) 2 ( cos(tan )
i
i i
i
d
i n
i
K
0
935 252
607 0
K n
Trang 14B NỘI DUNG THUẬT TOÁN
9 0.1 0 0.001953125 = 2 -9
Ví dụ: f =30.0°
Start with 0 = 45.0 (> 30.0 )
45.0 – 26.6 = 18.4 (< 30.0 )
18.4 + 14.0 = 32.4 (> 30.0 )
32.4 – 7.1 = 25.3 (< 30.0 )
25.3 + 3.6 = 28.9 (< 30.0 )
28.9 + 1.8 = 30.7 (> 30.0 )
f = 30.0 45.0 – 26.6 + 14.0 – 7.1 + 3.6 + 1.8 – 0.9 + 0.4 – 0.2 + 0.1 = 30.1
45° 30°
Trang 15C MÔ TẢ BẰNG VHDL VÀ KIỂM TRA TRÊN
MDELSIM
• Tại mỗi bước quay, cố gắng làm cho z = 0
( với z là góc hiện tại)
• Khởi đầu: x = 1; y = 0, z = f
• For i = 0 →n
di = 1 when z>0, else -1
xi+1= xi – di 2-i yi
yi+1 = yi + di 2-i xi
zi+1 = zi – di i
• Kết quả: xn=cos( f ), yn=sin( f )
y
x
x0,y0
30
- 45
x1,y1
+26.6
x2,y2
-14
x3,y3
Trang 16Ví dụ với góc cần tính là 30 0
Kết quả trên mô phỏng hiển thị sau 14 lần quay
0 01 0110110100001 = 1.425
0 00 1101001011101 = 0.824
Cos 30 0 = 1.425*0.6073 = 0.866
Sin 30 0 = 0.824*0.6073 = 0.5003
SƠ ĐỒ KHỐI
Trang 17C MÔ TẢ BẰNG VHDL VÀ KIỂM TRA TRÊN
MODELSIM
II CORDIC VECTOR MODE
• Sự khác nhau với rotation mode
• Khi chọn di, thay vì cố gắng làm cho z tiến tới 0, thì sẽ cố gắng làm cho yi
• di = –sign (xi yi)
• Các giá trị sẽ tiến tới là:
• xn = 1/K (x2 + y2)½
• yn = 0
• Zn = z + tan-1(y/x)
• Ứng dụng
• Nếu bắt đầu với x= 1, z= 0, giá trị z cuối cùng sẽ là
arctan(y)
Trang 18SƠ ĐỒ KHỐI
Ví dụ:
arctan 0.577 = 300 = 0.5236 rad
Kết quả hiện trên mô phỏng
Input : 0 00 1001001111001 = 0.577
output : 0 00 1000011000000 = 0.523
•Chu kỳ nhỏ nhất: 10.061ns (Tần số lớn nhất: 99.390MHz)
• Thời gian trễ nhỏ nhất ở đầu vào trước xung nhịp clock: 3.672ns
• Thời gian đòi hỏi lớn nhất ở đầu ra sau xung nhịp clock: 8.570ns