Материал: ВКР_Соболев

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Для работы с несколькими блоками данных, как входных, так и выходных, можно объявлять несколько подмодулей eth_read или eth_write. В начале тестирования первым выполняется модуль eth_service, после окончания его работы в зависимости от условий тестирования запускаются модули eth_read и eth_write. Тестирование считается завершенным, когда завершает работу модуль eth_write.

Для моделирования тестирования порогового устройства выбраны следующие входные данные:

а) input_data: [1, 4, 9, 2, 6, 3, 7, 8, 5], подается с имитации блока памяти через блок eth_read

б) ROM_coefficient: 2

в) input_to_compare: 5

г) параметр rank: 1

При таких входных данных на выходе final_output ожидается значение 1.

Результат моделирования п редставлен на рисунке 2.10.

Рисунок 2.10 – Результат моделирования для примера 2.

Из результатов моделирования видно, что eth_read и eth_write отработали верно, первый передал нужные данные в пороговое устройство, eth_write считал правильное значение выхода устройства и записал его по нужному адресу.

2.4 Cинтез fpga-модулей

Модули для FPGA успешно синтезировались с помощью Quartus Prime Lite. Результаты синтеза в форме фрагментов RTL-диаграмм представлены на рисунках 2.11 – 2.13.

Рисунок 2.11 – Фрагмент RTL-диаграммы модуля eth_service.

Рисунок 2.12 – Фрагмент RTL-диаграммы модуля eth_read.

Рисунок 2.13 – Фрагмент RTL-диаграммы модуля eth_write.

Полные RTL-диаграммы модулей приведены в приложении В.

2.5 Эксперимент на макетной плате

После успешного синтеза модулей был произведен эксперимент на макетной плате DE1-SoC фирмы Terasic. В качестве тестируемого модуля выступило пороговое устройство.

2.5.1 Ход эксперимента

1. С помощью системы проектирования Quartus Prime прошивается FPGA. (рисунок 2.14)

Рисунок 2.14 – Прошивка FPGA

2. С помощью утилиты PuTTY открывается доступ к терминалу системы Linux, запущенной в HPS-части SoC и настраивается IP-адрес платы. (рисунок 2.15)

Рисунок 2.15 – Настройка IP-адреса платы

3. С помощью утилиты scp скомпилированный исполнительный файл сервера передается в плату. (рисунок 2.16)

Рисунок 2.16 – Передача файла сервера в плату

4. Запускается сервер, сервер начинает ожидать служебную датаграмму. (рисунок 2.17)

Рисунок 2.17 – Запущенный сервер

5. На стороне PC запускается простой клиент, который отправляет служебную датаграмму и датаграмму данных серверу на ARM. (рисунок 2.18)

Рисунок 2.18 – Запуск клиента, отправка датаграмм

6. Сервер принял датаграммы, можно запускать обработку на FPGA. (рисунок 2.19)

Рисунок 2.19 – Принятые сервером датаграммы

7. Обработка на FPGA завершена, появились выходные данные в соответствующем блоке памяти, смотрим память на сервере. (рисунок 2.20)

Рисунок 2.20 – Состояние блоков памяти

8. Сервер увидел выходные данные, формируем и отправляем датаграмму с результатами клиенту. (рисунок 2.21)

Рисунок 2.21 – Отправка датаграммы с результатами клиенту

9. Клиент получил датаграмму с выходными данными, работа модуля успешно завершена. (рисунок 2.22)

Рисунок 2.22 – Выходные данные на клиенте

2.5.2 Результаты эксперимента

В результате проведения эксперимента протестирована работа одного из модулей тракта первичной обработки – порогового устройства. Обе составные части модуля (сервер на ARM и модули на FPGA) отработали успешно, клиент успешно получил результаты тестирования. В качестве клиентского приложения может выступать любое приложение, формирующее UDP-датаграммы нужного формата.

3 Разработка модуля сопряжения с интерфейсом link

Данная глава посвящена разработке модуля сопряжения эмулятора комплексной системы радара с интерфейсом Link.

3.1 Описание функционирования модуля сопряжения с Link

Модуль сопряжения с Link построен на двух шаблонах – передатчике и приемнике. Приемник и передатчик работают в 4-битном режиме, передавая данные на обоих фронтах тактового сигнала. Данные представлены в виде блоков квадрослов, слова в квадрословах 32-разрядные, всего квадрослово содержит 128 бит информации. Для того, чтобы принять, обработать и передать информацию обратно в DSP, на стороне FPGA требуется создать устройства обработки информации с приемника и передачи обработанной информации в передатчик.

