Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 04.11.19 21:14
Оценка: 17 (8)
Привет всем,

Где-то с месяц назад я обещал здесь сделать в KiCAD простую платку для Spartan-7 FPGA, которую было бы можно собрать новичкам, а также использовать схему и разводку как основу для своих плат.

Сначала я хотел сделать простейшую "мигалку для LED", но потом подумал, что эта платка получится довольно бесполезной, потому решил добавить чип памяти DDR2. DDR2 (а не 3) выбрал потому, что так можно съэкономить один DC-DC конвертер, потому что она питается 1.8 В, и эта линия у меня и так есть на плате. Просто мне хотелось бы, чтобы платку можно использовать для чего-то помимо одноразовой мигалки диодами, а плата с памятью ИМХО куда более полезна. Разводку делаю под 2 гигабитный чип (128Мх16, то есть 256 Мбайт), но можно поставить и меньший объём, если захочется. Ещё есть мысль добавить коннектор HDMI OUT, чтобы можно было показывать чё-нить — он очень прост в реализации, и вполне в состоянии вывести 720p@60Hz, и, поднапрягжись, даже 1080p@60Hz. Остальные пины думаю вывести на обычные 2.54 мм header'ы, чтобы к ним можно было подключать всякие внешние штуки. В настоящий момент в схеме 124 детали, из них 103 — это конденсаторы и резисторы, а остальные — главные компоненты (ПЛИС, флеш-память, память DDR2, 3-канальный DC-DC конвертер, референс для встроенного АЦП, генератор тактовых сигналов), плюс по мелочи всякие LED, транзисторы, коннекторы и т.д.

В настоящий момент схема в целом готова (только HDMI ещё не добавил, и также не вывел все свободные пины на обычные 2.54 мм header'ы), также сделал разводку DDR2 (как самую сложную часть). В ближайшее время доделаю всё остальное, после чего закажу плату и проверю. Поскольку возможности KiCAD весьма ограничены по сравнению с Orcad Pro, которым я обычно пользуюсь, а те, что есть, подглючивают местами, я делал length matching для дорожек DDR2 полностью вручную. Так что мне и самому интересно, "заведётся" ли интерфейс или нет

Проект сделан в KiCAD версии 5.1.4 (текущая на момент написания этого поста). Библиотеку можно взять тут: https://github.com/asmi84/kicad-library сам проект тут: https://github.com/asmi84/kicad-projects (там пока только один проект). Плата и библиотечные символы ссылаются на 3D модели, которые есть в третьем репо, но он приватный из-за того, что лицензии на некоторые модели запрещают публичную публикацию.

Как я уже сказал, работа над проектом всё ещё ведётся, потому если вдруг у кого-то есть какие-то предложения/пожелания, или вопросы — высказывайте. Есть ещё где-то 30 свободных пинов, так что можно добавить ещё какую-нить 3.3 В периферию После того, как закончу с разводкой, я планирую собрать плату и проверить, будет ли всё работать или нет — потому желающим собрать себе такую же советую подождать немного При сборке можно не ставить память и прочие опциональные детали (я после завершения проекта выложу таблицу, где укажу, какие детали обязательны, а какие нет). Думаю, что реально уложиться в $100 за платы + детали для сборки одного экземпляра (правда, ещё нужен будет программатор, но его можно купить на алиэкспрессе, если совсем жаба душит — я использую вот этот от Digilent), но посмотрим, как оно выйдет в финале
[КУ] оккупировала армия.
Re: Делаем плату для FPGA с нуля для новичков
От: alex_public  
Дата: 05.11.19 13:13
Оценка:
Привет!

Я пока проектик не смотрел (времени особо нет сейчас). Хочу просто поинтересоваться пока: во сколько слоёв разводка и по каким нормам?
Re[2]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 05.11.19 14:53
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Я пока проектик не смотрел (времени особо нет сейчас). Хочу просто поинтересоваться пока: во сколько слоёв разводка и по каким нормам?

4 слоя, 0.1/0.1 мм дорожки, 0.2/0.45 мм виа. Делаю под процесс JLCPCB, у них самые дешёвые четырёхслойки на рынке ($29 за 10 штук размером до 10х10 см). Полная спецификация тут, структура платы (stackup) JLC2313.
[КУ] оккупировала армия.
Re: Делаем плату для FPGA с нуля для новичков
От: Iso12  
Дата: 23.11.19 11:28
Оценка:
Здравствуйте, koandrew, Вы писали:


K>Где-то с месяц назад я обещал здесь сделать в KiCAD простую платку для Spartan-7 FPGA, которую было бы можно собрать новичкам, а также использовать схему и разводку как основу для своих плат.


Очень интересная идея.
Из вопросов:
1) Как плата будет запитываться? USB или через блок питания?
2) Какой кварц планируете ставить?
2) Заливка софта на плату как планируете ?

Из предложений такие мысли:
1) Пару LED и пару кнопок.
2) Пару PMOD портов для переферии.
3)Можно было бы камеру подключить, через MIPI CSI например эту

Успехов
Re[2]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 23.11.19 14:18
Оценка:
Здравствуйте, Iso12, Вы писали:

I>Очень интересная идея.

I>Из вопросов:
I>1) Как плата будет запитываться? USB или через блок питания?
Любой БП на 12 В.
I>2) Какой кварц планируете ставить?
Я всегда ставлю 100 МГц, т.к. с этой частоты удобно генерировать необходимые частоты для контроллера памяти DDR2 (166.667 МГц, 200 МГц), но вообще можно поставить любой, или даже добавить второй генератор — благо они все имеют стандартизированную распиновку.
I>2) Заливка софта на плату как планируете ?
Я пользуюсь вот этой штукой, она "одевается" прямо на коннектор JTAG. Но можно использовать и стандартный программер Xilinx (вроде как на али полно его клонов за три копейки).

I>Из предложений такие мысли:

I>1) Пару LED и пару кнопок.
На плате уже предусмотрено два RGB LED, а вот про кнопки спасибо что напомнили — я чего-то забыл про них.

I>2) Пару PMOD портов для переферии.

I>3)Можно было бы камеру подключить, через MIPI CSI например эту
У меня осталось 24 свободных пина, и ещё 4 пина в 1.8 вольтовом банке памяти. И я хочу по максимуму оставить их свободными, т.к. идея платы в том, чтобы конечные пользователи смогли легко её модифицировать под свои нужды.
Я посмотрел на схему Zybo — для MIPI нужно 16 пинов, а для PMOD — 8. Потому если я добавлю порт камеры и 1 ПМОД — то пины закончатся
Можно было бы, конечно, выбрать корпус с бОльшим количеством пинов, но тогда нужно будет делать 6-слойную плату, а это существенно дороже текущей четырёхслойки. Опять же, смысл проекта в том, чтобы быть доступным для реализации и модификации новичками, так что такое усложнение ИМХО ни к чему. По этой же причине я отказался от первоначальной своей идеи добавить гигабитный Ethernet.

Если этот проект "зайдёт", то тогда уже можно будет подумать о более сложной плате. Если взять шестислойку, то там откроются широчайшие возможности, т.к. на ней можно будет полностью развести 484-пиновый чип, который даст до 338 IO пинов. Но это будут уже несколько другие деньги — как в смысле цены платы ($100-150 за десяток), так и самих чипов (XC7S50-2FGGA484C стоит $64 и даст 250 user IO, а топовый XC7S100-2FGGA484 c 338 user IO — $120-140 в зависимости от температурной версии). Туда можно будет поставить и более серьёзную систему памяти (например пара 4-гигабитных чипов DDR3 256Mx16 даст 1 Гигабайт памяти при 32-битной шине данных и полосе в 32 * 400 * 2 = 25600 МБит/с), или вообще развести SODIMM-слот для DDR3, который даст ещё вдвое бОльшую полосу пропускания (т.к. у SODIMM 64-битная шина данных).
Ну или взять эквивалентный Artix-7, и там становятся доступны 4 трансивера до 6.6 Гбит/с каждый, на которых можно построить много всяких интересных интерфейсов (например, SATA-III, DislayPort 1.2, PCIE 2.0 x1/x2/x4, USB 3.0). Короче возможностей много
[КУ] оккупировала армия.
Отредактировано 24.11.2019 5:53 koandrew . Предыдущая версия .
Re: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 08.12.19 20:02
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Плата и библиотечные символы ссылаются на 3D модели, которые есть в третьем репо, но он приватный из-за того, что лицензии на некоторые модели запрещают публичную публикацию.


А почему не использовать символы, которые предоставляют бесплатно продавцы? Маузер, например?
Ад пуст, все бесы здесь.
Re: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 08.12.19 21:43
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Сначала я хотел сделать простейшую "мигалку для LED", но потом подумал, что эта платка получится довольно бесполезной, потому решил добавить чип памяти DDR2. DDR2 (а не 3) выбрал потому, что так можно съэкономить один DC-DC конвертер, потому что она питается 1.8 В, и эта линия у меня и так есть на плате. Просто мне хотелось бы, чтобы платку можно использовать для чего-то помимо одноразовой мигалки диодами, а плата с памятью ИМХО куда более полезна.


Кстати, а не проще использовать SRAM?
Ад пуст, все бесы здесь.
Re[2]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 01:10
Оценка: 3 (1)
Здравствуйте, Codealot, Вы писали:

C>Кстати, а не проще использовать SRAM?


Проще, но она очень дорогая для тех объёмов, которые нужны для хранения минимум пары фреймбуферов, и полосы пропускания, нужной для стриминга видео в реальном времени в память (подготовка нового фрейма) и одновременно из памяти (вывод текущего фрейма через HDMI OUT). Один чип DDR2 128Мх16 на частоте 333 МГц обеспечивает пиковую полосу в 333*2*2 = 1332 Мбайт/с и объём в 256 Мбайт при цене в $15 (на али можно найти и дешевле), достичь подобных параметров для SRAM будет просто невозможно в рамках этого проекта. Типовая частота SRAM 100 МГц потому, нужна будет очень широкая шина данных — 96 бит (шесть параллельных чипов в 16 бит каждый) дадут полосу в 100*2*6 = 1200 Мбайт/с. Для такой шины нужно будет намного больше пинов, чем у нас есть, да и разводка такого количества чипов SRAM будет весьма нетривиальной.

Единственный недостаток DDR2 — его контроллер займёт некоторую часть ресурсов FPGA (где-то 10% от чипа S50), но зато он уже есть готовый, и предоставляется производителем забесплатно, т.к. даром Но если какому-то проекту внешняя память не нужна, то и контроллер тоже не нужен, и потому можно свободно использовать все ресурсы FPGA.
[КУ] оккупировала армия.
Re[2]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 02:06
Оценка:
Здравствуйте, Codealot, Вы писали:

C>А почему не использовать символы, которые предоставляют бесплатно продавцы? Маузер, например?


Я уже обжигался на кривых символах, найденных в интернетах, потому с тех пор делаю символы самостоятельно. Плюс когда делаешь символы сам, то можно задать ему внешний вид, какой мне хочется.
[КУ] оккупировала армия.
Re[3]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 02:15
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Я уже обжигался на кривых символах, найденных в интернетах, потому с тех пор делаю символы самостоятельно. Плюс когда делаешь символы сам, то можно задать ему внешний вид, какой мне хочется.


Даже если они предоставлены производителем?
Ад пуст, все бесы здесь.
Re[4]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 02:42
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Даже если они предоставлены производителем?


Во-первых, я сомневаюсь, что символы на маузере/ДК предоставляются производителем — скорее всего они сами их делают, а во-вторых, у меня может быть отличное от авторов мнение относительно того, как они должны выглядеть. В любом случае их создание не занимает много времени, так что я не вижу тут особой экономии времени. Основное время почти всегда уходит на разводку, а не на схему.

Вот сейчас разводка немного застопорилась, ибо я развожу свою первую заказную плату:
  Картинка

Тут более 400 деталей, RF-разводка и толстая МКшка в корпуса BGA 0.8 мм, и габариты платы 20х13 см. Это с большим запасом самая большая плата, которую мне когда-либо приходилось разводить.


