реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Настройки CORDIC, Xilinx CORE Generator
tonloon
сообщение Sep 6 2010, 03:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Доброго времени суток.
Решил поставить в свой проект модуль CORE Generator - CORDIC (coordinate rotational digital computer) - для вычисления амплитуды и фазы сигнала на выходе FFT (также собранный в CORE Generator).
CORDIC поддерживает три формата 1) Signed Fraction 2) Unsigned Fraction 3) Unsigned Integer, тогда как FFT выдает данные в формате two’s complement.
При выборе функции ядра (Functional Selection) - Translate в CORDIC автоматически устанавливается формат Signed Fraction.
Как правильно в данном случае подключить CORDIC к выходу FFT ?
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Sep 6 2010, 08:57
Сообщение #2


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



скажите, пожалуйста, какое отношение ваша тема имеет к Языкам описания аппаратуры? вы правила форума читали? twak.gif


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 6 2010, 09:03
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Проект написан на VHDL.
CORDIC и FFT придется соеденять именно в нем.
Этот единственный раздел куда подходит данная тема.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Sep 6 2010, 12:10
Сообщение #4


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(tonloon @ Sep 6 2010, 12:03) *
Проект написан на VHDL.

а у вашего шефа рубашка не в цветочек? а то может стоит разместить эту тему в разделе мода и бизнес?
где в вашем вопросе связь с языками вообще и с ВХДЛ в частности?
эта тема подходит куда угодно в этой рубрике прежде, а сюда в последнюю очередь:
первый раздел посвящён непосредственно средам разработки и работы с ними, к которым относиться ваш CORE generator
четвертый раздел посвящён коркам(блокам IP),к которым относятся ваши FFT и кордик
и даже второй раздел по областям применения можно (хоть и с небольшой натяжкой) подвести под вашу тему
а в случае с Языками описания и вашим вопросом получается как в анекдоте про Василия Ивановича и спички


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Sep 6 2010, 12:36
Сообщение #5


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Цитата
Как правильно в данном случае подключить CORDIC к выходу FFT ?

Уважаемый tonloon, попробуйте раскрыть этот вопрос, возможно, приведя части исходников, тогда он точно впишется в тему

Если все-таки Ваш вопрос касается именно реализации алгоритма, то Вам придется прибегнуть к помощи Модератора, чтобы тему перенесли в раздел "Алгоритмы ЦОС"


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Sep 6 2010, 14:26
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Правила нарушать конечно нельзя, но раз уж они нарушились...
Давайте разбираться со схемой, а верный раздел форума потомки определят.
Если что, тут разберемся с типами и сформулируем вопрос для специалистов в "Алгоритмах ЦОС".

Допустим, я ничего не понимаю в cordic и fft, как и компилятор VHDL этого не понимает.
Объясните мне, что за данные у вас поступают на вход fft, что на выходе, block floating point или fixed point или что?
Чем оно не устраивает?
Зачем понадобился cordic ?
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 7 2010, 03:50
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Цитата(CaPpuCcino @ Sep 6 2010, 16:10) *
а у вашего шефа рубашка не в цветочек? а то может стоит разместить эту тему в разделе мода и бизнес?
где в вашем вопросе связь с языками вообще и с ВХДЛ в частности?
эта тема подходит куда угодно в этой рубрике прежде, а сюда в последнюю очередь:
первый раздел посвящён непосредственно средам разработки и работы с ними, к которым относиться ваш CORE generator
четвертый раздел посвящён коркам(блокам IP),к которым относятся ваши FFT и кордик
и даже второй раздел по областям применения можно (хоть и с небольшой натяжкой) подвести под вашу тему
а в случае с Языками описания и вашим вопросом получается как в анекдоте про Василия Ивановича и спички


Надо посмотреть в цветочек или нет, а вдруг...
Спасибо что просветили относительно разделов.
Действительно - виноват, пожалуй стоило выложить эту тему в четвертый раздел.
Анекдот такой не помню, уж простите.



Цитата(one_man_show @ Sep 6 2010, 16:36) *
Уважаемый tonloon, попробуйте раскрыть этот вопрос, возможно, приведя части исходников, тогда он точно впишется в тему

