alexeyv 0 14 июля, 2011 Опубликовано 14 июля, 2011 · Жалоба В TMS320VC5502 в ROM по адресу 0xFFED00H лежит синусная таблица. Может кто знает как ей пользоваться? Подскажите если не трудно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 14 июля, 2011 Опубликовано 14 июля, 2011 (изменено) · Жалоба В TMS320VC5502 в ROM по адресу 0xFFED00H лежит синусная таблица. Может кто знает как ей пользоваться? Подскажите если не трудно А зачем? Чем не устраивает полином? Изменено 14 июля, 2011 пользователем jcxz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 14 июля, 2011 Опубликовано 14 июля, 2011 · Жалоба Там же в инструкции написано черным по белому - таблица содержит 256 значений на 360 градусов (примерно 1.4 градуса шаг), отсчеты в формате Q15. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexeyv 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Там же в инструкции написано ......... Где? Тыкните пальцем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба 3.1.1 On-Chip ROM из даташита Пользоваться несложно. Читаете из памяти нужные элемент данной таблицы. Про целочисленный формат данных можете почитать, например, в описании библиотеки IQmath от тех же техасовцев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSergeyP 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба А зачем? Чем не устраивает полином? Скоростью выполнения расчета синуса (или косинуса). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexeyv 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Спасибо :bb-offtopic: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 15 июля, 2011 Опубликовано 15 июля, 2011 (изменено) · Жалоба Скоростью выполнения расчета синуса (или косинуса). Ну если Вам достаточно такой грубой точности как 256 значений на 360 градусов, то наверно. Но если для повышения точности будете пользоваться sin(x+y)=sin(x)*cos(y)+sin(y)*cos(x) то думаю будет значительно медленнее чем полиномом, так как насколько знаю - ROM там очень медленная. Изменено 15 июля, 2011 пользователем jcxz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 16 июля, 2011 Опубликовано 16 июля, 2011 · Жалоба Инструкция - в описании bootloader'а, там собственно то, что я привел выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 17 июля, 2011 Опубликовано 17 июля, 2011 · Жалоба вот как-то так с простенькой линейной интерполяцией. Вход - фаза в ячейке "expphase", котора занимает два слова, выход - квадратуры в T0 и T1. SINE_TABLE: .set 07FF680h mov #256, mmap(@BK03) mov #SINE_TABLE & 000FFFFh, mmap(@BSA01) bset AR0LC amov #SINE_TABLE & 0FF0000h,xar0 mov @expphase,ar0 mov uns(@expphase+1)<<#16,ac3 bclr FRCT mov *ar0+,ac2 sub *ar0-,ac2,t1 || sftl ac2,#16 mas t1,ac3,ac2 ; sine mov *ar0(#64),t0 sub *ar0(#65),t0,t1 mpy t1,ac3 || mov HI(ac2),t1 neg ac3 add mmap(@T0)<<#16,ac3 ; cosine sftl ac3,#-16 mov ac3,t0 bclr AR0LC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexeyv 0 18 июля, 2011 Опубликовано 18 июля, 2011 · Жалоба to SM Спасибо за код, а то сам начал уже типа этого писать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 18 июля, 2011 Опубликовано 18 июля, 2011 · Жалоба Генератор синусоиды на полиноме 4-й степени (примерно 13 бит точности) на C5502 тратит 10 тактов на 1 отсчёт синуса при 32-битной фазе. Без stalls насколько помню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexeyv 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Генератор синусоиды на полиноме 4-й степени (примерно 13 бит точности) на C5502 тратит 10 тактов на 1 отсчёт синуса при 32-битной фазе. Без stalls насколько помню. Тогда может приведете код для 10 тактов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Тогда может приведете код для 10 тактов? Примерно так (может где-то в мелочах только неточности за давностью лет ;) DATAcodec .sect ".dual:.DATAcodec" txPhasa .long 0 stepPhasa .long ... coefC3C4 .long -21812 << 16 | 2231 coefC1C2 .long 12864 << 16 | 83 coefC5 .word 7374 txAmpl .word -32768 .text .dp DATAcodec AMOV #DATAcodec, XDP MOV #stepPhasa, AR2 MOV #outbuf, AR0 BSET SXMD BSET ARMS BCLR SATD BCLR M40 BSET FRCT .arms_on MOV dbl(txPhasa), AC2 SFTL AC2, #1, AC0 SFTS AC0, #-17 ABS AC0, T3 ||MOV dbl(coefC3C4), pair(hi(AC0)) RPTBLOCAL cdc_1 ADD dbl(*AR2), AC2 ||MOV hi(AC2), AR1 MACMR coefC5, T3, AC1, AC3 ||BSET SATD MACR AC3, T3, AC0, AC3 ||MOV dbl(coefC1C2), pair(hi(AC0)) MACR AC3, T3, AC1, AC3 ||MOV hi(AC2), T2 MACR AC3, T3, AC0, AC0 ||SFTL T2, #1 MPYR T3, AC0, AC3 ||MOV dbl(coefC3C4), pair(hi(AC0)) SFTS AC3, #3 ||SFTS T2, #-1 XCC AR1 < #0 ||NEG AC3 MPYMR txAmpl, AC3 ||BCLR SATD cdc_1: MOV hi(AC3), *AR0+ ||ABS T2, T3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 26 июля, 2011 Опубликовано 26 июля, 2011 · Жалоба Примерно так (может где-то в мелочах только неточности за давностью лет ;) Хотите сказать что это все выполняется за 10 тактов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться