?

Log in

No account? Create an account
Портирование MIPSfpga на плату Terasic DE1 с ПЛИС Altera Cyclone II - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Портирование MIPSfpga на плату Terasic DE1 с ПЛИС Altera Cyclone II [Feb. 2nd, 2016|10:32 pm]
Yuri Panchul
Я получил запрос из крупного университета на Ближнем Востоке про использование MIPSfpga на плате Terasic DE1 с ПЛИС Altera Cyclone II. Хотя у меня нет этой платы на руках, я попробовал помочь преподавателю перенести MIPSfpga на эту плату, и я надеюсь, что университет сможет приспособить MIPSfpga для своей учебной программы. Ниже - фрагмент моей переписки с преподавателем:


Prof. XXX:

I was able to comfortably fit MIPSfpga into DE1 using my variation of MIPSfpga Getting Started / Fundamentals package. I can show you how you can reproduce my result and then how you can correct your own port of MIPSfpga Getting Started by borrowing some of the components I have created.

First, here is how to reproduce my result:



  1. Unzip MIPSfpga Getting Started to C:\MIPSfpga

  2. Get mipsfpgfa-plus into C:\github\mipsfpga-plus

  3. cd C:\github\mipsfpga-plus\boards\de1

  4. make_project.bat

  5. Run Altera Quartus II version 13.0 sp1

  6. Open project C:\github\mipsfpga-plus\boards\de1\project\de1.qpf

  7. Analyze/Synthesize/Place&Route/Assemble

  8. Open Device / Hardware Setup / ByteBlaster / Set file / ouput_files / de1.sof / Start




You should get the following:

Screenshot 2016-02-02 19.55.38

Note I do not have a DE1 board with me so I did not test running on the board. However I am confident it will run either immediately or after I adjust my clock divider.

Now how to correct your own port of DE1:



  1. First, I noticed that you have two versions of mipsfpga_ahb_const.vh with different sizes for ram and reset_ram. This is OK if you have a proper “set_global_assignment -name SEARCH_PATH” line in your .qsf file. Does Quartus pick the correct .vh file?


  2. I was able to fit the design comfortably by specifying 1KB reset_ram size and 1 KB user ram size. However the boot/reset sequence in the original MIPSfpga Getting Started does not fit into 1 KB because it is linked with crt0 from the standard C library. This crt0 code is totally unnecessary because its function is to setup C runtime in “big” operating systems before calling main() and most of it is not applicable for MIPSfpga. By omitting calling crt0 and setting up a stack pointer inside the boot sequence itself, it is possible to shrink the boot sequence to 1KB. You can get it here – https://github.com/MIPSfpga/mipsfpga-plus/blob/master/programs/00_counter/boot.S


  3. Now you may say that 1 KB for user ram is too small. Still, it is enough to do many lab exercises, and if you need more, it is possible to write an interface to the 8 MB SDRAM present on the DE1 board.


  4. Also, if you need more block ram, it is possible to eliminate EJTAG module and load the software program into your synthesized system via UART present in DE1 board.


  5. Options like “set_global_assignment -name ENABLE_ADVANCED_IO_TIMING ON” can bloat the design. If you use it, this would explain why you cannot fit. You can see my constraint file right here - https://github.com/MIPSfpga/mipsfpga-plus/tree/master/boards/de1


  6. I got Fmax 45.97 MHz on my synthesis so you may need to adjust PLL to divide 50 MHz clock.


  7. If necessary, I can sit with you over Skype and make sure you fit the MIPSfpga into DE1 and can run it. My Skype is yuri.panchul.




The whole thing is doable we just need to avoid the pitfalls I outlined (bloating options in constraint file, proper sizes for memories, compact bootloader, clock divider).

terasic_de1

Какие посты вам нравятся больше?

О радостях микроэлектронных технологий
12(66.7%)
О развитии демократии на Украине
4(22.2%)
О сеянцах камелии горной
0(0.0%)
От жизни на Западе Запада
2(11.1%)
Из-за бугра плюете?
0(0.0%)
LinkReply

Comments:
[User Picture]From: panchul
2016-02-03 06:41 pm (UTC)
FPGA используются в частности в некоторых мелкосерийных изделиях, если нужно сделать высокопараллельную обработку какой-то информации, которую не потянет микроконтроллер, DSP или встроенный процессор, и платить фабрике за изготовление специализированной заказной фиксированной микросхемы экономически нецелесообразно для данного приложения.
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-03 08:04 pm (UTC)
Но например обработка этой некоей информации на GPU, скажем на топовых Nvidia. Или речь про непонятно какие встраиваемые решения? Я вашего пиара так и не понял.
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-02-03 08:13 pm (UTC)
GPU - это тоже одна из опций (дорогая), но это тоже фиксированное решение.

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