Если все-таки Ваш вопрос касается именно реализации алгоритма, то Вам придется прибегнуть к помощи Модератора, чтобы тему перенесли в раздел "Алгоритмы ЦОС"


Обращусь к модератору.
Подойдет раздел: Системы на ПЛИС - System on a Programmable Chip (SoPC).




Цитата(Shtirlits @ Sep 6 2010, 18:26) *
Правила нарушать конечно нельзя, но раз уж они нарушились...
Давайте разбираться со схемой, а верный раздел форума потомки определят.
Если что, тут разберемся с типами и сформулируем вопрос для специалистов в "Алгоритмах ЦОС".

Допустим, я ничего не понимаю в cordic и fft, как и компилятор VHDL этого не понимает.
Объясните мне, что за данные у вас поступают на вход fft, что на выходе, block floating point или fixed point или что?
Чем оно не устраивает?
Зачем понадобился cordic ?


FFT работает в режиме Burst I/O следующим образом: данные поступают в потоковом режиме (на частоте порядка 700 кГц) в FIFO, затем по накоплению 1024 отсчетов выдается команда старта FFT, данные загружаются из FIFO в FFT (частота 100 МГц) и, собственно, производится расчет. На выходе данные в формате fixed point.
Проблема в том, что формат signed fraction и формат fixed point разные форматы представления данных.
CORDIC потребовался для представления данных FFT в удобном формате, а именно в виде амплитуды и фазы обработаного сигнала.
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Sep 7 2010, 06:59
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Цитата
Проблема в том, что формат signed fraction и формат fixed point разные форматы представления данных.

Я никогда с ядрами Xilinx не работал, просто увидел не в своей теме знакомые слова и заинтересовался smile.gif , но судя по беглому взгляду на datasheet-ы signed fraction и signed fixed point в этих блоках означают одно и то же, вопрос только где двоичная точка стоит. В CORDIC-е формат signed fraction - это числа с фиксированной точкой в формате (2.N) - 1 знаковый бит, один бит целой части и N бит дробной части. Выход FFT нужно привести к этому формату. Составляющие комплексного числа на входе CORDIC должны иметь диапазон от -1 (включительно) до +1 (включительно). Если Вам не важен абсолютный уровень в конкретном бите FFT, а интересны только относительные уровни, то, скорее всего можно, можно просто тупо добавить к выходу FFT один знаковый разряд и подать сигнал на вход CORDIC.
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 7 2010, 07:23
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Цитата(hobgoblin @ Sep 7 2010, 10:59) *
Я никогда с ядрами Xilinx не работал, просто увидел не в своей теме знакомые слова и заинтересовался smile.gif , но судя по беглому взгляду на datasheet-ы signed fraction и signed fixed point в этих блоках означают одно и то же, вопрос только где двоичная точка стоит. В CORDIC-е формат signed fraction - это числа с фиксированной точкой в формате (2.N) - 1 знаковый бит, один бит целой части и N бит дробной части. Выход FFT нужно привести к этому формату. Составляющие комплексного числа на входе CORDIC должны иметь диапазон от -1 (включительно) до +1 (включительно). Если Вам не важен абсолютный уровень в конкретном бите FFT, а интересны только относительные уровни, то, скорее всего можно, можно просто тупо добавить к выходу FFT один знаковый разряд и подать сигнал на вход CORDIC.


Абсолютный уровень не важен.
FFT выдает два сигнала (реальная и мнимая части быстрого преобразования фурье) имеющие знаковый разряд.
Формат представления - дополнительный код.
СORDIC похоже оперирует с данными в обычном двоичном представлении числа + старший бит для знака числа.
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Sep 7 2010, 07:31
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Я же написал выше, что при выборе дробного формата CORDIC ожидает на входе fixed point (2.N). Это и есть дробное число в дополнительном коде, только целая часть занимает два бита (включая знаковый), поскольку диапазон входных чисел включает +1. Если бы +1 не входила в диапазон, то был бы простой знаковый формат (1.N).
ВВот кусок из даташита где это написано
Цитата
A XQN format number is an 1+X+N bit 2’s complement binary number; a sign bit followed by X integer
bits followed by an N bit mantissa (fraction)
. XQN format can be used to express numbers in the range
( -2X ) to ( 2X - 2(-N) ). An equivalent notation using the MathWorks® Fix format, defined as
Fixword_length_fractional_length, would be Fix(1+X+N)_N.
A number using Q15 format is equivalent to a number using Fix16_15 representation, and a number in
1Q15 format is equivalent to a number using Fix17_15 representation.

