내 코드가 잘 컴파일되고 있지만 시뮬레이션 할 때 작동하지 않습니다. "오류 로딩 디자인"이 표시됩니다. 나는이 모듈들 중에서 입출력 포트가 잘못되었다고 생각한다. 하지만 그들을 찾을 수 없습니다 .. 내 코드에서 오류가있는 곳에서 도와주세요.modelsim 프로그래밍 60 카운터 (오류로드 디자인)
modulo_60_binary
의 내
y
신호는 두 위치에서 구동되고
module tb_modulo_60_binary;
reg t_clk, reset;
wire [7:0] t_Y;
parameter sec = 30;
always #(sec) t_clk = ~t_clk;
modulo_60_binary M1 (t_Y, t_clk, reset);
initial begin
t_clk = 1; reset =1; #10;
reset = 0; #3050;
$finish;
end
endmodule
module modulo_60_binary(y, clk, reset);
output [7:0] y;
input reset, clk;
wire TA1, TA2, TA3, JA2, JA4;
reg [7:0] y;
assign TA1 = 1;
assign TA2 = (~y[6]) && y[4];
assign TA3 = (y[5] && y[4]) || (y[6] && y[4]);
assign JA2 = ~y[3];
assign JA4 = y[1]&&y[2];
jk_flip_flop JK1 (1, 1, clk, y[0]);
jk_flip_flop JK2 (JA2, 1, y[0], y[1]);
jk_flip_flop JK3 (1, 1, y[1], y[2]);
jk_flip_flop JK4 (JA4, 1, y[1], y[3]);
t_flip_flop T1 (TA1, clk, y[4]);
t_flip_flop T2 (TA2, clk, y[5]);
t_flip_flip T3 (TA3, clk, y[6]);
always @(negedge clk)
begin
if(reset)
y <= 8'b00000000;
else if(y == 8'b01110011)
y <= 8'b00000000;
end
endmodule
module t_flip_flop(t, clk, q);
input t, clk;
output q;
reg q;
initial q=0;
always @(negedge clk)
begin
if(t == 0) q <= q;
else q <= ~q;
end
endmodule
module jk_flip_flop(j, k, clk, Q);
output Q;
input j, k, clk;
reg Q;
always @(negedge clk)
if({j,k} == 2'b00) Q <= Q;
else if({j,k} == 2'b01) Q <= 1'b0;
else if({j,k} == 2'b10) Q <= 1'b1;
else if({j,k} == 2'b11) Q <= ~Q;
endmodule
'y'의 각 비트에는 하나의 드라이버가 있어야합니다. 당신은 두개 (모듈 인스턴스와 분리 된 항상 블록)를가집니다. 또한 모듈 인스턴스의 출력은 네트 유형 (예 :'wire')에 연결되어야합니다. 너는 너의 나머지 논리를 재고 할 필요가있다 – Greg
너는 저에게 세부 사항을 더 말할 수 있 었는가? 어느 부분을 변경해야합니까? 나는 Verilog를 사용할 첫 번째 시간이다 ... – kyubihn