我是一名学生,是verilog的新手。我了解这些代码的含义,它们似乎对我有用。但是,我在执行任务时遇到了麻烦。
strsql = "SELECT QSYS.DOKUMENTE.SDATEINAME
FROM QSYS.DOKUMENTE
INNER JOIN QSYS.RQMS_STAMM
ON QSYS.DOKUMENTE.NLFD = QSYS.RQMS_STAMM.NRQNR"
& _ "WHERE QSYS.DOKUMENTE.NLFD = QSYS.RQMS_STAMM.NRQNR
AND QSYS.RMQS_STAMM.SRQNR = '"& Me.lstReklamenummern.Value &"'"
objrcrd.Open strsql
但是,当我运行仿真时:
运行模拟时,我想得到z的值,但是最后得到的字母为“ z”。我写的代码错了吗?
答案 0 :(得分:0)
您只是忘记了一些非常重要的语法元素。并弄乱了任务中的参数顺序。
module add_two_values_task(output reg [3:0] sum,output reg cout, input [3:0] ain, input [3:0] bin); // You need to declare signals width
task add_two_values;
output [3:0] sum;
output out;
input [3:0]ain;
input [3:0]bin;
reg [3:0] sum;
reg out;
{out, sum} = ain + bin;
endtask
always @(ain or bin) begin
add_two_values(sum,cout,ain,bin); // You messed order of arguments here
end
endmodule
首先,在module
声明中,需要声明输入和输出信号的位宽(否则,将假定信号的长度为1位)。其次,在任务调用中,您弄乱了参数顺序。现在应该可以工作。