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

 
 
> CDMA-коррелятор, Реализация на ПЛИС
Tausinov
сообщение Oct 19 2013, 08:32
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Доброго времени суток. По работе возникла следующая проблема. Дали реализованный на TMS алгоритм с целью переноса его на ПЛИС XILINX XC5VSX50T.
Суть в следующем: обрабатываются блоки по 32768 отсчетов; каждый такой блок подвергается некому подобию циклической свертки с ПСП на такое же кол-во отсчетов. Почему подобию? Потому, что выполняется суммирование произведений не всех 32к отсчетов, а каждых 64, затем суммы складываются. Как мне объяснили, это необходимо для борьбы с набегом фазы.
Реализация сдвигового регистра с отводами на такое кол-во отсчетов требует большого объема затрачиваемых ресурсов, поэтому сам циклический сдвиг реализован на блочной памяти. Частоты позволяют повторное использование одних и тех же блоков, поэтому в каждой ячейке памяти хранится одно 512-битное слово. На первой итерации последовательно считываются все 64 таких слова и затем обрабатываются по правилу описанному выше. Кроме того, в специальный регистр заносится предыдущее считанное слово. Т.о. на следующей итерации, которая подразумевает уже циклический сдвиг всей 32к-битной последовательности на 1 бит, выбираются 512-1 бит текущего слова и 1 бит хранящегося в регистре. Для получения нужного блока из 512 бит требуется разместить "крест-накрест". В итоге на эту операцию уходит такое кол-во LUTs, что их просто не хватает.
Если кто-то сталкивался с чем-то подобным или знает, как этого можно избежать, пожалуйста, отпишитесь. Заранее извиняюсь за возможно сбивчивое или неточное описание.

Сообщение отредактировал des00 - Oct 20 2013, 11:44
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Oct 19 2013, 15:30
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Рекомендую опубликовать код, который управляет хранением, выборкой и сдвигом данных. И сообщить, какая скорость потока данных. На первый взгляд, тут требуется LUTов совсем чуть-чуть.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Oct 20 2013, 08:54
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Timmy @ Oct 19 2013, 19:30) *
Рекомендую опубликовать код, который управляет хранением, выборкой и сдвигом данных. И сообщить, какая скорость потока данных. На первый взгляд, тут требуется LUTов совсем чуть-чуть.


Код, к сожалению, сейчас на только на работе. Входные данные поступают с частотой 1.23 МГц, clk = 120 МГц. Хранение и выборка данных - два массива блочной памяти (из одного считываются данные для обработки, в другую в это время пишутся отсчеты, затем они меняются местами), адресация по счетчикам. Проблемное место именно в сдвиге.
-- вектор-указатель, изначально заполнен единичками, на каждой итерации сдвиг:
Код
pointer(521) <= '0';
pointer(520 downto 0) <= pointer(521 downto 1)
-- цикл выборки
for i in 0 to 511 loop
    if(pointer(i) = '1') then
       I_a(i) <=  douta0_I(curr_num) xor PRS_I(i); -- douta0_I - выход памяти, PRS_I - выход ROM, где хранится PRS, curr_num = (i+it_num) mod 512;
        -- it_num - номер итерации сдвига, меняется от 0 до 511.
     else
       I_a(i) <=  out_buff_I(curr_num) xor PRS_I(i); -- out_buff_I - тот самый регистр, хранящий предыдущее считанное значение.
     end if;
end loop;

аналогично формируются еще 3 компоненты, т.к. при перемножении 2-х квадратурных сигналов получаются 4 компоненты.

Сообщение отредактировал des00 - Oct 20 2013, 11:44
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 20 2013, 14:47
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Без полного кода не вполне понятно, но, похоже, сдвиг вы выполняете через мультиплексирование 512 по (512 в 1), так, конечно, никаких лутов не хватит. Возможно, это следствие прямого переноса алгоритма из Си.
Go to the top of the page
 
+Quote Post



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

 


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


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