См. объснение на пальцах в http://www.silicon-russia.com/2015/02/14/first-steps-with-fpga/

При этом я пиарю не FPGA как таковые, а MIPSfpga - использование FPGA как инструмента для обучения студентов проектировать системы на кристалле (SoC) - см. http://www.silicon-russia.com/2016/01/04/mipsfpga-how-to-start/
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-03 09:10 pm (UTC)
> FPGA позволяют реализовать любую логику, которую вы можете реализовать в фиксированной микросхеме, но вам не нужно платить миллион долларов..

Но чем за это все-таки придется платить? Это все риторические вопросы, но тем не менее они немного поясняют ситуацию, и тут думаю не помешают. Да, я помню тот же биткойн и просчет хешей кажется на видеокартах AMD, а потом решения именно на базе FPGA, которое оказалось эффективнее. Но оно не умело делать ничего иного! Т. е. вопрос: код на каком-т ЯП на проце общего назначения против FPGA?
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-02-04 10:20 pm (UTC)
Разумеется, у FPGA есть куча недостатков: с теми же дизайнами у них ниже тактовая частота, чем у ASIC (в несколько раз), выше энергопотребление, выше цена за каждый чип. Пользователи FPGA и ASIC высчитывают баланс - если нужно 100,000 специализированных микросхем, лучше использовать ASIC, так как там миллион долларов можно разложить на тираж, если нужно 10 устройств и существующие чипы не удовлетворяют - может быть лучше FPGA.

См. учебник Harris & Harris, страницу 1485 A.9 Экономика

http://habrahabr.ru/post/259505/
(Reply) (Parent) (Thread)
[User Picture]From: Алексей Романов
2016-02-05 06:46 am (UTC)
Еще не надо забывать про time2market. В современном мире, где правит метод "тяп-ляп и в продакшн", часто важнее быстро выдать продукт на рынок иметь возможность исправлять в нем ошибки, высылая клиенту патчи по интернету, чем иметь низкую стоимость отдельного чипа. Я попромышленным ПК и автоматике вижу, что очень многие применяют ПЛИС в серийных устройствах. Опять же, делая асик,в него пытаются запихнуть все, что может пригодится на всеслучаи жизни, и на одно поколение устройств вперед. А в ПЛИС можно изначально класть только базовый функционал, нужно будет что-то дописать, всегда можно будет добавить.
(Reply) (Parent) (Thread)
[User Picture]From: andrey_yurin
2016-02-04 06:10 am (UTC)
>обработка этой некоей информации на GPU, скажем на топовых Nvidia
А как вы себе представляете GPU в embedded-системе? Давайте я вам пример приведу.

Вот надысь довелось мне заниматься астрономической тематикой. А именно. Вот есть камера, которая смотрит в небо. И парни решили намутить с помощью этой камеры поиск астеройдов. Смысл в чём. У современных CMOS-сенсоров собственный шум довольно слабый. Понятно, что астеройд невооружённым глазом заметить в небе невозможно. Значит что? Ну телескоп с большим зрачком - это само собой. Но нужна экспозиция длинная. Очень длинная. Когда за звёздами смотрят - там всё понятно. Телескопом ведут вслед за звездой. А вот с астеройдом такой истории не получится. А посему складывают вместе кучу кадров. Шумы и сигнал складываются по разному. Поэтому такой метод обработки позволяет в каком-то смысле поиметь аналог длинной экспозиции, но без поворота телескопа.
Причём тут GPU. А притом, что при поиске объектов вектор скорости астеройда неизвестен. Нужно складывать кадры по всем направлениям (тоесть с произвольными сдвигами). А это нужно делать кучу операций сложения. А учитывая, что точность там субпиксельная, то сначала это преобразуется помощью преобразования Фурье, а потом сложение делается уже в этом массиве путём сдвига фазы (оно получается эквивалентно сдвигу изображения). Так вот у парней установка - матрица размером 512х512 и компьютер с парой GPU. А программировать GPU от той же Nvidia - это будьте любезны ихнюю библиотеку пользовать. Ну и потребление всей системы - сотни ватт.

Причём тут ПЛИС? Мне довелось схожую задачу делать, но для матрицы формата 5120х3840. ТОлько я поступил гораздо хитрее. Я следил не за астеройдами, а за звёздами, а потому вектор скорости мне был заранее известен. Поэтому кучу вычислений я банально не делаю. Но смысл тот же - изображение, БПФ, сложение, поиск объектов. Так вот в качестве числодробилки я как раз ПЛИС и пользовал. Безо всяких операционок, закрытых библиотек и тому подобного. Феничка всей поделки - использование памяти SRAM с произвольным доступом. Когда изображение обрабатываешь - там обычно соседи пикселя анализируются. На DDR памяти делать это плохо. А на SRAM самое оно. Плюс это сразу вписано в заданную конструкцию и жор мощности - десять ватт.
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-04 04:26 pm (UTC)
А с хрена ли вы проигнорировали
> Или речь про непонятно какие встраиваемые решения?

"Безо всяких операционок, закрытых библиотек и тому подобного." Точно, нулевая расширяемость.
(Reply) (Parent) (Thread)
[User Picture]From: andrey_yurin
2016-02-04 04:53 pm (UTC)
А что вы, вообще, от FPGA ждёте? Какие "приложения" вас заинтересуют? Массовые вещи типа просмотра порнухи или генератора комментов сгодились бы? Я вам привёл одну из реализаций с которой сталкивался сам. Или вам ссылок накидать на конторы, которые IP ядрами занимаются? Хотя, впрочем, ежели у вас изначальная позиция: "FPGA бесполезная фигня" - то не смею вас разубеждать в этом.
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-04 10:01 pm (UTC)
Ничего хорошего. Как ваша железка общается с миром? Раньше паяли савецким паяльником 60вт, нынче FPGA.. В своей нише решение актуально,но Панчул все равно слегка безумен))
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-02-04 10:10 pm (UTC)

Зачем Intel купил производителя FPGA Altera за $16.7 миллиардов

Вы не могли бы мне сказать: если FPGA "савецкий паяльник", то зачем Intel в прошлом году купил производителя FPGA, компанию Altera за $16.7 миллиардов долларов? Это ведь не копеечная сумма, не правда ли?

https://en.wikipedia.org/wiki/Altera

Altera and Intel announced on June 1, 2015 that they have agreed that Intel would acquire Altera in an all-cash transaction valued at approximately $16.7 billion
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-04 10:52 pm (UTC)

Re: Зачем Intel купил производителя FPGA Altera за $16.7 миллиардо

Альтеру купили? Упс, не знал. Но я обыватель, мне можно задавать глупые вопросы)) Просто имел дело с аналоговыми системами раньше, оно до сих пор летает в некоторых армейских штуках. Вот и не нравитцо.. прастите пью))
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-02-04 11:01 pm (UTC)

Re: Зачем Intel купил производителя FPGA Altera за $16.7 миллиардо

При чем тут аналоговые системы? FPGA - цифровые.
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-04 11:15 pm (UTC)

Re: Зачем Intel купил производителя FPGA Altera за $16.7 миллиардо

У меня в детстве в качестве игрушки была плата наведения от некоей ракеты. Круглая такая, с дыркой :) Я просто провел некую аналогию.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: andrey_yurin
2016-02-05 07:45 am (UTC)
> Как ваша железка общается с миром?
Вам перечислить все возможные интерфейсы, или достаточно ограничиться распространёнными типа PСI-e? Хотя нет. Лучше на правах комментов вы мне расскажите как в GPU втащить данные от какой-нибудь CMOS-матрицы. А. Понял. С помощью Frame Grabber из магазина. Ну да ну да. Я вам больше скажу. Вот на те же DSP я смотрел уже не раз. Ибо те же TI предлагают у себя на кристалле столько "фарша" за пару десятков баксов, что ой. Но вот только CMOS-матрицу напрямую к DSP не подключить. У неё по выходу свой интерфейс, которого нет в аппаратном блоке DSP. А потому тут FPGA и только FPGA. Ну и до кучи. Вот взяли вы, к примеру, TI DSP. А у него H.264 кодек только с Full-HD работает 1920х1080. И всё. Хоть расшибись. А заказчик - гад такой - хочет больше. И что делать? А ещё заказчик имеет склонности нездоровые к нестандартным решениям. Причём эти нестандартные решения зачастую преобладают над решениями стандартными. Это когда, например, линия связи была проложена лет 15 тому назад, а использовать её очень хочется. А стандарт типа IEEE недвусмысленно говорит, что нельзя. Послать всех в зад? Порой очень хочется, но тогда можно вообще забить на работу и ехать в деревню коров пасти. И опять таки тут помимо FPGA альтернатив никаких нет.
(Reply) (Parent) (Thread)