Tôi đang làm việc trên một dự án DDS vi điều khiển trong C và có một số vấn đề về cách tính toán nội suy tuyến tính để làm mịn các giá trị đầu ra. Chương trình như bây giờ là
sử dụng 8 bit hàng đầu của bộ tích lũy 24 bit làm chỉ mục cho một mảng giá trị đầu ra 8 bit. Tôi cần phải đưa ra một hàm sẽ lấy byte trung bình và thấp hơn của bộ tích lũy và tạo ra một giá trị ở giữa giá trị "trước" và "tiếp theo" trong mảng. Điều này sẽ đủ đơn giản trên phần cứng nhanh, nhưng kể từ khi tôi đang sử dụng một vi điều khiển tôi thực sự cần phải tránh làm bất kỳ hoạt động điểm nổi hoặc đơn vị nào!Nội suy tuyến tính trong tổng hợp trực tiếp số
Với những hạn chế đó, tôi không chắc chắn về cách lấy giá trị nội suy 8 bit từ hai số đầu vào 8 bit của tôi và 2 byes thấp hơn của bộ tích lũy, đại diện cho "khoảng cách" giữa hai giá trị đầu vào. Cảm ơn trước cho tất cả lời khuyên!
Làm rõ
DDS = Direct Tổng hợp kỹ thuật số
trong DDS một dạng sóng được tạo ra từ một bảng tra cứu sử dụng một giai đoạn ắc. Bộ tích lũy pha thường chứa một thành phần nguyên và một thành phần phân đoạn. Thành phần nguyên được sử dụng như một chỉ mục trong bảng tra cứu. Trong việc triển khai DDS đơn giản, phần phân số bị bỏ qua, nhưng với đầu ra chất lượng cao hơn, thành phần phân đoạn được sử dụng để nội suy (thường là nội suy tuyến tính) giữa các giá trị bảng tra cứu lân cận. Đối với câu hỏi trên, chúng tôi đang xem xét cách thực hiện hiệu quả nội suy tuyến tính này giữa hai giá trị bảng tra cứu cho một phân số đã cho, f, trong đó 0 <= f < 1
.
_DDS_ là gì? –
DDS = Tổng hợp kỹ thuật số trực tiếp - được sử dụng để tạo dạng sóng trong âm thanh/radio/thông tin liên lạc/v.v. –