|
Инструмент для создания микропрограмных автоматов, Подскажите |
|
|
|
Aug 1 2006, 13:57
|

Адепт
   
Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656

|
Цитата(Stas @ Aug 1 2006, 08:13)  Неужели все делают конечные автоматы и ни у кого небыло мысли сделать микропрогаммный автомат по схеме типа Уилкса и т.п. в блоке памяти? Или кодируем вручную по таблице переходов???? Интересует софт для МПА не привязываясь к производителю (XILINX/ALTERA) - без разницы... Кто что видел из этого направления? Делали в свое время на BlockRAM, Xilinx Virtex-II. Все работало великолепно. Автомат был, если не ошибаюсь, на пару сотен состояний, поэтому был на скорую руку написан ассемблер под задачу, который переводил описание алгоритма в mif- или coe- файл для заливки в память по свободному порту BlockRAM. В итоге, сэкономили кучу времени на перекомпиляциях проекта - автомат можно было менять и заливать прямо на ходу через один из интерфейсов на плате. По поводу готового софта, в журнале Xilinx XCell где-то в 2002-2003 году была статья про реализацию микропрограммных автоматов, и там же автор рекламировал свой софт для описания автомата. Поищите на сайте Xilinx - у них есть архив журнала.
|
|
|
|
|
Aug 1 2006, 17:23
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399

|
Цитата(Stas @ Aug 1 2006, 15:13)  Или кодируем вручную по таблице переходов???? Интересует софт для МПА не привязываясь к производителю (XILINX/ALTERA) - без разницы... Кто что видел из этого направления? Конечно не вручную :) HDL Designer -> State Diagram Editor (весь пакет называется FPGA Advantage) http://www.tkt.cs.tut.fi/kurssit/1200/S05/...torial6_eng.htmПро нюансы использования для этих целей памяти ничего не скажу. Не исключено, что это вообще можно сделать, указав только соответствующие настройки.
|
|
|
|
|
Aug 1 2006, 18:12
|
Местный
  
Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751

|
Цитата Конечно не вручную  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 - Aug 1 2006, 18:19
|
|
|
|
|
Aug 1 2006, 18:59
|

Адепт
   
Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656

|
Цитата(Doka @ Aug 1 2006, 13:36)  Цитата(acex2 @ Aug 1 2006, 17:57)  Делали в свое время на BlockRAM, Xilinx Virtex-II. Все работало великолепно. Автомат был, если не ошибаюсь, на пару сотен состояний, поэтому был на скорую руку написан ассемблер под задачу, который переводил описание алгоритма в mif- или coe- файл для заливки в память по свободному порту BlockRAM. В итоге, сэкономили кучу времени на перекомпиляциях проекта - автомат можно было менять и заливать прямо на ходу через один из интерфейсов на плате. хех =) на скорую руку можно было и пикоблейз взять - чем не автомат?! =) - и блочное ОЗУ там тоже можно на лету обновлять =) Во-первых, тогда PicoBlaze еще не было. Первая статья Чапмена появилась в начале 2002, а разработка была закончена в 2001. Во-вторых, частота работы автомата была около 200 Мгц, что для PicoBlaze на Virtex-II просто физически недостижимо.
|
|
|
|
|
Aug 2 2006, 07:05
|
Местный
  
Группа: Свой
Сообщений: 313
Регистрация: 8-09-04
Из: Таганрог
Пользователь №: 617

|
Как сделать полностью автоматом не знаю, но вот логику переходов можно точно упрятать в память, например с помощью синтеза в 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 - Aug 2 2006, 07:11
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|