Практическая Работа С Плис, Входящими В Комплект Redd. Осваиваем Dma Для Шины Авалон-Ст И Переключение Между Шинами Авалон-Мм

Мы продолжаем двигаться к созданию реальных устройств на базе ПЛИС комплекса Redd. Для другого проекта All-Hardware мне нужен простой логический анализатор, поэтому мы будем двигаться в этом направлении.

Если повезет, мы доберемся до анализатора USB-шины (но это еще в далеком будущем).

Сердце любого анализатора — это оперативная память и блок, который сначала закачивает в нее данные, а затем удаляет их.

Сегодня мы как раз его спроектируем.

Для этого освоим блок DMA. Вообще DMA — моя любимая тема.

Я даже сделал большой статья о DMA в некоторых ARM-контроллерах .

Из той статьи понятно, что DMA забирает такты из шины.

В текущей статье мы рассмотрим, как обстоят дела в случае с процессорной системой на базе FPGA.

Практическая работа с ПЛИС, входящими в комплект Redd. Осваиваем DMA для шины Авалон-СТ и переключение между шинами Авалон-ММ

Предыдущие статьи серии

  1. Разработка простейшей «прошивки» для ПЛИС, установленной в Redd, и отладка на примере теста памяти.

  2. Разработка простейшей «прошивки» для ПЛИС, установленной в Redd. Часть 2. Программный код.
  3. Разработка собственного ядра для интеграции в процессорную систему на базе FPGA.
  4. Разработка программ для центрального процессора Redd на примере доступа FPGA.
  5. Первые эксперименты по использованию потокового протокола на примере связи ЦП и процессора в ПЛИС комплекса Redd.
  6. Весёлый Квартусель, или как процессор дошёл до такой жизни.

  7. Методы оптимизации кода для Redd. Часть 1. Влияние на кэш.

  8. Методы оптимизации кода для Redd. Часть 2: некэшируемая память и параллелизм шин.

  9. Обширная оптимизация кода: замена тактового генератора для улучшения производительности системы.

  10. Доступ к сложным шинам Redd, реализованным на контроллерах FTDI
  11. Работа с нестандартными шинами комплекса Редд
  12. Практика работы с нестандартными шинами комплекса Редд.
  13. Проброс USB-портов из Windows 10 для удаленной работы
  14. Использование процессорной системы Nios II без процессорного ядра Nios II


Создание оборудования

Начинаем создавать аппаратуру.

Чтобы понять, насколько блок DMA спорен по тактовым частотам, нам потребуется провести точные измерения при высокой нагрузке на шину Avalon-MM (Avalon Memory-Mapped).

Мы готовы выяснил что мост Altera JTAG-to-Avalon-MM не может создать высокую нагрузку на шину.

Поэтому сегодня нам придется добавить в систему процессорное ядро, чтобы оно обращалось к шине на высокой скорости.

Как это делается описано здесь .

Ради оптимальности отключим оба кэша ядра процессора, но создадим по одной сильносвязанной шине, как мы это сделали здесь .



Практическая работа с ПЛИС, входящими в комплект Redd. Осваиваем DMA для шины Авалон-СТ и переключение между шинами Авалон-ММ

Добавим по 8 килобайт памяти программ и памяти данных.

Помним, что память должна быть двухпортовой и иметь адрес в специальном диапазоне (чтобы не прыгала - заблокируем, причины всего этого мы обсуждали здесь ).



Практическая работа с ПЛИС, входящими в комплект Redd. Осваиваем DMA для шины Авалон-СТ и переключение между шинами Авалон-ММ

Мы уже тысячу раз создавали проект, поэтому в самом процессе создания нет ничего особенно интересного (во всяком случае, все этапы создания описаны здесь ).

База готова.

Теперь нам нужен источник данных, который мы поместим в память.

Идеальная вещь — это постоянно тикающий таймер.

Если в течение какого-то такта блок DMA не смог обработать данные, то мы это сразу увидим по отсутствующему значению.

Ну то есть если в памяти есть значения 1234 и 1236, то на такте при выходе таймера 1235 блок DMA не передавал данные.

Создать файл Таймер_ST.sv с помощью этого простого счетчика:

   

module Timer_ST ( input clk, input reset,

Теги: #Программирование микроконтроллеров #Компьютерное оборудование #Системное программирование #FPGA #pls #FPGA #pls #DMA #Redd #Авалон-ММ.

Avalon-ST #закачивает потоковые данные в память

Вместе с данным постом часто просматривают: