dsp 0 28 октября, 2005 Опубликовано 28 октября, 2005 · Жалоба пишу в 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 0 28 октября, 2005 Опубликовано 28 октября, 2005 · Жалоба Можно это реализовать проще: 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться