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

 
 
> формирователь короткого импульса, подскажите столкнулся впервые
dsp
сообщение Oct 28 2005, 07:47
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 24-07-04
Пользователь №: 377



пишу в Active-hdl 6.3 Sp2 синтез Synplify8.2 размещение Ise 7.1
на timing симуляции для Spartan-3 формирователь короткого импульса
работает корректно 50 микросекунд а потом выдает неопределенность 1 и 0 одновременно что это такое ничего не могу поделать с таким столкнулся впервые к слову другие схемы работают также какое-то время корректно а потом неопределенность вот код:
module trig(rst,clk,start,ready);
input rst,clk,start;
output ready;

wire rst,clk,start;
reg ready;
reg [1:0] curr_state,next_state;
parameter s0=2'b00, s1=2'b01, s2=2'b10, s3=2'b11;

always @ ( curr_state or start)
begin
next_state<= curr_state;
ready<=0;
case(curr_state)
s0:
begin
ready<=0;
if (start==0)
next_state<=s1;
else next_state <= s0;
end
s1:
begin
ready<=0;
if (start==1)
next_state<=s1;
else next_state <= s2;
end
s2:
begin
ready<=1;
next_state<=s3;
end
s3:
begin
ready<=0;
if (start==1)
next_state<=s1;
else next_state <= s3;
end
endcase
end

always @ (posedge rst or posedge clk)
begin
if (rst==1)
curr_state <= s0 ;
else
curr_state <= next_state;
end

endmodule
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
Camelot
сообщение Oct 28 2005, 12:17
Сообщение #2


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

Группа: Свой
Сообщений: 182
Регистрация: 10-01-05
Пользователь №: 1 872



Можно это реализовать проще:

Код
module trig(rst,clk,start,ready);

parameter s0=2'b00, s1=2'b01, s2=2'b10, s3=2'b11;

input rst,clk,start;
output ready;

reg ready;
reg [1:0] curr_state;


always @ (posedge rst or posedge clk)
begin
  if (rst) begin
     curr_state <= s0;
     ready <= 1'b0;
  end else begin
     case (curr_state)
         s0: begin
             if (start)
                curr_state <= s1;
             else
                curr_state <= s0;
         end
         s1: begin
             ready <= 1'b1;
             curr_state <= s2;    
         end
         s2: begin
             ready <= 1'b0;
             curr_state <= s3;
         end
         s3: begin
             if (!start)
                curr_state <= s0;
             else
                curr_state <= s3;  
         end
     endcase
  end
end

endmodule
Go to the top of the page
 
+Quote Post

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

 


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


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