FPGA, перші кроки


11

Ну це продовження мого питання про FPGA тут .

Нарешті я вибрав Digilent Atlys з Spartan 6 FPGA, я не маю жодного попереднього досвіду роботи FPGA, хоча я провів певну роботу з мікроконтролерами.

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

Я хочу зараз попрацювати над програмуванням, моделюванням, синтезом, і це те, що я хочу зробити

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

  2. Реалізація якихось записів читання I2C з FPGA.

Що я шукаю - це посилання, можливо, онлайн-книга чи книга, яка дає мені приклади коду та опис кожного з апаратних компонентів, наявних у FPGA, таких як DCM, фрагменти, збитки тощо.

Я думаю, що це повинно почати мене починати у світ FPGA.

Відповіді:


13

Приклади коду

Перейдіть на OpenCores, і ви знайдете десятки проектів з відкритим кодом. У Verilog багато написано і охоплює гаму від пристроїв вводу / виводу до процесорів.

Крім того, не забувайте про безліч приміток щодо застосування, доступних від Xilinx. Вони дуже корисні у власних пристроях.

Потік дизайну

Візьміть книгу-другу про проектний потік, щоб ви отримали огляд кроків, пов'язаних із розробкою FPGA. Підсумовуючи, вони включатимуть:

  1. Запис дизайну - у вашому випадку Verilog.
  2. Функціональне моделювання - за допомогою різних інструментів.
  3. Синтез - у вашому випадку, використовуючи інструменти ISE Xilinx.
  4. Моделювання - для перевірки вашого дизайну після синтезу, оскільки деякі аспекти Verilog не можна синтезувати.
  5. Місце та маршрут - за допомогою інструментів Xilinx ISE.
  6. Реалізація - завантаження дизайну на FPGA.
  7. Тестування.

Компоненти FPGA

Що стосується використання компонентів FPGA, то існують різні способи їх використання. Але якщо припустити, що ви використовуєте запис дизайну Verilog, ви можете зробити висновок або інстанціювати різні компоненти.

Як правило, висновок передбачає отримання інструменту синтезу для вибору найкращих компонентів для використання на основі потрібної вам функції. Найкращим прикладом цього було б спроектувати суматор.

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

Моменталізація, як правило, включає виклик точного компонента бібліотеки в код. Деякі компоненти просто не можуть бути легко виведені в коді - наприклад, DCM. Ви можете скористатися інструментами та прикладами ISE, щоб дізнатися більше про це.

Фактичний список самих компонентів надає Xilinx у Посібнику з бібліотек .

Пропіт

Найкращий спосіб дізнатися це - насправді експериментувати з короткими бітами коду та запускати їх через синтез ISE, щоб побачити, що він випливає. Прикладів є і в самому наборі інструментів ISE.


5

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

Деталі, характерні для вашої плати, доступні у Digilent, зокрема, вам потрібно UCF (який називає всі IO) та посібник з посилання (який пояснює периферійну схему).

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


Ви спеціалізуєтесь на VHDL? Що стосується UCF, чому було б важливо працювати з платою Digilent?
Кевін Бойд

1
Я не спеціалізуюся як такий - просто не вивчив Verilog. UCF - це файл, який описує, до яких штифтів підключаються ваші порти, а також вимоги до синхронізації. Без нього штифти призначаються випадковим чином, які не відповідають існуючій дошці.
Янна Верньє

Я зрозумів частину присвоєння штифтів, що стосується вимог годинника?
Кевін Бойд

1
Обмеження в часі охоплюють такі речі, як тактова частота, час установки та час утримування. Ви все одно отримаєте інформацію під час аналізу часу, але конкретизуючи вимоги у файлі обмежень, інструменти дозволяють виявити, коли вони не спрацьовують, і, можливо, намагатимуться сильніше задовольнити ваші потреби, коли це є кордоном.
Янна Верньє

1

Для годинника ви використовуєте мегакорректор DLL / PLL.


У Spartan 6 є DCM та PLL, ще не знайдено DLL. Після пошуку форумів я виявив, що Xilinx має інструмент під назвою Core Generator, який можна налаштувати для генерації ресурсів годин.
Кевін Бойд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.