Jump to content

    

Какой язык, плис, среда?

Приветствую!

3 minutes ago, Nieve said:

Привидите пример использования в одном always блоке блокирующего и неблокируюего присвоения. Не видел никогда ничего подобного, любопытно.

Блокирующие удобно использовать для вычисления локальных значений перед присвоением, как пример. 

always @(posedge clk) begin : a_name
  if (var_0>0) begin : if_name
    var_1<= var_0;
                 
    begin : b_local 
    reg [7:0] l_var;
 
     l_var = var_0/4 + var_0/8;

     var_2 <= l_var[6:0];
     var_3 <= l_var[7];
    end
  end
end

Удачи! Rob.

Share this post


Link to post
Share on other sites
4 minutes ago, RobFPGA said:

Приветствую!

Блокирующие удобно использовать для вычисления локальных значений перед присвоением, как пример. 


always @(posedge clk) begin : a_name
  if (var_0>0) begin : if_name
    var_1<= var_0;
                 
    begin : b_local 
    reg [7:0] l_var;
 
     l_var = var_0/4 + var_0/8;

     var_2 <= l_var[6:0];
     var_3 <= l_var[7];
    end
  end
end

Удачи! Rob.

Аналог variable внутри процесса на VHDL? 

Share this post


Link to post
Share on other sites

Приветствую!

1 minute ago, dmitry-tomsk said:

Аналог variable внутри процесса на VHDL? 

В этом контексте да. 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Еще пример смешивания блокирующих/неблокирующих присваиваний - оператор "for" в "always@(posedge clk)" :

always@(posedge clk) begin 
	  ...
	  for(int i=0; i<N; i++)
	    a[i]<=...;
	...
	

- блокирующее присваивание переменной "i", неблокирующее - a

 

Share this post


Link to post
Share on other sites
7 hours ago, Leka said:

Vivado сравнялась с Квартусом в скорости синтеза?

Vivado быстрей.. :)

 

Один и тот же проект:

Q18.0 - 25 мин.

V18.3 - 17 мин.

 

6 hours ago, Leka said:

У Xilinx во всех семействах есть distributed RAM, у Альтеры нет (но на замену в дорогих семействах есть мелкая память с асинхронным чтением).

У Альтеры тоже во всех семействах (кроме C10 LP) есть distributed RAM. Только она называется по-другому: MLAB.

В отчетах Vivado disrtributed RAM тоже называют LUTRAM.

Share this post


Link to post
Share on other sites

Такой вопрос: я правильно понимаю, что для каждой ПЛИС нужен синтезатор только от её производителя? По аналогии с программированием: мы можем взять сторонний компилятор iar, keil, gcc и выдать код для множества МК почти любым из перечисленных компиляторов. С плис такое возможно? Т.е. мы берём синтезатор от фирмы XXX и генерим "прошивку" для ПЛИС YYY и ZZZ?

Share this post


Link to post
Share on other sites
1 hour ago, haker_fox said:

Такой вопрос: я правильно понимаю, что для каждой ПЛИС нужен синтезатор только от её производителя?

Неправильно. Синтезатор может быть сторонний. Пример - Sinplify, менторовский синтезатор и другие. Процессы Map , Place & Route - всегда от вендора чипа, связано с некоторыми коммерческими секретами архитектуры. Есть даже производители ПЛИС, у которых вообще нет своего синтезатора.

Share this post


Link to post
Share on other sites
10 часов назад, yes сказал:

я например, тоже считаю вивадо лучшим струментом на рынке в настоящий момент

Вивадо это какая-то куча овнища. Что там сделали с работой я ядрами, это "уму нерастяжимо". Всё кэшировано-перекэшировано десять раз. Вносишь изменения в код, а эта сволочь их не видит и использует какой-то кэш. Убивать хочется ещё больше.

 

 

