Перейти к содержанию
    

Вопрос гуру по разработке конечных автоматов (КА)

enum там, вроде, есть. Там нет структур, С-типов, интерфейсов и прочего. Но все это есть в Ривьере. :) На основании этого можно полагать, что в следующих версиях Active все это появится.

 

я имел ввиду поддержку enum при описании автоматов через State machine flow - через графити - она остсутствует.

 

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

 

Пишу все автомы руками. Столкнулся с проблемой, как и у автора топика, - много сопровождающего текста, куча begin...end. При правильном кодировании one-hot используя SystemVerilog приходится таскать по два параметра для каждого состояния (пример из книги Stuart Sutherland - SystemVerilog For design - A guide to using SystemVerilog for Hardware design and modeling, 2nd Edition.pdf):

enum {R_BIT = 0,// index of RED state in State register
          G_BIT = 1,// index of GREEN state in State register
          Y_BIT = 2} state_bit;
// shift a 1 to the bit that represents each state
enum logic [2:0] 
{RED= 3'b001<<R_BIT,
GREEN= 3'b001<<G_BIT,
YELLOW = 3'b001<<Y_BIT} State, Next;

always_ff @(posedge clock, negedge resetN)
           if (!resetN) State <= RED;// reset to red light
           else State <= Next;

always_comb begin: set_next_state
        Next = State;// the default for each branch below
          unique case (1'b1)// reversed case statement
                  State[R_BIT]: if (sensor)Next = GREEN;
                  State[G_BIT]: if (green_downcnt== 0) Next = YELLOW;
                  State[Y_BIT]: if (yellow_downcnt == 0) Next = RED;
         endcase
end: set_next_state

 

Такое описание должен правильно (в смысле преимущества кодирования one-hot - уменьшения логики, функция возбуждения нового состояния зависит только от одного бита текущего состояния и входа) синтезировать любой синтезатор без всяких FSM COMPILER!!!!

 

synplify c такой конструкцией справляется, вместо enum {R_BIT = 0, необходимо писать localparam R_BIT=0, в противном случае synplify ругается.

 

Вопросы к автору:

1) планируется ли поддержка SystemVerilog'a??? вся симуляция проходит в rtl - очень удобно видеть названия состояний вместо битовых 000010000.

2) если правильно понял вы используете subversion?? почему не добавить в первые строчки генерируемого кода fsm строки вида:

// $Revision:: 240                   $:
// $Author::                            $:
// $Date::                               $:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного не в тему, но есть вопрос, кто то пользовался Ривьерой? На сколько она отлична от ActivHDL, на сколько я понимаю это что то типа ModelSim т.е. только моделирование, но зато (по их информации) вроде побыстрее ActivHDL. Так это или нет.

В рабочем проекте еще не использовал, только на тестовых гонял, планирую в ближайшее время подсесть. Ривьера действительно быстрее Актива.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В рабочем проекте еще не использовал, только на тестовых гонял, планирую в ближайшее время подсесть. Ривьера действительно быстрее Актива.

Привет, Гарри!

потыкался с риверой....блин пакаджи не понимает.

несмотря на то, что есть поддержка Std 1800-2005 и она включена во время компиляции...облом :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потыкался с риверой....блин пакаджи не понимает.

несмотря на то, что есть поддержка Std 1800-2005 и она включена во время компиляции...облом :05:

Вот, блин!.. Действительно, совсем про них забыл. :( Самое досадное, что и в новой 2007.10-PRO их тоже нет, судя по документации. Не понимаю такого торможения. :( Даже Квартус их умеет (хотя и кривовато).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В матлабе в симулинке есть stateflow chart - пакет для разработки КА. А еще матлаб умеет транслировать в HDL. Кто-нибудь пробовал такую связку? Просто не знаю, стоит ли начинать разбираться с этим state flow или оно того не стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

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

 

все исходные коды генератора, а через некоторое время еще пары удобных тулзов для ХДЛ на языках питон и пары ХДЛ проектов (МПА, сдрам контроллер) будут выложены здесь. По мере приведения их в божеский вид и наличия времени на это:

 

http://code.iprium.ru/

 

в частности код генератора можно взять здесь

 

http://code.iprium.ru/browser/tools/tool_01_psmgenerator

 

пока только trac. шкурка еще не натянута, этот процесс идет.

 

Теперь о будущем проекта :

 

За прошедшее время с использованием генератора сделал порядка 10 КА состояний на 15 - 40. Есть некоторые нарекания как на сам КА, так и на алгоритм его генерации (в частности момент старта автомата с ненулевым выходным вектором после сброса). Прорабатываются направления модернизации автомата.

 

Вполне возможно объединение инструментов генерации МПА и КА, но это в проекте. пока у меня много времени текущая работа + копание в систем верилоге занимает :(.

 

1) планируется ли поддержка SystemVerilog'a??? вся симуляция проходит в rtl - очень удобно видеть названия состояний вместо битовых 000010000.

 

планируется, изначально его отсутствие было вызвано плохой поддержкой СВ в альдеке, но с уходом ко квесте проблем не вижу. Но тогда те кто пользуется альдеком в пролете. Как быть с символьными именами ? предложите свой вариант задания имен состояний.

 

2) если правильно понял вы используете subversion?? почему не добавить в первые строчки генерируемого кода fsm строки вида:

 

чайник однако :) да и propset ы ломает ставить %)

 

