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

 
 
> проблемы с FSM
sp1
сообщение Nov 2 2011, 08:10
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 28-10-10
Пользователь №: 60 495



Здравствуйте. Помогите пожалуйста разобраться в следующей проблеме:

Я описал на 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. Как такое вообще может быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
des00
сообщение Nov 2 2011, 08:55
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(sp1 @ Nov 2 2011, 02:10) *
сигналы sstrb1 и sstrb2 асинхронные

сначала это исправить, потом, после тестов, продолжим разговор %)


--------------------
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Nov 2 2011, 09:30
Сообщение #3


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



В среде разработки при синтезе включите Safe Implementation в Yes.
Возможно спасет.
Go to the top of the page
 
+Quote Post
sp1
сообщение Nov 3 2011, 10:50
Сообщение #4





Группа: Участник
Сообщений: 8
Регистрация: 28-10-10
Пользователь №: 60 495



Спасибо за помощь, все заработало. sm.gif
Go to the top of the page
 
+Quote Post
druzhin
сообщение Nov 5 2011, 14:33
Сообщение #5


druzhin
***

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



[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
Go to the top of the page
 
+Quote Post

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

 


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


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