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

 
 
 
Reply to this topicStart new topic
> Как реализовывать FSM., Quartus + EP2C5T144C8
skyspark
сообщение Dec 1 2008, 06:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Упорно не получается сделать FSM так что бы работало smile.gif. Я наверное что-то не понимаю cranky.gif .

После первых экспериментов, воспользовался smf файлом, и нарисовал что нужно.
Смотрю симулятором и в железе EP2C5T144C8 @ 100Мгц.

Quartus генерирует код вида:

Код
    
always @(posedge clock)
    begin
        if (clock) begin
            fstate <= reg_fstate;
        end
    end

    always @(fstate or reset or tx_busy or f_smpl_rdy or f_all_reg)
    begin
        if (reset) begin
                   ...
        end
        else begin
            case (fstate)
                WAIT: begin
                    if (f_smpl_rdy)
                        reg_fstate <= START_PACKET;
                    // Having else block to avoid latch inference
                    else
                        reg_fstate <= WAIT;
                   ...
                end


На это квартус говорит:
Код
Warning (10240): Verilog HDL Always Construct warning at bsc.v(56): inferring latch(es) for variable "f_adrrst", which holds its previous value in one or more paths through the always construct


В симуляторе работает, в железе виснет. Мне сначала показалось, что разумным было бы внести все в один блок always @(posedge clock) и это естественно устраняет варнинг, но получается бред если посмотреть в RTL Viewer и в симуляторе.

Когда убираю регистр fstate и вношу все в один блок always @(posedge clock) и делаю case (reg_fstate), вроде все начинает работать но только в симуляторе.


Направте не путь истинный, как реализовать FSM, почему код генерируемый стандартными стредствами IDE приводит к защелкиванию схемы?
Go to the top of the page
 
+Quote Post
id_gene
сообщение Dec 1 2008, 06:39
Сообщение #2


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



Защелкивает у вас переменню "f_addrrst". Вот на ее логику и смотрите.
Машина состояний на двух always-блоках - это нормально.
подробнее про FSM читайте на sunburst-design
Go to the top of the page
 
+Quote Post
skyspark
сообщение Dec 1 2008, 07:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Цитата(id_gene @ Dec 1 2008, 09:39) *
подробнее про FSM читайте на sunburst-design


Читал Synthesizable Finite State Machine Design Techniques от туда, понимаю что нормально, но почему Квартус валит ошибку. Защелкивание он валит по всем выходам КА. В проекте только один КА и больше ничего. В железе проверял уже подключая к остальной схеме, на сколько я понял защелкивается.

Не совсем понимаю куда девается reg_fstate в случае с двумя блоками always.
Go to the top of the page
 
+Quote Post
id_gene
сообщение Dec 1 2008, 10:46
Сообщение #4


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



Цитата(skyspark @ Dec 1 2008, 10:24) *
Не совсем понимаю куда девается reg_fstate в случае с двумя блоками always.
reg_fstate в этом случае - это комбинаторная логика, при синтезе она размазывается. Триггера в описании второго always блока нет.
Как избавится от латчей - это даже в хелпе квартуса написано. встаете на сообщение, жмете на Ф1 - и там все будет.
Go to the top of the page
 
+Quote Post
druzhin
сообщение Dec 1 2008, 14:07
Сообщение #5


druzhin
***

Группа: Свой
Сообщений: 286
Регистрация: 18-06-04
Из: Москва
Пользователь №: 58



Документ по ссылке смотрите.
Прикрепленные файлы
Прикрепленный файл  CummingsSNUG2003SJ_SystemVerilogFSM.rar ( 225.46 килобайт ) Кол-во скачиваний: 45
 
Go to the top of the page
 
+Quote Post
skyspark
сообщение Dec 1 2008, 18:47
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-02-08
Пользователь №: 35 238



Цитата(id_gene @ Dec 1 2008, 13:46) *
Как избавится от латчей - это даже в хелпе квартуса написано. встаете на сообщение, жмете на Ф1 - и там все будет.


Спасибо помогло smile.gif. Понял как оно работет.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:44
Рейтинг@Mail.ru


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