Цитата(AndreyLychanov @ Nov 10 2007, 19:50)

Для любого, лучше для самого простого
Quartus идеальный вариант.
В Вашем случае два варианта.
1. В АЛУ написать новую команду, там же где и все, в CASE data_in[23..20] IS
Суть команды будет в следующем. Она будет устанавливать опять таки добавленный вами триггер в 1 и
записывать кол-во повторений следующей команды в lpm_counter.
В каждой команде добавить условие, если триггер установлен в 1, то декрементировать счётчик и
ps_cnt_data_node[PS_WIDTHAD-1..0]=ps_cnt_data_node[PS_WIDTHAD-1..0]; т.е. адрес будет браться не с data_in[PS_WIDTHAD-1..0] и т.д. а останется прежним.
Если счётчик равен 0, то триггер тоже в 0.
Всё. Сначала хотел побольше кода написать, но я этим давно не занимался поэтому лучше вы прочитайте книжечку А. П. Антонова "ЯЗЫК ОПИСАНИЯ ЦИФРОВЫХ УСТРОЙСТВ AlteraHDL Практический курс".
2. Если вы не против заплатить, то я думаю вам с удовольствием поможет один очень хороший человек - Иосиф Григорьевич Каршенбойм. iosifk@narod.ru его ящик. Думаю вам стоит заплатить вперёд сколько он скажет и вы подробно с ним поработаете. Во-первых, сделано будет качественно, во вторых в голове останется. Всего хорошего.