СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №7/2012

ПРОГРАММИРОВАНИЕ формате Q9.9 с 48 бит до 18 бит от брасываются младшие девять бит ре зультата ификсируются последующие 18 бит, т.е. в выходном регистре P[47:0] используются биты P[26:9]. Однако если результат умножения использу ется в дальнейших операциях сложе ния/вычитания в блоке DSP48A1, то ис пользуются все 48 разрядов. Поскольку в операции «бабочка» умножение требуется для второго входного отсчёта и коэффициента по ворота, как это видно из рисунка 2 (IN2* W N ), именно эти составляющие подаются на входы умножителей. Таб лица коэффициентов поворота хра нится в файле trom.v. Эти коэффици енты также являются комплексными числами. Действительная часть равна значениям косинуса, а мнимая – значе ниям синуса. Первый коэффициент twd[0] равен cos(0) + j sin(0), т.е. вычис ляется для нулевого угла. Затем для каждого последующего коэффициента угол уменьшается на π /64, и новый ар гумент равняется arg – π /64. Все полученные значения синусов и косинусов затем представляются в формате с фиксированной точкой Q9.9 и запоминаются в файле trom.v. Для автоматизированного вычисления коэффициентов поворота и многих других отладочных функций исполь зовалась вспомогательная программа XilinxCOM, исходные коды и исполня емый файл которой находятся в архи ве XilinxCOM.zip. Работой модуля умножения управ ляет конечный автомат, блок схема ко торого изображена на рисунке 7. В от сутствие входных данных автомат на ходится в состоянииMULT_IDLE. После установки сигнала start_i в единичное значение конечный автомат перехо дит в состояние MULT_M1 и начинает ся операция умножения комплексных чисел – второго входного сигнала re2_i , im2_i и коэффициента поворота twr_i , twi_i . Согласно вышеприведён ной формуле, умножение комплекс ных чисел включает в себя операции как собственно умножения, так и сложения и вычитания. На стадии MULT_M1 вычисляются произведения re2i * twr_i, im2_i * twi_i, re2_i * twi_i, twr_i * im2_i . Во все последующие состояния конечный автомат переходит на каж дом периоде тактового сигнала. В со стоянии MULT_P1 не выполняется ни каких математических действий. Согласно рисунку 6, для получения конечного результата умножения ком плексных чисел необходимо, чтобы продукты умножения компонентов mult2 и mult4 прошли стадиюпост сум мирования. Для этого требуется допол нительный период тактового сигнала. Пост суммирование результата умно жения для mult2 и mult4 выполняется в состоянииMULT_P1 (стадия propagate в программе) в виде сложения с едини цей, и результаты умножения остаются неизменными. Затем автомат перехо дит в стадиюMULT_A1, где выполняют ся операции сложения и вычитания для получения конечного результата умножения комплексных чисел. После завершения стадии MULT_A1 на выхо дах умножителей 1 и 3 появляется ре зультат умножения второго входного отсчёта и коэффициента поворота. Следующимшагом является получе ние окончательных результатов опе рации «бабочка» или суммы IN1 + + IN2* W N и разности IN1 – IN2* W N . Эта операция выполняется в состоянии ко нечного автомата MULT_S1, при этом блоки DSP48A1 не задействованы. За тем конечный автомат переходит в состояние MULT_DONE, и на выходе модуля умножения появляются два 18 битных комплексных числа, т.е. ре зультат выполнения основной опера ции БПФ – «бабочки». О ТЛАДКА И ТЕСТИРОВАНИЕ МОДУЛЯ БПФ Отладку проекта можно разделить на три части – проверки правильности передачи данных внутри блоков, соот ветствия временным диаграммам и правильности выполнения математи ческих операций. Предварительная от ладка временных параметров произ водилась в программе ModelSim, затем в различные части системы на крис талле встраивались блоки ChipScope для проверки данных в реальном масштабе времени. Для использования «встроенного осциллографа» Chip Scope необходимо в тестируемый мо дуль вставить два IP модуля из библио теки PlanAhead. В модуле контроллера chipscope_icon не требуется задавать никаких параметров – ширина шины обмена данными с контролируемым блоком принимается по умолчанию равной 36 бит. Во втором IP модуле chipscope_ila задаётся необходимое число контролируемых сигналов, включая триггеры, от которых начи нается отсчёт времени. Например, необходимо посмотреть, какие входные и выходные сигналы присутствуют в блоке умножения на стадии основного автомата БПФ FFT_STAGE1. Для этого генерируется блок chipscope_ila , который содержит все интересующие нас сигналы. За тем запускается программа ChipScope (входящая в состав среды PlanAhead), и триггером принимается состоя ние основного конечного автомата ( fft_fsm_state в файле fft_top.v ). Значе ние триггера устанавливается равным 4'b0001, соответствующим состоянию конечного автомата FFT_STAGE1. После перехода конечного автомата в состоя ние FFT_STAGE1 IP модуль chipscope_ila начинает записывать все интересую щие сигналы во внутреннюю память ПЛИСна каждомфронте синхросигна ла. Затем сохранённые данные пере даются управляющей программе на компьютер и отображаются в графи ческом или текстовом виде. Направле ниефронта задаётся при генерации IP модуля; синхросигнал определяется на этапе компиляции проекта, в данном случае он совпадает с тактовой часто тоймодуля БПФ. Заметим, что для рабо 65 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2012 b a c d p X +/– +/– Рис. 5. Упрощённая схема блока DSP48A1 X – 18 18 48 48 im2 im1 X + 18 18 48 48 re2 re1 X + 18 18 48 48 re2 im1 X + 18 18 48 48 im2 re1 im_o re_o mult2 mult3 mult4 mult1 Рис. 6. Блок схема умножителя комплексных чисел MULT_ IDLE start_i MULT_ M1 MULT_ P1 MULT_ A1 MULT_ S1 MULT_ DONE Рис. 7. Блок схема конечного автомата модуля умножения ' СТА - ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy