【问题标题】:Verilog sync counterVerilog 同步计数器
【发布时间】:2015-02-14 20:45:40
【问题描述】:
module syncounter(qa,qabar,qb,qbbar,overflow,ja,ka,jb,kb,clk,rst);  
output qa,qabar,qb,qbbar,overflow;  
input ja,ka,jb,kb,clk,rst;  
reg qa,qb,qabar,qbbar,overflow;  
//var1 = qa;

jkflip jk1(qa,qabar,ja,ka,clk,rst);  
assign var1 = qa;  
jkflip jk2(qb,qbbar,var1,var1,clk,rst);  
always @ (ja,ka,jb,kb)  
begin  
if(qa & qb)   
begin  
overflow = 1;  
end  
end  
endmodule  

触发器的代码是

module jkflip(q,qbar,j,k,clk,rst);  
input j,k,clk,rst;  
output q,qbar;  
wire j,k,clk,rst;  
reg q,qbar;  
always @(posedge clk)  
begin  
if(rst) q<=~q;  
else   
begin  
case ({j,k})  
    2'b00 : q<=q;  
    2'b01 : q<=1'b0;  
    2'b10 : q<=1'b1;  
    2'b11 : q<=~q;  
endcase   
end  
end  
endmodule   

计数器测试台

module syncountw();

reg j0,k0,j1,k1,clk,rst;
wire q0,q0bar,q1,q1bar,overflow;
syncounter syn1(q0,q0bar,q1,q1bar,overflow,j0,k0,j1,k1,clk,rst);
always #1 clk = !clk;
//always #1 j0 =1 ;
//always #1 k0 = 1;
initial begin
clk = 1;
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;
#2
j0 = 1;
k0 = 1;

end
endmodule

我收到一个错误,称为:

错误(可抑制):(vsim-3053)C:/Modeltech_pe_edu_10.4/examples/syncounter.v(7):端口“q”的非法输出或输入端口连接。 # 时间:0 ns 迭代:0 实例:/syncountw/syn1/jk1 文件:C:/Modeltech_pe_edu_10.4/examples/jkflip.v # ** 错误(可抑制):(vsim-3053)C:/Modeltech_pe_edu_10.4/examples/syncounter.v(7):端口“qbar”的非法输出或输入端口连接。 # 时间:0 ns 迭代:0 实例:/syncountw/syn1/jk1 文件:C:/Modeltech_pe_edu_10.4/examples/jkflip.v # ** 错误(可抑制):(vsim-3053)C:/Modeltech_pe_edu_10.4/examples/syncounter.v(9):端口“q”的非法输出或输入端口连接。 # 时间:0 ns 迭代:0 实例:/syncountw/syn1/jk2 文件:C:/Modeltech_pe_edu_10.4/examples/jkflip.v # ** 错误(可抑制):(vsim-3053)C:/Modeltech_pe_edu_10.4/examples/syncounter.v(9):端口“qbar”的非法输出或输入端口连接。 # 时间:0 ns 迭代:0 实例:/syncountw/syn1/jk2 文件:C:/Modeltech_pe_edu_10.4/examples/jkflip.v

【问题讨论】:

    标签: counter verilog


    【解决方案1】:

    qa, qb, qabar, & qbbar 被声明为reg,它们应该是wirereg 类型用于由当前模块范围内的程序块(即:initialalways)分配的信号。

    var1 已分配,但从未声明。

    变化:

    reg qa,qb,qabar,qbbar,overflow;  
    //var1 = qa;
    

    收件人:

    reg overflow;  
    wire var1;
    

    仅供参考:您忘记为qbar 赋值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2012-09-25
      相关资源
      最近更新 更多