|
|
  |
Где достать алгоритмы для DCT, дискретное косинусное преобразование |
|
|
|
Apr 11 2005, 18:37
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Pechkin @ Apr 11 2005, 12:11) Решил попробовать описать дискретное косинусное преобразование своими ручками. Как я понял существует несколько алгоритмов, но для в реализации в железе наиболее подходит описанный вот в этой статье C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics, Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991. Однако саму статью найти не смог. Может есть у кого описание этой реализации преобразования? А вам какое именно и для какой цели? Подробное описание алгоритмов 8-ми точечного (судя по "11 Multiplications" вам нужно именно такое) прямого и обратного DCT есть, например, в этом документе http://www.theora.org/doc/Theora_I_spec.pdfЕсли вас интересует практическая реализация описанных там алгоритмов в FPGA и ваше применение совместимо с лицензией GNU/GPL, то вы можете загрузить код на Verilog-е (для Xilinx Spartan 3) здесь
|
|
|
|
|
Apr 11 2005, 19:24
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535

|
Цитата(Andrey Filippov @ Apr 11 2005, 21:37) А вам какое именно и для какой цели? Подробное описание алгоритмов 8-ми точечного (судя по "11 Multiplications" вам нужно именно такое) прямого и обратного DCT есть, например, в этом документе http://www.theora.org/doc/Theora_I_spec.pdfЕсли вас интересует практическая реализация описанных там алгоритмов в FPGA и ваше применение совместимо с лицензией GNU/GPL, то вы можете загрузить код на Verilog-е (для Xilinx Spartan 3) здесьДа меня интересует как раз 8 ми точечный алгоритм с целью получения практических навыков работы с Verilog. Спасибо за ссылку. Сейчас посмотрю
|
|
|
|
|
Apr 12 2005, 10:02
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535

|
Цитата(irum4 @ Apr 12 2005, 12:41) Чтобы не изобретать велосипед я пользовался DCT-корочкой из IP-Core от Xilinx Задача не получить результат, а получить опыт при работе с Верилогом
|
|
|
|
|
Apr 12 2005, 12:55
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894

|
Цитата(Pechkin @ Apr 11 2005, 21:11) Решил попробовать описать дискретное косинусное преобразование своими ручками. Как я понял существует несколько алгоритмов, но для в реализации в железе наиболее подходит описанный вот в этой статье C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics, Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991. Однако саму статью найти не смог. Может есть у кого описание этой реализации преобразования? А зачем использовать АЖ целых 11 умножителей? Лучше 8. Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли
|
|
|
|
|
Apr 12 2005, 13:39
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535

|
Цитата(Rok @ Apr 12 2005, 15:55) А зачем использовать АЖ целых 11 умножителей? Лучше 8. Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли  Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста
|
|
|
|
|
Apr 12 2005, 17:40
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Rok @ Apr 12 2005, 06:55) А зачем использовать АЖ целых 11 умножителей? Лучше 8. Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли  Вообще-то умножители - дорогой ресурс, лучше их экономить. В той реализации, ссылку на которую я привел, правда, пиксельная частота вдвое меньше тактовой (62,5 МГц и 125 МГц, соответственно, на Spartan 3), но используется не 8, а всего один умножитель на 8-точечный DCT (два - на двумерный). В комментариях приведены требуемые ресурсы.
|
|
|
|
|
Apr 13 2005, 07:32
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894

|
Цитата(Pechkin @ Apr 12 2005, 16:39) Цитата(Rok @ Apr 12 2005, 15:55) А зачем использовать АЖ целых 11 умножителей? Лучше 8. Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли  Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста MAC - Multiply and Accumulate, т.е. умножитель с аккумулятором. Вам нужно получить 8-точечное ДКП, зн., необходимо 8 МАСов на каждую точку. Данные приходят последовательно, зн. через 8 тактов вы получите ДКП. Но... Вам уже ответили, что умножители дорогой ресурс. И поэтому систему нужно строить оптимально. Т.е. смотреть на тактовую частоту системы и частоту входных пикселов. И если у вас МАС работает на частоте 40 Мгц, а входные пикселы с частотой 5 МГц, то вообще можно использовать только 1 МАС. Т.е. все крутиться вокруг МГц.
|
|
|
|
|
Apr 13 2005, 14:59
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Rok @ Apr 13 2005, 01:32) Цитата(Pechkin @ Apr 12 2005, 16:39) Цитата(Rok @ Apr 12 2005, 15:55) А зачем использовать АЖ целых 11 умножителей? Лучше 8. Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли  Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста MAC - Multiply and Accumulate, т.е. умножитель с аккумулятором. Вам нужно получить 8-точечное ДКП, зн., необходимо 8 МАСов на каждую точку. Данные приходят последовательно, зн. через 8 тактов вы получите ДКП. Но... Вам уже ответили, что умножители дорогой ресурс. И поэтому систему нужно строить оптимально. Т.е. смотреть на тактовую частоту системы и частоту входных пикселов. И если у вас МАС работает на частоте 40 Мгц, а входные пикселы с частотой 5 МГц, то вообще можно использовать только 1 МАС. Т.е. все крутиться вокруг МГц. Зачем же вы людей смущаете про 8 умножителей (или замедление в 8 раз)? Я же чуть выше привел пример реализацмм, где 1 умножитель обеспечивает частоту входных/выходеых пикселей всего в два раза ниже тактовой, а не в восемь, как вы написали - пиксели 62,5МГц, тактовая - 125МГц Если в указанной папке найти нужные файлы сложно, вот прямые линки на код: прямое 8-ми точечное DCT: http://cvs.sourceforge.net/viewcvs.py/elph...1.4&view=markupобратное 8-ми точечное DCT: http://cvs.sourceforge.net/viewcvs.py/elph...d.v?view=markupКороткое пояснение: Если вам нужно 11 умножений, а пиксели приходят на 1/2 частоты, то 8 входных пикселей занимают 16 тактов, что больше, чем 11. Так что при правильной раскладке по тактам один умножитель справится.
|
|
|
|
|
Apr 14 2005, 13:12
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894

|
Цитата(Andrey Filippov @ Apr 13 2005, 17:59) Зачем же вы людей смущаете про 8 умножителей (или замедление в 8 раз)? Я же чуть выше привел пример реализацмм, где 1 умножитель обеспечивает частоту входных/выходеых пикселей всего в два раза ниже тактовой, а не в восемь, как вы написали - пиксели 62,5МГц, тактовая - 125МГц Если в указанной папке найти нужные файлы сложно, вот прямые линки на код: прямое 8-ми точечное DCT: http://cvs.sourceforge.net/viewcvs.py/elph...1.4&view=markupобратное 8-ми точечное DCT: http://cvs.sourceforge.net/viewcvs.py/elph...d.v?view=markupКороткое пояснение: Если вам нужно 11 умножений, а пиксели приходят на 1/2 частоты, то 8 входных пикселей занимают 16 тактов, что больше, чем 11. Так что при правильной раскладке по тактам один умножитель справится. Спасибо за уточнение. Действительно это так, но только я так понимаю первый отсчет ДКП появится не через 8 тактов? Все таки ваш подход более правильный, умножители действительно нужно беречь. Особенно если их не 8, а 1. Хорошая экономия ресурсов. А то что результат будет позже - это уже не так важно. Еще раз спасибо за хорошую мысль.
|
|
|
|
|
Apr 14 2005, 16:03
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220

|
Цитата(Pechkin @ Apr 14 2005, 07:47) спасибо за консультацию, буду разбираться Еще могут помочь мои "черновики", где я разбирался с алгоритмами и раскладывал операции по регистрам и тактам - веселые такие цветные пасьянсы :-) Внутри архива - файл в формате Open Office
Прикрепленные файлы
idct4.zip ( 68.31 килобайт )
Кол-во скачиваний: 200
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|