Ну и был к меня неописуемый случай, когда неправильно синтезировался банальный счётчик. Я никогда раньше с таким не встречался. Долго искал, почему у меня фильтр неправильно работал. А оказалось, что неправильно переписывался один счётчик в другой. Я офигел. А когда навесил на счётчик атрибут dont_touch, всё стало как надо.

 

 

10 часов назад, yes сказал:

SV в стандарт языка внес много конструкций типа *, убирающих тупое копи-пастанье

Мапинг .* — это вообще диверсия. Лазишь по проекту, ищешь какой-то сигнал. И видишь, что, например, порт в модуле есть, но не используется. И начинаешь думать, то ли действительно не используется, то ли заходит куда-то в другой модуль через .*. Читаемость кода влетела до небес. Не, ребята из авторского коллектива СистемВерилога определённо курят что-то тяжёлое.

Share this post


Link to post
Share on other sites
1 hour ago, Bad0512 said:

Процессы Map , Place & Route - всегда от вендора чипа, связано с некоторыми коммерческими секретами архитектуры. Есть даже производители ПЛИС, у которых вообще нет своего синтезатора.

Если можно, могли бы вы в двух словах пояснить разницу между синтезатором и "процессорами" map, place, route? Я, естественно, сам почитаю тоже. А... синтезатор даёт что-то типа "объектного" кода (по аналогии скомпилятором), а map, place, route размещают этот "код" уже на конкретном чипе.

Share this post


Link to post
Share on other sites
1 hour ago, haker_fox said:

Если можно, могли бы вы в двух словах пояснить разницу между синтезатором и "процессорами" map, place, route? Я, естественно, сам почитаю тоже. А... синтезатор даёт что-то типа "объектного" кода (по аналогии скомпилятором), а map, place, route размещают этот "код" уже на конкретном чипе.

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

Share this post


Link to post
Share on other sites
5 minutes ago, des00 said:

зато глупых вопросов станет намного меньше

Ой, как я не люблю, когда вопросы называют "глупыми"... Ну это так, возможно вы вкладывали другой смысл.

 

Самое интересное, за освоение ПЛИС брался раз 10 за свою жизнь. Но все задача решалась на МК + обвес. И как-то небыло задач, которые бы требовали только плисину. И вот теперь появилась))) В итоге я знаю лишь только, что ПЛИС - это, грубо говроря, замена рассыпухи из логических элементов. Т.е. всё, что сделано в ПЛИС, можно, теоретически конечно же, собрать и на огромаднейшей куче к155ла3)))) Да, да, я в курсе на ограничение по мощности. частотам, уровням и т.п.)))) Это было просто моё грубое сравнение.

Share this post


Link to post
Share on other sites

Кратко так. Терминология немного разнится у разных вендоров, отсюда возникает некоторая путаница.

 

Исходное описание на языке (HDL). Есть два основных этапа перевода исходного описания в финальную "прошивку" (битстрим (для FPGA), "исполняемый" файл):

  1. Synthesis.
  2. Place&Route (в Квартусе - это Fitting, в Вивадо - Implementation).

Синтез в свою очередь тоже состоит из двух этапов (в терминологии Synplify):

  1. Compiling.
  2. Mapping.

Здесь компиляция - перевод исходного текстового описания на уровень обобщенной логики - т.н. RTL. Здесь исходные поведенческие конструкции уже представлены в виде абстрактных цифровых блоков - счётчиков, регистров, мультиплексоров и т.д и их межсоединений. На выходе этого этапа имеем RTL netlist. (В Вивадо этот этап называется Elaboration)

 

Маппинг - это этап трансляции вышеупомянутых обобщенных блоков в элементы уже конкретной целевой архитектуры - флопы, элементы комбинационной логики (LUT, мультиплексторы), блоки памяти и т.п. - т.е. в те, которые содержит целевая ПЛИС. На выходе имеем Synthesis netlist.

 

