Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: формирователь короткого импульса
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dsp
пишу в 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
Camelot
Можно это реализовать проще:

Код
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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.