Jump to content
    

Lattice бросился вдогонку за альтерой

Всем:

Думаю достаточно клаву греть :)

Если кто-то хочет поучаствовать в разработе подобного проца, то давайте каждый подготовит описание типовых задач, которые он решал/решает в текущее время и выдвинет свои требования к процу. Затем, за несколько on-line встреч (можно в irc), можно обсудить идеи и выработать концепцию проца и стратегии разработки.

А дальше остаеться только определиться с назначением работ по разработке и реализовать, как сам проц, так и софт для разработки на нем.

Здравствуйте, Денис!

Готов участвовать - HDL, "немного" софт :), есть скромные наработки. А софт(асм) имхо на перле лучше писать :)

Share this post


Link to post
Share on other sites

Имхо. Одна из главных проблем софт-процессора: "правильный" многопортовый регистровый файл с асинхронным чтением. Блочная память не допускает асинхронное чтение, распределенная - многопортовую запись. Обход этого ограничения выливается либо в неортогональность системы команд, либо к дополнительным тактам/ступеням/логике(+задержке).

 

вы правы, но даже такая задача решаеться достаточно просто.

1. Честный двухпортовый регистровый файл у ксайлов делаеться на 2-х RAM16D. При этом мы можем читать 4 числа и писать 2 числа. Если не нужен доступ одновременно к 4 м числам, то все еще проще. Нужно использовать 2 однопортовки. Но при таком подходе возникает не возможность отмапливания регистров на внешние устройства.

...

У меня "красиво" не получилось. True dual port у меня реализуется на 2-х RAM16D и дополнительной логике, но тактовая падает вдвое при 8-кратном росте числа LUT --> теряется всякий смысл. На 2-х однопортвках однотактовый true dual port не реализуется, имхо. Можно примеры?

Всем:

Думаю достаточно клаву греть :)

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

У меня проект - многоядерный микроконтроллер, с прицелом на перевод в ASIC, отсюда все требования к ядру. Проверка софт-процессора "на вшивость": чисто программная (т.е. без использования каких-либо аппаратных костылей) реализация цветного текстового контроллера VGA (640*480 @25МГц) - задача управления в чистом виде со строгим таймингом. Для 8 цветов у меня с этим справляются 2 ядра(по 300..400 LUT) @50МГц (starter kit spartan3e).

Share this post


Link to post
Share on other sites

2 Postoroniy_V, Leka, RobFPGA

 

Извеняюсь за паузу, я предоставлю описание своих задач и видение контроллера после выходных.

 

Работы много :)

 

on-line обсудить все можно будет в irc чате или в конференции. Но думаю что более разумно будет создать отдельную тему :)

Share this post


Link to post
Share on other sites

После выходных не получилось :) работы много навалилось.

 

У меня "красиво" не получилось. True dual port у меня реализуется на 2-х RAM16D и дополнительной логике, но тактовая падает вдвое при 8-кратном росте числа LUT --> теряется всякий смысл. На 2-х однопортвках однотактовый true dual port не реализуется, имхо. Можно примеры?

 

да, я реализовывал регистровый файл на 2-х RAM16D + мультиплексоры на выходе, но зная "такую особенность" я реализовывал 3-х стадийный конвейер, отделяя отдельно стадию write back (за счет чего получил простое декодирование условных комманд) поэтому уложился в требования по производительности :)

 

Насчет однопортовых true dual port не возможен, но мы же решаем задачу в ограниченном базисе (FPGA), поэтому можно наложить небольшие ограниченя на используемые командами адреса операндов :biggrin:

 

А можно узнать подробнее про ваше ядро ? интересует система комманд (остальное следует из нее :) )

 

Меня же тема процов интересует с точки зрения управления и заворачивания битстрима в NAL unit (т.е. медленной математики), что бы экономить ресурс ФПГА. А для быстрой математики есть обычная логика + ДСП слайсы в помошь :biggrin:

 

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

Share this post


Link to post
Share on other sites

...

А можно узнать подробнее про ваше ядро ? интересует система комманд (остальное следует из нее :) )

...

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

 

Детали раскрывать не хочу - возможно, будет использоваться в коммерческом проекте. Ядро: spartan3e, ~300LUT, гарвардская архитектура, 36-разрядная инструкция, 18-разрядные данные, 2х-ступенчатый конвейер, 1 такт на инструкцию, 1 клок без фаз, ~100МГц (по данным P&R, пока отлаживаю на 50МГц). До 3х операций на инструкцию: условный переход+арифметика+пересылка (память/устройство <--> РОН). Все управление, пуск-останов, загрузка программы - через com-порт. Те с железом и с ассемблером (низкоуровневым компилятором) - проблем у меня нет (пройденный этап). Но - писать на ассемблере очень не понравилось --> хочу ввести элементы языка высокого уровня.

 