Алгоритм работы устройства обработки информации с приемника:

1. Обнаружить появление первого слова квадрослова на приемнике.

2. Записать каждое слово квадрослова в буфер, из которого данные отправляются в обработку.

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

4. Ожидать новый пакет квадрослов.

Алгоритм работы устройства для передачи обработанной информации передатчику:

1. Если передатчик готов принять данные для передачи, передать обработанные слова квадрослова в передатчик.

2. В случае неготовности передатчика выполнять дальнейшую передачу данных приостановить передачу очередного квадрослова и ожидать готовности передатчика.

3. В случае обнаружения последнего обработанного слова закончить передачу и перейти в режим ожидания новых обработанных данных.

Рассмотрим пример простой обработки данных – инверсию каждого принятого слова квадрослова и дальнейшую передачу инвертированных значений в DSP. В этом случае обработка принятых данных происходит практически мгновенно, поэтому после приема и обработки каждого квадрослова обработанные данные передаются в передатчик.

3.2 Описание программы

В программе использованы модули приемника и передатчика, а также разработаны устройства обработки данных со стороны FPGA. Схематическое изображение модулей приемника и передатчика представлено на рисунке 3.1.

Рисунок 3.1 – Модули приемника и передатчика Link-порта

3.2.1 Модуль приемника Link-порта

Заголовок модуля приемника Link-порта представлен в листинге 3.1.

Листинг 3.1 – Объявление и порты модуля приемника

Модуль параметризуется двумя значениями: decimation_coeff(отношение входной и выходной частот домена, возможные значения: 1 и 2) и ack_timeout(таймаут приема).

DI, CLKI, ACKO и NBCMPI - интерфейсные сигналы Link-порта.

Модуль также имеет локальные сигналы для использования в FPGA, первый из которых – входной сигнал разрешения приема oten, на верхнем уровне которого устанавливается сигнал ACKO Link-порта, при подаче нижнего уровня сигнал ACKO сбрасывается в промежутке от 1-го до 3-го слова в квадрослове, при этом прием квадрослова доводится до конца. Также модуль имеет выходы ostb(признак принятия очередного слова данных), ostr(признак первого слова), oend (признак последнего слова последнего квадрослова), позволяющие отслеживать процесс приема данных. Принятые с порта данные подаются на выходную 32-разрядную шину odat. Выходной сигнал sync_ok является признаком получения полного пакета, от первого слова до сигнала NBCMPI с таймаутом после, после приема такого пакета выставляется верхний уровень сигнала. Сигнал frame_error выставляется, если обнаружен таймаут внутри квадрослова. Приемник тактируется сигналом clk, который выставляется равным частоте Link-порта, а также имеет вход асинхронного сброса aclr.

3.2.2 Модуль передатчика Link-порта

Заголовок модуля передатчика Link-порта представлен в листинге 3.2.

Листинг 3.2 – Объявление и порты модуля передатчика

Модуль имеет три параметра: DEVICE(имя устройства, в которое будет загружаться модуль), FIFO_DEPTH(объем внутреннего FIFO-буфера) и FIFO_AFULL_THR(порог для формирования сигнала о том, что буфер практически заполнен).

DO, CLKO, ACKI и NBCMPO - интерфейсные сигналы Link-порта.

Как и приемник, передатчик имеет локальные сигналы. Входной сигнал tvere – признак необходимости проверки передаваемых данных, выходной сигнал nbsy – признак наличия данных во входном FIFO-буфере, выходной сигнал iten – признак готовности к передаче. Передаваемые данные подаются на 32-разрядную входную шину idat и сопровождаются сигналом istb, после передачи последнего слова вырабатывается сигнал iend. Модуль имеет сигнал асинхронного сброса aclr и тактируется четырьмя тактовыми сигналами: iclk (частота входных данных), clk (частота Link Port), clk270 (iclk, сдвинутый по фазе на 270º) и clk4 (iclk, разделенный на 4). Для формирования нужных частот используется модуль PLL, поставляемый со средством разработки Quartus компании Intel.

3.2.3 Устройства обработки данных

Для осуществления задачи приема, обработки, в данном случае инвертирования, и передачи, были разработаны поведенческие описания конечных автоматов для обработки данных с приемника и передачи результатов обработки в передатчик. Схематические изображения автоматов представлены на рисунке 3.2.

Источник: https://studfile.net/preview/16673049/