Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблемы с FSM
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
sp1
Здравствуйте. Помогите пожалуйста разобраться в следующей проблеме:

Я описал на Verilog конечный автомат
CODE

always @(posedge clk or negedge Rst)
if(~Rst)
FSM_st <= IDLE;
else
FSM_st <= FSM_n;

always @(FSM_st or start or byte_cf_sent or byte_cv_sent or sstrb1 or sstrb2 or cnt_Tx_byte_clr or dout_Rx)
case(FSM_st)
IDLE:
begin
if(start)
FSM_n = TRANSMIT_CONFIGURANION_BYTE;
else
FSM_n = IDLE;
end
TRANSMIT_CONFIGURANION_BYTE:
begin
if(byte_cf_sent)
FSM_n = TRANSMIT_CONVERTION_BYTE;
else
FSM_n = TRANSMIT_CONFIGURANION_BYTE;
end
TRANSMIT_CONVERTION_BYTE:
begin
if(byte_cv_sent)
FSM_n = WAITING_MAX_WORK;
else
FSM_n = TRANSMIT_CONVERTION_BYTE;
end
WAITING_MAX_WORK:
begin
if(~sstrb1 || ~sstrb2)
FSM_n = MAX_WORK;
else
FSM_n = WAITING_MAX_WORK;
end
MAX_WORK:
begin
if(sstrb1 && sstrb2)
FSM_n = RECEIVE_DOUT;
else
FSM_n = MAX_WORK;
end
RECEIVE_DOUT:
begin
if(dout_Rx)
FSM_n = CHECK;
else
FSM_n = RECEIVE_DOUT;
end
CHECK:
begin
if(cnt_Tx_byte_clr)
FSM_n = IDLE;
else
FSM_n = TRANSMIT_CONVERTION_BYTE;
end
default:
begin
FSM_n = IDLE;
end
endcase

закодировал состояния
Код
parameter        [6:0]        IDLE =                                             7'b0000001,
                    TRANSMIT_CONFIGURANION_BYTE = 7'b0000010,
                    TRANSMIT_CONVERTION_BYTE =       7'b0000100,
                    WAITING_MAX_WORK =                    7'b0001000,
                    MAX_WORK =                                   7'b0010000,
                    RECEIVE_DOUT =                             7'b0100000,
                    CHECK =                                          7'b1000000;

Сигнал Rst(асинхронный Reset) всегда в 1, сигналы sstrb1 и sstrb2 асинхронные, остальные синхронные.
При прошивке Virtex-4 сначала автомат работает нормально, потом автомат сваливается в состояние FSM_st = 7'b0000000 и не может из него выбраться, несмотря на то, что приходитят положительные фронты clk. Как такое вообще может быть?
des00
Цитата(sp1 @ Nov 2 2011, 02:10) *
сигналы sstrb1 и sstrb2 асинхронные

сначала это исправить, потом, после тестов, продолжим разговор %)
AlphaMil
В среде разработки при синтезе включите Safe Implementation в Yes.
Возможно спасет.
sp1
Спасибо за помощь, все заработало. sm.gif
druzhin
[quote name='sp1' date='Nov 2 2011, 12:10' post='989502']
Здравствуйте. Помогите пожалуйста разобраться в следующей проблеме:

Я описал на Verilog конечный автомат.............

Читайте документ по ссылке!!! Coding And Scripting Techniques For FSM Designs With Synthesis-Optimized, Glitch-Free Outputs
http://www.sunburst-design.com/papers/Cumm...0Boston_FSM.pdf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.