Этап Place&Route весьма похож по назначению и смыслу на разработку печатной платы: сначала осуществляется размещение элементов из синтезированного нетлиста, потом трассировка их соединений. Разумеется, на этом сходство заканчивается - технологически там всё изрядно иначе. На выходе получается финальный нетлист, как правило он чисто по соединениям между основными элементами несильно отличается от синтезированного нетлиста, но в нём уже есть информация о размещении элементов по конкретным локациям и трассировка описана детально, включая прохождение сигналов через всякие технологические блоки ПЛИС (типа коммутаторов, буферов и т.д.).

 

Так вот, этап синтеза можно проводить как в инструментах от вендоров (Quartus, ISE/Vivado), если они поддерживают синтез, так и в сторонних синтезаторах (Synplify (Synopsis), Precision (Mentor Graphics)). А Place&Route - только инструментами самих производителей ПЛИС, как уже было сказано выше.

 

Что касается редактора, то это вообще тема перпендикулярная - какой нравится, такой и используйте. Я сижу на SlickEdit, всё устраивает - умеет подсветку SV и Context Tagging - ну, как в С/C++. Из слика вызываю только компилятор симулятора и запускаю (обычно однократно за сессию) сам GUI симулятора. Синтез обычно произвожу в САПР от вендора. Можно настроить запуск тоже из редактора, более того, он у нас есть и работает, но мне это кажется менее удобным - листать здоровенную "портянку" вывода, удобнее пользоваться вьюверами от САПР, там есть фильтры сообщений.

Share this post


Link to post
Share on other sites
1 minute ago, haker_fox said:

Ой, как я не люблю, когда вопросы называют "глупыми"... Ну это так, возможно вы вкладывали другой смысл.

да дело не в обиде, просто аналог : человек от литературы, решил помыть и настроить карбюратор и задает вопрос а как это работает и что такое топливный жиклер например и наоборот. Чтение книги (на русском кстати), пару дней и вопросы станут намного более осмысленные.

Share this post


Link to post
Share on other sites
On 5/12/2019 at 8:02 AM, haker_fox said:

Добрый день, коллеги! Прямой ответ довольно трудно найти на форуме среди многообразия информации. Поэтому, сорри, но:

1. Какой язык сейчас для описания "популярен"? Насколько я понимаю, Verilog HDL?

2. Какие "недорогие" ПЛИС лучше использовать? Объём схем невелик, ну навскидку десятка два синхронных rs-триггеров, пара-тройка 32-битных счётчиков. Хотелось бы туда поместить также приёмо-передатчик spi. Я, по-сути,не имею опыта работы с плис, поэтому мне очень трудно сказать, что нужно. Говорю, как могу)

3. Какие среды для создания и моделирования сейчас используются? Для альтеры quartus + modelsim? 

4. Может быть посоветуете книгу(и), подходящие для старта? По-сути с нуля.

 

Спасибо!!!!

Мое ИМХО:

1. Тенденция в ПЛИС идет к более высокоуровневому графическому программированию с автоматической генерацией кода. Т.е. Matlab Simulink и Stateflow + HDL Coder или System Generator/DSP Builder. Конкретно изучать Verilog/VHDL я не рекомендую, так как простые вещи вы сможете сделать и так, а сложные уже будете делать в указанных средах.

2. Microsemi мне нравятся

3. Смотри пункт 1.

4. Help для указанных продуктов + изучить принципы работы ПЛИС. Купите дешевый Evaluation Kit и попытайтесь поморгать светодиодом.

Share this post


Link to post
Share on other sites
В 12.05.2019 в 09:02, haker_fox сказал:

4. Может быть посоветуете книгу(и), подходящие для старта? По-сути с нуля.

Год назад я проводил опрос, посвященный тому что можно сделать на ПЛИС в России. Мое ИМХО по результатам опроса - 90% ПЛИС это война.

10% может быть в мирных проектах. Типа мирного атома((

 

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

Если слово бюджет Вам не нравится - выбор НЕ верный.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now