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

Инструмент для создания микропрограмных автоматов

Имею большой автомат состояний (FSM) в девайсе Stratix II, работающий на частоте 333 MHz, хочу сделать то же самое микропрограмным автоматом на модуле памяти M512 или M4K, вроде как должно получится быстрей и ресурсов меньше занимать. Те мне надо подсказать пакет, который бы на описание состояний генерировал содержание памяти в *.hex. Кто в чем делает такие штуки??

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


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

Неужели все делают конечные автоматы и ни у кого небыло мысли сделать микропрогаммный автомат по схеме типа Уилкса и т.п. в блоке памяти? Или кодируем вручную по таблице переходов???? Интересует софт для МПА не привязываясь к производителю (XILINX/ALTERA) - без разницы... Кто что видел из этого направления?

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


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

Неужели все делают конечные автоматы и ни у кого небыло мысли сделать микропрогаммный автомат по схеме типа Уилкса и т.п. в блоке памяти? Или кодируем вручную по таблице переходов???? Интересует софт для МПА не привязываясь к производителю (XILINX/ALTERA) - без разницы... Кто что видел из этого направления?

 

 

Делали в свое время на BlockRAM, Xilinx Virtex-II. Все работало великолепно.

Автомат был, если не ошибаюсь, на пару сотен состояний, поэтому был на скорую руку написан ассемблер под задачу, который переводил описание алгоритма в mif- или coe- файл для заливки в память по свободному порту BlockRAM. В итоге, сэкономили кучу времени на перекомпиляциях проекта - автомат можно было менять и заливать прямо на ходу через один из интерфейсов на плате.

 

По поводу готового софта, в журнале Xilinx XCell где-то в 2002-2003 году была статья про реализацию микропрограммных автоматов, и там же автор рекламировал свой софт для описания автомата. Поищите на сайте Xilinx - у них есть архив журнала.

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


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

Делали в свое время на BlockRAM, Xilinx Virtex-II. Все работало великолепно.

Автомат был, если не ошибаюсь, на пару сотен состояний, поэтому был на скорую руку написан ассемблер под задачу, который переводил описание алгоритма в mif- или coe- файл для заливки в память по свободному порту BlockRAM. В итоге, сэкономили кучу времени на перекомпиляциях проекта - автомат можно было менять и заливать прямо на ходу через один из интерфейсов на плате.

 

хех =)

на скорую руку можно было и пикоблейз взять - чем не автомат?! =)

- и блочное ОЗУ там тоже можно на лету обновлять =)

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


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

Или кодируем вручную по таблице переходов???? Интересует софт для МПА не привязываясь к производителю (XILINX/ALTERA) - без разницы... Кто что видел из этого направления?

 

Конечно не вручную :) HDL Designer -> State Diagram Editor (весь пакет называется FPGA Advantage)

http://www.tkt.cs.tut.fi/kurssit/1200/S05/...torial6_eng.htm

 

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

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


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

Конечно не вручную :) HDL Designer -> State Diagram Editor (весь пакет называется FPGA Advantage)

http://www.tkt.cs.tut.fi/kurssit/1200/S05/...torial6_eng.htm

 

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

 

В документе описывается графическое создание конечного автомата в среде FPGA Advantage. На мой взгляд это излишне, хватает Quartus'а с его убогим просмоторщиком FSM... Вопрос не в создании конечного автомата, а интересуют именно МПА. Вот если FPGA Advantage может синтезировать по какому либо из описаний автомат типа Уилкса или на счетчике - это интересно, но пока я не нашел в его возможностях этого.

Вообще интересно, в приборах типа Stratix II содержится значительное количество модулей блочной памяти, конечно много уходит на FIFO, сдвиговые регистры и прочие вещи, но логично в них же распологать крупные автоматы, а как синтезировать?

Изменено пользователем Stas

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


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

Делали в свое время на BlockRAM, Xilinx Virtex-II. Все работало великолепно.

Автомат был, если не ошибаюсь, на пару сотен состояний, поэтому был на скорую руку написан ассемблер под задачу, который переводил описание алгоритма в mif- или coe- файл для заливки в память по свободному порту BlockRAM. В итоге, сэкономили кучу времени на перекомпиляциях проекта - автомат можно было менять и заливать прямо на ходу через один из интерфейсов на плате.

 

хех =)

на скорую руку можно было и пикоблейз взять - чем не автомат?! =)

- и блочное ОЗУ там тоже можно на лету обновлять =)

 

Во-первых, тогда PicoBlaze еще не было. Первая статья Чапмена появилась в начале 2002, а разработка была закончена в 2001. Во-вторых, частота работы автомата была около 200 Мгц, что для PicoBlaze на Virtex-II просто физически недостижимо.

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


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

Как сделать полностью автоматом не знаю, но вот логику переходов можно точно упрятать в память, например с помощью синтеза в Synplify (или в Quartus применением аналогичного constraint):

 

module FSM_Logic (
                input [...:0] CurState,
                input [...:0] DependentVar,
                output reg [...:0] NextState
                );           
          always @(*)
       case (CurState, DependentVar)
             {} : if ()  NextState = {};
             .......
             default: NextState = {};
       endcase        
endmodule




module FSM ( 
        input Clk,
       ...............
       output reg [...:0] CurState,
       ...............
      );

    .........
    war [...:0] NextState;
    reg [...:0] DependentVar;
    ......... 
                
                FSM_Logic FSM_Logic_Component (
                    .CurState(CurState),
                   .DependentVar(DependentVar)
                   .NextState(NextState)) 
        /* synthesis altera_implement_in_eab=1 */;
          
    always @(posedge Clk,.....)
             CurState <= NextState;
     
    ........................            

endmodule

 

По крайней мере Synplify генерирует mif файл, с внедрением в синхронную память придется еще помудрить.

Изменено пользователем cdg

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


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

автору, если проблема еще актуально то:

1. посмотрите на алтера авалон стейт секвенсер (Avalon State Sequencer).

Это похоже на то что вы ищете. Очень простой псевдокод + ассемблер. Правда будут проблемы с дополнением (расширением) комманд, т.к исходников ассемблера нет.

 

2. Посмотрите на MPMC2 от ксалинкса, там все на автоматах на брамах и арбитр и секвенсер комманд ДДР. в составе есть ассемблер написаный на перле. но, в о отличие от первого варианта доков никаких.

 

3. у меня в планах разработка ядра на основе Avalon State Sequencer, только на VHDL с конфигурированием из пактеа (без гуя) и ассемблера для него. Можно выполнить разработку вместе %)

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


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

mentor precision в доках хвастается тем, что умеет делать fsm на блоках встроенной памяти - автоматически, задав специальную опцию при синтезе.

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


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

если кому актуально, есть такая разработка (см. документ)

 

распространяется свободно, код открытый, с двумя условиями:

 

1. не ломать

2. обо всех багах и предложениях по модернизации сообшать.

 

Если кого нибудь заинтересовало выложу.

 

Сделал более подробное описание.

Код выложу чуть позже, т.к. нужно немного модифицировать программу-ассемблер.

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


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

Конечно выкладывайте, вещь интересная. Я правда сейчас немного другим занят, мб через месяц руки дойдут попробовать...

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


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

Выкладываю текущую версию проекта.

 

если будут вопросы, обращайтесь отвечу.

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


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

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

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

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

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

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

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

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

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

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