реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Конечный автомат в Quartus, Затраты триггеров на реализацию
Дмитрий_Б
сообщение Feb 3 2017, 16:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 199
Регистрация: 25-10-09
Пользователь №: 53 195



У меня получилось, что конечный автомат с 16-ю состояниями реализован на 16 триггерах. Очевидно, на самом деле достаточно 4-х. При создании автомата использовал штатный редактор конечных автоматов Quartus с последующей генерацией VHDL- описания.
Поделитесь, кто делал: у вас то же самое?
Go to the top of the page
 
+Quote Post
krux
сообщение Feb 3 2017, 17:31
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 581
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата(Дмитрий_Б @ Feb 3 2017, 19:53) *
У меня получилось, что конечный автомат с 16-ю состояниями реализован на 16 триггерах. Очевидно, на самом деле достаточно 4-х. При создании автомата использовал штатный редактор конечных автоматов Quartus с последующей генерацией VHDL- описания.
Поделитесь, кто делал: у вас то же самое?

В случае, если при синтезе ваша FSM была определена синтезатором как one-hot, то всё правильно, 16 триггеров - это ожидаемо.

Объясните, почему вы считаете, что очевидно достаточно 4-х?
Go to the top of the page
 
+Quote Post
Дмитрий_Б
сообщение Feb 3 2017, 18:01
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 199
Регистрация: 25-10-09
Пользователь №: 53 195



Цитата(krux @ Feb 3 2017, 20:31) *
В случае, если при синтезе ваша FSM была определена синтезатором как one-hot, то всё правильно, 16 триггеров - это ожидаемо.

Объясните, почему вы считаете, что очевидно достаточно 4-х?

Потому что 4 двоичных разряда описывают 16 различных состояний. А что такое one-hot?
Go to the top of the page
 
+Quote Post
krux
сообщение Feb 3 2017, 18:32
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 581
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



существуют различные способы хранения состояния FSM: binary, one-hot, gray и т.д.
различия - в максимально достигаемой скорости дизайна, используемых ресурсах, энергопотреблении.
к примеру, то, что вы сейчас ожидаете - это binary encoding. Этот вид обеспечивает минимальное задействование регистров, но значительное количество логики для сравнения/выбора следующего состояния, что негативно сказывается на количестве LUT. т.е. по FF - выигрыш, по LUT - проигрыш
если использовать one-hot - то по FF - проигрыш, зато по количеству LUT - выигрыш.
при этом по количеству занимаемых ALM (т.е. ячеек LUT+FF) - занимаемое место примерно одинаково
однако вариант one-hot имеет существенно более высокий потолок по скорости реализации (тактовой частоте). binary encoding как правило существенно медленнее.

если необходимо снижать энергопотребление - то применяется gray encoding. т.е. изменение состояния, которое по статистике имеет максимальную вероятность перехода, обеспечивает минимальное количество переключающихся регистров. в этом случае и регистров =2*M и логики много, но энергопотребление минимально.

кроме того, существует так называемые safe и unsafe FSM.
отличаются тем, восстанавливаются ли они при вхождении в "запрещенное" состояние. т.е. например для one-hot - любое состояние, где в "1" выставляется более 1-го регистра состояния FSM - является запрещенным.
в binary encoding таким состоянием может быть любое неописанное, например вы объявили 4 бита, но состояний, в которые реально может попасть автомат - не более 12. т.е. имеем 4 запрещенных состояния.
реализация safe FSM позволяет при вхождении в запрещенное состояние выйти из него в состояние сброса, и далее по алгоритму. в противном случае у вас получается unsafe FSM и при случайном либо нет вхождении в запрещенное состояние выход из него невозможен, т.е. требуется power-cycle (вкл-выкл) устройства.
Go to the top of the page
 
+Quote Post
masics
сообщение Feb 4 2017, 09:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 21-02-05
Из: Melbourne, Australia
Пользователь №: 2 779



А это точно все триггеры состояний? Может там триггеры на выходах?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Feb 4 2017, 10:03
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 3 711
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(masics @ Feb 4 2017, 12:54) *
А это точно все триггеры состояний? Может там триггеры на выходах?

Зачем автомату нужны " триггеры на выходах", если состояние сигналов автомата уже зафиксировано регистром автомата?
Другое дело, что начинать изучение Верилога надо не с Квартуса, а с МоделСима. Ведь Квартус, если ему не сказать о том, что требуется только RTL без привязки к кристаллу, будет работать гораздо медленнее...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Feb 4 2017, 10:03
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 353
Регистрация: 18-04-11
Пользователь №: 64 451



Здравствуйте, недавно заинтересовался этой темой поплотнее... но не могу найти хорошего материала. Везде пишут мол используйте стиль кода предлагаемый производителем софта и всё будет в ажуре. Не могли бы Вы посоветовать какую нибудь литературу?

