|
FSM и лог состояний, нужно вести лог состояний FSM в железяке |
|
|
|
Sep 23 2009, 13:29
|
Местный
  
Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730

|
Цитата(Kuzmi4 @ Sep 23 2009, 17:21)  а вот со счётчиком этих самых состояний как быть ?? так если на каждом клоке записывать в память зачем Вам счётчик? или Вы хотите соптимизировать и писать только по изменению состояния + счётчик сколько в каком состоянии был клоков?
|
|
|
|
|
Sep 23 2009, 15:09
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Цитата(Kuzmi4 @ Sep 23 2009, 16:21)  в принципе так и думал сделать для запоминания последних состояний (или скорей всего фифошку поставлю), а вот со счётчиком этих самых состояний как быть ?? Ну, фифо конечно понятие растяжимое, но я все же уточню. Обычное FIFO как бы не рассчитано на то, что будет переполнение, и, обычно, ведет себя в этом случае неподходяще для этого случая. Нам нужно просто писать по кругу, и передавать на сторону чтения адрес, по которому писали в последний раз. Читаем всегда всю память, а по переданному значению определяем, где там начало данных, а где конец. Но нужно помнить, что чтение памяти занимает некоторое время, и за это время могло быть что-то записано. Я бы считывал значение переданного указателя записи перед и после чтения памяти, и, данным, лежащим между этими значениями не доверял (может мы еще старое считали, а может уже и новое - фиг его знает.) Счетчик состояний - самое простое. Делаем регистр, в который записываем старое значение STATE. Если новое равно старому - счетчик инкрементируется, если не равно - обнуляется. Также, если не равно, инкрементируется указатель записи. Вроде все.
|
|
|
|
|
Nov 16 2009, 09:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Kuzmi4 @ Nov 16 2009, 02:40)  "излишне усложненно "- это где?, блок wr_logger, логика однократного срабатывания после сброса. Вы городите подобие КА, которое тут ну совершенно не к месту. ИМХО проще сделать так : Код if (rst) pwr_srl <= 2'b01; else pwr_srl <= (pwr_srl << 1); .. pwr_on_sig <= pwr_srl[1]; Цитата чем описание КА страшное, .. ?? кодирование состояний у вас в голове и это цифры, которые нужно помнить и анализировать. Куда нагляднее читать в коде что то вроде STATE_INIT_RAM_CLEAR/STATE_RAM_CLEAR чем мифические 4'd02/4'd03 и т.д. Цитата что именно сумбурно совершенно лишнее использование макросов для задания границ счетчиков, есть ненужный перерасход ресурса и комменты стоят странно, часть фсм полностью расписана вплоть до примитивных действий (что ИМХО не нужно), другая часть вообще не комментирована.
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|