আমার কাছে একটি ভাসমান-পয়েন্ট ডিজিটাল সিগন্যাল প্রসেসিং সিস্টেম রয়েছে যা x86-64 প্রসেসর ব্যবহার করে প্রতি সেকেন্ডে নমুনার একটি নির্দিষ্ট নমুনা হারে পরিচালনা করে। Assuming যে ডিএসপি সিস্টেম সিঙ্ক্রোনাস যাই হোক না কেন বিষয়ে লক করা আছে, কিছু ফ্রিকোয়েন্সিতে একটি ডিজিটাল অসিলেটর বাস্তবায়ন সবচেয়ে ভালো উপায় কি ?
: বিশেষ করে, আমি সংকেত জেনারেট করতে চান
একটি ধারণা হ'ল একটি ভেক্টর ট্র্যাক রাখা যা আমরা প্রতিটি ঘড়ির চক্রে একটি কোণ ঘোরাই।
মতলব সিউডোকোড বাস্তবায়ন হিসাবে (আসল বাস্তবায়ন সি তে রয়েছে):
%% Initialization code
f_s = 32768; % sample rate [Hz]
f = 19.875; % some constant frequency [Hz]
v = [1 0]; % initial condition
d_phi = 2*pi * f / f_s; % change in angle per clock cycle
% initialize the rotation matrix (only once):
R = [cos(d_phi), -sin(d_phi) ; ...
sin(d_phi), cos(d_phi)]
তারপরে, প্রতিটি ঘড়ির চক্রে, আমরা ভেক্টরটিকে কিছুটা আবর্তিত করি:
%% in-loop code
while (forever),
v = R*v; % rotate the vector by d_phi
y = v(1); % this is the sine wave we're generating
output(y);
end
এটি অসিলেটরকে প্রতি চক্রের জন্য কেবল 4 গুণগুলির সাথে গণনা করতে দেয়। তবে, আমি পর্যায় ত্রুটি এবং প্রশস্ততা স্থায়িত্ব সম্পর্কে উদ্বিগ্ন। (সাধারণ পরীক্ষায় আমি অবাক হয়েছি যে প্রশস্ততা মারা যায়নি বা সঙ্গে সঙ্গে বিস্ফোরণ ঘটে - সম্ভবত sincos
নির্দেশটি গ্যারান্টি দেয় ))।
এটি করার সঠিক উপায় কী?
sincos
তুলনা করে?mod
অপারেশনটি দেখার জন্য কি কোনও সম্ভাব্য সমস্যা রয়েছে ?