Tải bản đầy đủ (.pdf) (19 trang)

báo cáo thiết kế khối tổng hợp dao động số NCO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 19 trang )

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 trên FPGA
 Ứng dụng của khối tổng hợp dao động số NCO


Thiế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:
Y(t) = U0 sin(∆φt) = U0 sin(2пft)
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 .


Thiết kế khối tổng hợp dao động số NCO


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à:
yk = U0 sin(φk(t)) = U0 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-3600 mà
trên thực tế chọn miền giá trị 0-2N (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.
Pk = k.m
Giá trị biên độ Uk được số hóa tương ứng trong bảng Sin là:
Uk =


Thiế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:


Thiế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 độ


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.


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ế biên độ:


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ố:


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
C. Mô tả bằng VHDL và kiểm tra trên Modelsim

D. Kết luận


A. 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

•CORDIC
thực hiện
mộttính
lớptoán
lớn các
của hàm
các ứng
dụng
Jack E. Volder
cho việc
lượng
giác,gồm

cácnhân
hàm:
vàlượng
chia. giác, logarit và siêu việt; phép nhân số
phức,
trị John

riêngWalther
của vector,
ma trận
đảo, giải
 Nămtính
1971,
phát triển
giảinghịch
thuật CORDIC
tính
các hàm
Cùng
gianthường
này
cáccho
hệ việc
thống
tuyến
tínhhypebolic.
và phân tích
giáthời
trị bất
Cochran
đánhxử
dấulýviệc
thay
đổivàgiải
thuật
chỉ rahọc
trong

xử lýcũng
tín hiệu,
hình
ảnh,
tính
toánvàkhoa
CORDIC là lựa chọn tốt nhất cho các ứng dụng tính
nóirằng
chung.
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.


B. NỘI DUNG THUẬT TOÁN
Y

 Ý tưởng xuất phát

sin f

 Quay (1,0) đi 1 góc f để đạt được



(x,y) : x = cos (f), y = sin (f)
Khi quay bất cứ vector (x,y) góc f

x  x. cos(f )  y. sin(f )
y  y. cos(f )  x. sin(f )


f

X
cos f

Y

(x’,y’)

(x,y)
f
X

 Đưa cos ra ngoài, viết lại biểu thức

x  cos(f ).[ x  y. tan(f )]
y  cos(f ).[ y  x. tan(f )]

sin(f )
 tan(f )
cos(f )


B. NỘI DUNG THUẬT TOÁN
x  cos(f ).[ x  y. tan(f )]
y  cos(f ).[ y  x. tan(f )]

 Ta chọn các góc đặc biệt: f1, f2, …, fm


Sao cho: fi = arctan 2-i hay tanfi = 2-i
 Tại lần quay thứ i, tính được (xi+1, yi+1) từ (xi, yi)
như sau:

xi 1  K i .[ xi  yi .d i .2 i ]
yi 1  K i .[ yi  xi .d i .2 i ]

xi 1  cos(fi ).[ xi  yi .d i . tan(fi )]
yi 1  cos(fi ).[ yi  xi .d i . tan(fi )]

 Trong đó:
 Sau n lần quay

K i  cos( i )  cos(tan 1 (2 i ))

d i  1

n

K   K i n  , K  0.607 252 935...
i 0


B. NỘI DUNG THUẬT TOÁN
i
 Ví dụ: f=30.0°
0
0 = 45.045.0
 Start with 
(>

30.0)
0
 45.0 – 26.61 = 18.4 26.6
(<0 30.0)
 18.4 + 14.02 = 32.4 14.0
(>0 30.0)
 32.4 – 7.1 = 25.3 (< 30.0)
3
7.10
 25.3 + 3.6 = 28.9 (< 30.0)
0
 28.9 + 1.8 4 = 30.7 3.6(>
30.0)
 ...
5
1.80

tan(i)

i

f

45°

1

= 2-0

0.5


= 2-1

0.25

= 2-2

0.125

= 2-3

0.0625

= 2-4

0.03125

= 2-5

6

0.90

0.015625

= 2-6

7

0.40


0.0078125

= 2-7

= 30.0
8
0.20
0.00390625
 45.0 – 26.60 + 14.0 – 7.1 + 3.6
9
0.1
0.001953125
+ 1.8 – 0.9 + 0.4 – 0.2 + 0.1



= 30.1

= 2-8
= 2-9


30°


C. MÔ TẢ BẰNG VHDL VÀ KIỂM TRA TRÊN
MDELSIM
I.








CORDIC ROTATION MODE

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
x0,y0
y
 di = 1 when z>0, else -1
-45

xi+1= xi – di . 2-i . yi
30
-14
-i

yi+1 = yi + di . 2 . xi
+26.6

zi+1 = zi – di . i
Kết quả: xn=cos(f), yn=sin(f)

x2,y2
x

x3,y3
x1,y1


SƠ ĐỒ KHỐI

Ví dụ với góc cần tính là 300
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 300 = 1.425*0.6073 = 0.866
Sin 300 = 0.824*0.6073 = 0.5003


C. 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)


SƠ ĐỒ KHỐI
Ví dụ:
arctan 0.577 = 300 = 0.5236 rad
1 Số Slice Flip Flops
56
Kết quả hiện trên mô phỏng
Số LUTs 4 đầu vào
2 Input
270
: 0 00 1001001111001 = 0.577
Số Slice
3 output
147
: 0 00 1000011000000 = 0.523
Logic sử dụng

STT

Sử dụng

Có sẵn

Tỷ lệ


9312

0%

9312

2%

4656

3%

4

Số IOs

51

5

Số IOBs ngoại quan

51

158

32 %

6


Số BUFGMUXs

1

24

4%

•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




×