Там ведь даже пример дан.
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 7 2010, 07:52
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Цитата(hobgoblin @ Sep 7 2010, 11:31) *
Я же написал выше, что при выборе дробного формата CORDIC ожидает на входе fixed point (2.N). Это и есть дробное число в дополнительном коде, только целая часть занимает два бита (включая знаковый), поскольку диапазон входных чисел включает +1. Если бы +1 не входила в диапазон, то был бы простой знаковый формат (1.N).
ВВот кусок из даташита где это написано

Там ведь даже пример дан.


В формате XQN разобрался.
Если я правильно вас понял данные с FFT можно напрямую подключать к CORDIC, поскольку знаковый разряд на выходе FFT присутствует.


Сообщение отредактировал tonloon - Sep 7 2010, 07:55
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Sep 7 2010, 08:00
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Напрямую нельзя, нужно дополнить еще одним знаковым разрядом слева. Внутри кордика происходит усиление примерно в 1.6 раз (конкретное значение зависит от числа итераций), и, скорее всего, именно поэтому используется формат (2.N), чтобы избежать переполнения во внутренних сумматорах. Вы бы посмотрели в моделсиме или чем Вы там пользуетесь, какой динамический диапазон у отсчетов на выходе FFT, а еще лучше в MATLAB-е модельку бы сделали, если умеете System Generator-ом пользоваться.
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 7 2010, 08:07
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Цитата(hobgoblin @ Sep 7 2010, 12:00) *
Напрямую нельзя, нужно дополнить еще одним знаковым разрядом слева. Внутри кордика происходит усиление примерно в 1.6 раз (конкретное значение зависит от числа итераций), и, скорее всего, именно поэтому используется формат (2.N), чтобы избежать переполнения во внутренних сумматорах. Вы бы посмотрели в моделсиме или чем Вы там пользуетесь, какой динамический диапазон у отсчетов на выходе FFT, а еще лучше в MATLAB-е модельку бы сделали, если умеете System Generator-ом пользоваться.


На выходе FFT данные представлены в дополнительном коде со старшим знаковым битом.
Вводить еще один знаковый бит?
В итоге получится число с двумя битами отвечающими за знак...
Если речь идет о переполнении, возможно вы имели ввиду добавить разряд для самого числа?
Предположим что переполнения нет, поскольку сигнал слабый.

Если вас не затруднит, пожалуйста, зайдите icq.

По поводу симуляции...есть возможность смотреть работу CORDIC на плате.
Вот скрины с чипскопа

Сообщение отредактировал tonloon - Sep 7 2010, 08:48
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Sep 7 2010, 08:50
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Чтобы от формата (1.N) перейти к формату (2.N) надо просто добавить слева еще один бит (скопировать туда знаковый)

1-2^(-(N-1)) = 0.11....1 в формате (1.N) = 00.11...1 в формате (2.N)
+1 = 01.00...0 в формате (2.N)
-1 = 1.00...0 в формате (1.N) = 11.00...0 в формате (2.N)
-2 = 10.00...0 в формате (2.N)

ЗЫ: Я и так в аське сижу
Go to the top of the page
 
+Quote Post
tonloon
сообщение Sep 8 2010, 04:03
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-11-09
Из: Томск
Пользователь №: 53 708



Странное поведение у CORDIC
В режиме "Translate" при переводе "Rectangular to Polar Translation"
Выдает на выходе X_OUT (там где должен быть модуль сигнала) отрицательные значения?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 14:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01539 секунд с 7
ELECTRONIX ©2004-2016