FPGA, первые шаги

11

Ну, это продолжение моего вопроса о ПЛИС здесь .

Наконец, я выбрал Digilent Atlys со FPGA Spartan 6, у меня нет опыта работы с FPGA, хотя я проделал определенную работу с микроконтроллерами.

Я провел последние несколько дней, читая таблицы данных FPGA, и я думаю, что было бы неплохо начать с Verilog. Я не смог найти ни одного примера кода, и даже таблицы данных не были новичками.

Я хочу сделать несколько шагов по программированию, симуляции, синтезу сейчас, и это то, что я хочу сделать

  1. Сгенерируйте нечетную частоту, скажем, 54 МГц из FPGA (она работает на тактовой частоте 100 МГц) и направьте ее на один из выводов. Я, вероятно, должен был бы использовать DCM или PLL для этого, но не знаете, с чего начать?

  2. Реализовать какую-нибудь запись чтения I2C из ПЛИС.

То, что я ищу, это справочник, возможно, онлайн или книга, которая дает мне примеры кода и описание каждого из аппаратных компонентов, доступных внутри FPGA, таких как DCM, слайсы, clb и т. Д.

Я полагаю, что это должно привести меня в мир FPGA.

Кевин Бойд
источник

Ответы:

13

Примеры кода

Перейдите к OpenCores, и вы найдете десятки проектов с открытым исходным кодом. Многие написаны на Verilog и охватывают весь спектр от устройств ввода-вывода до процессоров.

Также не забывайте о многих заметках по применению, доступных в Xilinx. Они очень помогают со своими устройствами.

Дизайн Flow

Подберите одну или две книги о процессе проектирования, чтобы получить представление о шагах, связанных с проектированием ПЛИС. В итоге они будут включать:

  1. Дизайн записи - в вашем случае, Verilog.
  2. Функциональное моделирование - использование различных инструментов.
  3. Синтез - в вашем случае, используя инструменты Xilinx ISE.
  4. Симуляция - для проверки вашей конструкции после синтеза, потому что некоторые аспекты Verilog не являются синтезируемыми.
  5. Place & Route - с использованием инструментов Xilinx ISE.
  6. Реализация - загрузка дизайна на ПЛИС.
  7. Тестирование.

Компоненты ПЛИС

Что касается использования компонентов ПЛИС, есть разные способы их использования. Но, предполагая, что вы используете элемент дизайна Verilog, вы можете сделать выводы или создать экземпляры различных компонентов.

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

Делая q <= a + bили q = a + bвы можете сделать вывод сумматора. Оба будут выводить сумматор, но есть разница в том, что вы используете блокирующий / неблокирующий синтаксис.

Как правило, создание экземпляра включает вызов точного компонента библиотеки в коде. Некоторые компоненты просто не могут быть легко выведены в коде, такие как DCM. Вы можете использовать инструменты и примеры ISE, чтобы узнать больше об этом.

Фактический список самих компонентов представлен Xilinx в Руководстве по библиотекам .

Protip

Лучший способ научиться этому - это поэкспериментировать с короткими фрагментами кода и запустить их через синтез ISE, чтобы увидеть, что он выплевывает. Есть также много примеров в самом наборе инструментов ISE.

sybreon
источник
5

Ваши абсолютные ссылки будут руководства пользователя Spartan 6 . Например, руководство по ресурсам синхронизации (UG382) описывает, как настроить DCM. Для примеров того, как выглядит настоящий код, у ISE есть база данных о них. Откройте Language Templates (лампочка на панели инструментов), затем посмотрите на язык (VHDL или Verilog) -> Примитивы устройства -> Семейство чипов (Spartan-6) -> Компоненты часов.

Подробные сведения о вашей плате доступны в Digilent, в частности, вам понадобится UCF (который называет все входы / выходы) и справочное руководство (которое объясняет периферийные схемы).

Общая структура вашего языка, включая способ создания компонента, вероятно, лучше подобрана из книг и примеров. Я не использовал Verilog, поэтому у меня нет конкретных предложений. Тем не менее, шаблоны включают также фрагменты различных общих конструкций.

Ян Вернье
источник
Вы специализируетесь на VHDL? Что касается UCF, почему это важно для работы с платой Digilent?
Кевин Бойд
1
Я не специализируюсь как таковой - просто не изучал Верилог. UCF - это файл, который описывает, к каким контактам подключаются ваши порты, а также требования к тактированию. Без этого пины назначаются случайным образом, что не соответствует существующей доске.
Янн Вернье
Я понял часть назначения контактов, как насчет требований к синхронизации?
Кевин Бойд
1
Временные ограничения охватывают такие вещи, как тактовая частота, время установки и время удержания. Вы по-прежнему будете получать информацию при анализе времени, но указание требований в файле ограничений позволяет инструментам определять, когда они выходят из строя, и, возможно, изо всех сил стараться удовлетворить ваши потребности, когда он находится на границе.
Янн Вернье
1

Для часов вы используете мегакор DLL / PLL.

Брайан Карлтон
источник
Спартанец 6 имеет DCM и PLL, еще не найден DLL. После поиска на форумах я обнаружил, что в Xilinx есть инструмент Core Generator, который можно настроить для генерации тактовых ресурсов.
Кевин Бойд