Предлагаю сосредоточится именно на аспекте высокоуровневого программирования,

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

Share this post


Link to post
Share on other sites

Тоже предлагаю выделить в отд.тему:

атачмент -

Идея крайне неплоха

 

Меня интересует (в контексте):

- дешифратор команд (на чем.... или в зависимости от системы команд)

- конвейер (если их сделать несколько но с малым кол-вом ступеней, разнести по задачам

и отдельно объеденить через рег. окно)

(т.е при повышении кол-ва зан.ресурсов увел. конвеер+ меры по повышению быстродействия)

- прерывания (хотя контроллер прерываний в контексте фпга..., скорее уж механизм прерываний и их уровни)

- стр-ра памяти

 

... ой чето я увлекся, короче ждем отд. ветку

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

 

мат. анализ или модель (частично) могу взять на себя

 

к тому же быстродействие зависит не только от частоты но и организации

 

Я думаю так:

1. Модель на уровне HDL (+синтезатор)

 

2. Оптимизация под конкретные плисы(в иделе законстрейтеные)

 

В таком случае возможно выжать все

 

 

>>> to des00 блок-схему бы посмотреть

Share this post


Link to post
Share on other sites

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

помимо уже упомянутого DSPuva16 и заброшенного на этапе АЛУ проекта С5400 (TI) что-нибудь реально есть???

Share this post


Link to post
Share on other sites

это очень интересно

помимо уже упомянутого DSPuva16 и заброшенного на этапе АЛУ проекта С5400 (TI) что-нибудь реально есть???

 

LEON поддерживает SPARC v8e - то есть 32х32 МАС 40бит можно иметь каждый такт при регистровых операндах

если использовать раздельные памяти, то наверно 0.5 МАСа на такт,

 

upd : про 0.5 МАСа я не подумавши написал, дтя свертки векторов надо

загрузить с индексом один отсчет,

второй,

MAC

декрементировать счетчик

перейти

то есть 5 инструкций, при раздельных шинах и использовании делей-слотов 5 тактов

 

у меня получалось для спартана 50МНz, для В4 до 100

 

но так как неоптимизирован "по LUTам" проигрывает по площади блейзу

 

имхо, самое важное, что есть ГЦЦ (то есть С С++ АДА ФОРТРАН и т.п.)

Share this post


Link to post
Share on other sites

Народ! Кто уже использует этот проц, просьба поделиться впечатлениями.

 

А то глядя на среду разработки ispLevel закрадывается сомнение, что проц тоже очень кривой

Share this post


Link to post
Share on other sites

Народ! Кто уже использует этот проц, просьба поделиться впечатлениями.

 

А то глядя на среду разработки ispLevel закрадывается сомнение, что проц тоже очень кривой

 

Процессор как процессор, работает без нареканий. А вот отладчик программистам не нравится. Часто глючит при пошаговой отладке, если есть обращение к аппаратуре (UART, SPI etc.) Если тот же код пробежать по команде Run, то все работает.

Share this post


Link to post
Share on other sites

OpenUP(an 8-bit CISC fpga-processor)- http://www.dte.eis.uva.es/OpenProjects/OpenUP/index.htm - 8-ми битник

dspuva16(A 16-bit fixed-point DSP Processor for FPGA) - http://www.dte.eis.uva.es/OpenProjects/OpenDSP/index.htm

 

сайт изменился :-((

если у кого есть материалы по dspuva16, прошу поделиться - интересно глянуть

 

Заранее спасибо

Share this post


Link to post
Share on other sites

Uuftc

как вариант: посмотреть сайт через кэш гугл: http://209.85.135.104/search?q=cache:sOmna...;cd=4&gl=ru (видимо его удалили совсем недавно)

 

сами исходники: http://www.dte.eis.uva.es/OpenProjects/Ope...00/DSPuva16.zip (но ядро там совсем простенькое)

Share this post


Link to post
Share on other sites

Uuftc

как вариант: посмотреть сайт через кэш гугл: http://209.85.135.104/search?q=cache:sOmna...;cd=4&gl=ru (видимо его удалили совсем недавно)

 

сами исходники: http://www.dte.eis.uva.es/OpenProjects/Ope...00/DSPuva16.zip (но ядро там совсем простенькое)

 

через кеш гугла смотрел. а вот файлов нет ....

Share this post


Link to post
Share on other sites

Процессор как процессор, работает без нареканий. А вот отладчик программистам не нравится. Часто глючит при пошаговой отладке, если есть обращение к аппаратуре (UART, SPI etc.) Если тот же код пробежать по команде Run, то все работает.

 

Хорошо. Есть еще пара вопросов.

Вы его на других ПЛИС пробовали? Если да, то как он себя ведет после компиляции (размер кода, тактовая частота)?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...