Я пишу Verilog код из 2 бит счетчика, используя JK Flip Flop, который насчитывает 0-3 и обратно 0. Я использую Xilinx EDA. Однако я продолжаю получать одну ошибку, и я не знаю, что это значит? Номера строк здесь не отображаются, но ошибка находится на «always @(posedge clk)
».2 бит счетчика с использованием JK Flip Flop в Verilog
ERROR:HDLCompiler:1401 - "C:\Users\Eduardo\Documents\SFSU\Fall 2014\Engr 378\Lab 3\TwoBitCounter\twobitcounter.v" Line 30: Signal q in unit jkff is connected to following multiple drivers:
`timescale 1ns/1ps
module twobitcounter(q_out, qbar_out, j,k, clk, reset);
input [1:0] j; input [1:0] k; input clk; input reset;
output [1:0] q_out;
output [1:0] qbar_out;
wire [1:0] q_out;
wire [1:0] qbar_out;
wire clk;
assign qbar_out[0] = ~q_out[0];
assign j[0] = 1;
assign k[0] = 1;
assign j[1] = q_out[0];
assign k[1] = q_out[0];
jkff M1(q_out[0], qbar_out[0], j[0], k[0], clk, reset);
jkff M2(q_out[1], qbar_out[1], j[1], k[1], qbar_out[0]);
endmodule
module jkff(output q_out, output qbar_out,
input j, input k, input clk, input reset);
reg q;
assign q_out = q;
assign qbar_out = ~q;
initial begin
q = 1'b0;
end
always @(posedge clk)
begin
case({j,k})
{1'b0, 1'b0}: begin
q = q;
end
{1'b0, 1'b1}: begin
q = 1'b0;
end
{1'b1, 1'b0}: begin
q = 1'b1;
end
{1'b1, 1'b1}: begin
q = ~q;
end
endcase
end
always @(posedge reset)
begin
q = 1'b0;
end
endmodule
** Почти никогда не использовать начальные блоки (большинство инструментов синтеза для FPGAs allo начальных блоков в некоторых случаях, например, инициализация элементов памяти). Кроме того, q также назначается в блоке сброса @ (posedge reset). – Unn