Я рассчитываю успеть всё доделать до праздников, чтобы в праздники заняться сборкой и тестированием.
[КУ] оккупировала армия.
Re[5]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 16:14
Оценка:
Здравствуйте, koandrew, Вы писали:

K>В любом случае их создание не занимает много времени, так что я не вижу тут особой экономии времени. Основное время почти всегда уходит на разводку, а не на схему.


Ну пока что многие символы — именно то, чего в проекте не хватает
Ад пуст, все бесы здесь.
Re[6]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 18:02
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Ну пока что многие символы — именно то, чего в проекте не хватает

Каких именно не хватает?
[КУ] оккупировала армия.
Re[7]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 18:33
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Каких именно не хватает?


U1, U2, U4, U5, U7, S1, S2, S3, X1, J2
Возможно, каких-то я еще не заметил.
Ад пуст, все бесы здесь.
Re[8]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 19:50
Оценка:
Здравствуйте, Codealot, Вы писали:

C>U1, U2, U4, U5, U7, S1, S2, S3, X1, J2

C>Возможно, каких-то я еще не заметил.

А ты подключил мою кастомную библиотеку отсюда?
[КУ] оккупировала армия.
Re[9]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 20:37
Оценка:
Здравствуйте, koandrew, Вы писали:

K>А ты подключил мою кастомную библиотеку отсюда?


Подключил, но не уверен что правильно. Ты ведь не написал, как ее подключать
Ад пуст, все бесы здесь.
Re[10]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 21:06
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Подключил, но не уверен что правильно. Ты ведь не написал, как ее подключать


Я же в заглавном посте написал, что её нужно использовать. Насчёт правильности — я настроил проект из предположения, что оба репозитория склонированы в одну папку:
c:\Personal\Src\github>dir /B
kicad-3dmodels
kicad-library
kicad-projects

Третий репозиторий — kicad-3dmodels — пока приватный, т.к. некоторые модели там поставляются с лицензиями, запрещающими публикацию.
По идее схема и плата должны нормально открыться даже без этих сторонних библиотек, т.к. копии используемых символов сохраняются локально в файле кэша проекта.

Вообще, если честно, я рассчитывал, что этим проектом будут пользоваться товарищи, владеющие основными приёмами работы в KiCAD, т.к. проект всё же на порядок сложнее типичных платок с МКшкой, где будет может пару десятков деталей. Тут же на настоящий момент 160 деталей. Делать ещё и туториал по KiCAD я не осилю, т.к. нет столько свободного времени, да и он ощутимо меняется от версии к версии.
[КУ] оккупировала армия.
Отредактировано 09.12.2019 21:09 koandrew . Предыдущая версия .
Re[11]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 22:31
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Я же в заглавном посте написал, что её нужно использовать. Насчёт правильности — я настроил проект из предположения, что оба репозитория склонированы в одну папку:


Я так и сделал. Не работает.
Работает, если прописать зависимость в явном виде, причем с префиксом my_parts а не kicad-library, что было бы логично.

K>Вообще, если честно, я рассчитывал, что этим проектом будут пользоваться товарищи, владеющие основными приёмами работы в KiCAD


А я рассчитывал, что в проекте не будет явных косяков типа сломанных зависимостей
Ад пуст, все бесы здесь.
Отредактировано 09.12.2019 22:33 Codealot . Предыдущая версия .
Re[12]: Делаем плату для FPGA с нуля для новичков
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.12.19 22:42
Оценка:
Здравствуйте, Codealot, Вы писали:

C>А я рассчитывал, что в проекте не будет явных косяков типа сломанных зависимостей


Он должен по идее открыться и так. Ругаться будет, но открыть должен всё равно. То же касается и самой платы.
[КУ] оккупировала армия.
Re[13]: Делаем плату для FPGA с нуля для новичков
От: Codealot Земля  
Дата: 09.12.19 23:01
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Он должен по идее открыться и так. Ругаться будет, но открыть должен всё равно. То же касается и самой платы.


Открывается, но вместо тех символов — квадрат и "???"
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.