primitive ffjk (Q, Clk, set, reset, J, K);
output Q;
input Clk, set, reset, J, K;
reg Q;
table
// Clk set reset J K : Q : Qnew
? 1 0 ? ? : ? : 1;
? 0 1 ? ? : ? : 0;
? 10 0 ? ? : ? : -;
? 0 10 ? ? : ? : -;
01 0 0 0 0 : ? : -;
01 0 0 0 1 : ? : 0;
01 0 0 1 0 : ? : 1;
01 0 0 1 1 : 0 : 1;
01 0 0 1 1 : 1 : 0;
? 0 0 ?? ?? : ? : -;
endtable
endprimitive
module ff(Q, Clk, set, reset, J, K);
input Clk, set, reset, J, K;
output reg Q;
ffjk M1(Q,Clk,set,reset,J,K);
endmodule
我制作了JK FF的原语。然后,我制作了一个模块,并在其中使用了原语。我还编写了一个测试台来执行此代码。我在第二行中经常收到语法错误。
jkff.v:2: syntax error
我放弃。
这是iverilog的问题。它仅接受非常古老的Verilog语法。在单独的行上写reg
声明。
primitive ffjk (Q, Clk, set, reset, J, K);
output Q;
input Clk, set, reset, J, K;
reg Q;
在Verilog-2001 / SystemVerilog中写这个的正确方法是
primitive ffjk (output reg Q,
input Clk, set, reset, J, K );
然后您会遇到表格问题。如果您无法弄清楚,您将不得不问另一个问题。