Hola a todos estoy usando el Xilinx para modelar el código en verilog y no he podio hacer que esta cosa funcione, la idea es que ya creé mi tabla de estados presentes, siguientes y sustituí en la ecuación característica del flip flop T. Tengo mi bloque del FLIP FLOP T y tengo un bloque con el estado de transición y tengo un bloque donde uno todos los bloques con cables. Y al final siempre me salen valores desconocidos en la salida (XXXX). ¿Alguna sugerencia? Por cierto, es un contador asíncrono de 4 bits.
Aquí el código
module flipflop_t(T,clk,Q);
input T,clk;
output Q;
reg Q;
always @ (posedge clk)
begin
if (T)
Q<=~Q;
end
endmodule
module transitions (D,C,B,A, TD,TC,TB,TA);
input D,C,B,A;
output TD,TC,TB,TA;
assign TD= B&C&D;
assign TC= C&D;
assign TB= D;
assign TA= C|~D|~A|B;
endmodule
module ripple_stuff (clock, Q_out);
input clock;
output [3:0] Q_out;
wire [3:0] Q_w, Trans_w;
flipflop_t fft3 (.T (Trans_w[3]), .clk(clock), .Q (Q_w[3]));
flipflop_t fft2 (.T (Trans_w[2]), .clk(~Q_w[3]), .Q (Q_w[2]));
flipflop_t fft1 (.T (Trans_w[1]), .clk(~Q_w[2]), .Q (Q_w[1]));
flipflop_t fft0 (.T (Trans_w[0]), .clk(~Q_w[1]), .Q (Q_w[0]));
transitions get_trans(.D (Q_w[3]), .C (Q_w[2]) , .B(Q_w[1]), .A (Q_w[0]),
.TD(Trans_w[3]), .TC(Trans_w[2]), .TB(Trans_w[1]), .TA(Trans_w[0]));
assign Q_out=Q_w;
endmodule
Aquí el código
module flipflop_t(T,clk,Q);
input T,clk;
output Q;
reg Q;
always @ (posedge clk)
begin
if (T)
Q<=~Q;
end
endmodule
module transitions (D,C,B,A, TD,TC,TB,TA);
input D,C,B,A;
output TD,TC,TB,TA;
assign TD= B&C&D;
assign TC= C&D;
assign TB= D;
assign TA= C|~D|~A|B;
endmodule
module ripple_stuff (clock, Q_out);
input clock;
output [3:0] Q_out;
wire [3:0] Q_w, Trans_w;
flipflop_t fft3 (.T (Trans_w[3]), .clk(clock), .Q (Q_w[3]));
flipflop_t fft2 (.T (Trans_w[2]), .clk(~Q_w[3]), .Q (Q_w[2]));
flipflop_t fft1 (.T (Trans_w[1]), .clk(~Q_w[2]), .Q (Q_w[1]));
flipflop_t fft0 (.T (Trans_w[0]), .clk(~Q_w[1]), .Q (Q_w[0]));
transitions get_trans(.D (Q_w[3]), .C (Q_w[2]) , .B(Q_w[1]), .A (Q_w[0]),
.TD(Trans_w[3]), .TC(Trans_w[2]), .TB(Trans_w[1]), .TA(Trans_w[0]));
assign Q_out=Q_w;
endmodule