Сообщение отредактировал Грендайзер - Feb 4 2017, 10:05
Go to the top of the page
 
+Quote Post
iosifk
сообщение Feb 4 2017, 10:19
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 3 711
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Грендайзер @ Feb 4 2017, 13:03) *
Здравствуйте, недавно заинтересовался этой темой поплотнее... но не могу найти хорошего материала. Везде пишут мол используйте стиль кода предлагаемый производителем софта и всё будет в ажуре. Не могли бы Вы посоветовать какую нибудь литературу?

Читайте отца-основателя Сазерленда на его сайте...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
masics
сообщение Feb 4 2017, 10:25
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 21-02-05
Из: Melbourne, Australia
Пользователь №: 2 779



Цитата(iosifk @ Feb 4 2017, 20:03) *
Зачем автомату нужны " триггеры на выходах", если состояние сигналов автомата уже зафиксировано регистром автомата?
Другое дело, что начинать изучение Верилога надо не с Квартуса, а с МоделСима. Ведь Квартус, если ему не сказать о том, что требуется только RTL без привязки к кристаллу, будет работать гораздо медленнее...

Всё зависит от написания. Так как код не приведён - приходится гадать.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Feb 4 2017, 10:59
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 353
Регистрация: 18-04-11
Пользователь №: 64 451



Цитата
Читайте отца-основателя Сазерленда на его сайте...

Спасибо!
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 4 2017, 12:18
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 232
Регистрация: 17-02-06
Пользователь №: 14 454



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

Альтера кстати любит оне хот автоматы по умолчанию, потому у ТС и 16 регистриков получилосьsm.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Feb 4 2017, 16:56
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Golikov A. @ Feb 4 2017, 18:18) *
Альтера кстати любит оне хот автоматы по умолчанию, потому у ТС и 16 регистриков получилосьsm.gif

а если "подсказать" синтезатору, типа так:
CODE

module enum_fsm (input clk, reset, input int data[3:0], output int o);
enum int unsigned { S0 = 0, S1 = 2, S2 = 4, S3 = 8 } state, next_state;
always_comb begin : next_state_logic
next_state = S0;
case(state)
S0: next_state = S1;
S1: next_state = S2;
S2: next_state = S3;
S3: next_state = S3;
endcase
end
always_comb begin
case(state)
S0: o = data[3];
S1: o = data[2];
S2: o = data[1];
S3: o = data[0];
endcase
end
always_ff@(posedge clk or negedge reset) begin
if(~reset)
state <= S0;
else
state <= next_state;
end
endmodule
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 4 2017, 17:29
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 232
Регистрация: 17-02-06
Пользователь №: 14 454



если синтезатор распознает автомат, а он распознает, то он может совершенно спокойно заменить состояния на модель что стоит в настройках проекта. Так что для 100% управления надо либо менятьт настройки проекта как кодировать автоматы, либо писать спец ключевые слова с выключением оптимизации или прямым указанием как кодировать состояния...

Цитата
(* syn_encoding = "user" *) reg [1:0] state;
For convenience, the Quartus II software accepts six encoding styles:

"default"— Choose an encoding based on the number of states in the enumeration type. If there are fewer than five states, use the "sequential" encoding. If there are more than five but fewer than 50 states, use a "one-hot" encoding. Otherwise, use a "gray" encoding.

"one-hot"— The default encoding style requiring N bits, where N is the number of states in the enumeration type.

"sequential"— Use a binary encoding in which the first state in the enumeration type has encoding 0, the second 1, and so on.

"gray"— Use an M-bit encoding in which the encodings for adjacent states differ by exactly one bit. An M-bit "gray" code can represent 2M states.

"johnson"—Use an M-bit encoding in which the encodings for adjacent states differ by exactly one bit. An M-bit "johnson" code can represent at most 2 times M states but requires less logic than a "gray" encoding.

"compact"— Use an encoding with fewest bits.

"user"— Encode each state using its value in the Verilog source. You can change the encoding of your state machine by changing the values of your state constants, .





Go to the top of the page
 
+Quote Post
krux
сообщение Feb 5 2017, 13:53
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 581
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Для прочтения в книжном виде, по конечным автоматам, могу посоветовать

Цитата
FSM-based Digital Design using Verilog HDL
Peter Minns, Ian Elliott
Northumbria University, UK
John Wiley & Sons Ltd
ISBN 978-0470-06070-4
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Feb 5 2017, 13:57
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 353
Регистрация: 18-04-11
Пользователь №: 64 451



Цитата
Для прочтения в книжном виде, по конечным автоматам, могу посоветовать

Спасибо, уже качаю!
P.S. Исключительно в целях ознакомления biggrin.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th December 2017 - 03:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016