для меня проще сделать релиз в tags.

 

Спасибо всем за внимание к данной теме.

 

Денис.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

........

 

http://code.iprium.ru/

 

....

 

http://code.iprium.ru/browser/tools/tool_01_psmgenerator

 

......................

Спасибо всем за внимание к данной теме.

 

Денис.

Добрый день, Денис!

Хорошо что так можно Ваши исходника посмотреть. Но к сожалению не смог открыть страницу на работе.

Посмотрю дома :) Всё равно спасибо :)

 

to ALL

обнаружился новый проект мелкого проца на опенкорах ZPU

ZPU - the worlds smallest 32 bit CPU with GCC toolchain

http://www.opencores.org/projects.cgi/web/zpu/overview

вот оригинальная ссылка

http://www.zylin.com/zpu.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

обнаружился новый проект мелкого проца на опенкорах ZPU

ZPU - the worlds smallest 32 bit CPU with GCC toolchain

 

 

Класс!!! Особенно меня поразило что он стековый и вот эти строки

 

The ZPU backend maps the GCC register concept onto stack slots in the stack frame(this different from pseudo registers)

 

ну и производительность 1-10 MIPS не очень ИМХО. И набор команд не впечатляет. но

 

у них указано

 

Could do with a Verilog implementation(ca. 600 lines to translate)

 

можно в помощники напроситься как нить..... реверс инженеринг подобных штук всегда интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На новогодних праздниках нашел время и вдохновение вернуться к данному проекту и сделал версию 4.0.

 

В этой версии реализована генерация КА на языках SystemVerilog, Verilog в onehot/native форматах.

Парсер переделан полностью и основан на PLY/YACC, в результате чего размер кода много сократился.

Введены команды с доопределением состояния по умолчанию.

Введена возможность группировки логических условий, вида a ^ (b & c)

Синтаксис взят полностью верилоговский (спасибо проекту pycparser)

 

Все как и раньше Free For Use %)

 

 

ЗЫ. Может имеет смысл сделать тему, куда разработчики, которым не жалко, будут выкладывать самодельные тулзы "в помошь HDL шику". У меня несколько таких используется и еще одна в разработке.

psm_compiler.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я посмотрел на форуме есть не только тулзы разработчика, но и несколько по настоящему ценных проектов, которые форумчане выложили в разных темах. Действительно, хорошо бы объединить их в одном месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://code.iprium.ru/

 

в частности код генератора можно взять здесь

 

http://code.iprium.ru/browser/tools/tool_01_psmgenerator

 

а что умерла тема? битые сцылки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а что умерла тема? битые сцылки

 

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

 

Пофиксил ошибку с неправильной генерацией выходных сигналов при работе КА с разрешением

psm_compiler_18032009.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...