微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 哪裡verilog code有錯誤

哪裡verilog code有錯誤

时间:10-02 整理:3721RD 点击:
小弟我是新手  把呼叫function函數改成呼叫task
原本的:
module shift(indata,qout,mout);
output [7:0] qout;
output [7:0] mout;
input   [7:0]  indata;
reg [7:0] qout;
reg [7:0] mout;
parameter left=1;
parameter right=0;
always@(indata)
begin
mout=multdiv8 (left,indata);
qout=multdiv8  (right,indata);
end
function [7:0] multdiv8;
input fcn_left :
input[7:0] fcn_in;
begin
    multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);
end
endfunction
endmodule
以下是我自己寫的
module (qout, mout,indata);
output [7:0] qout;
output [7:0] mout;
input [7:0] indata;
reg [7:0] qout;
reg [7:0] mout;
parameter left=1;
parameter right=0;
always@(indata) begin
multdiv8 (left,indata,qout);
multdiv8 (right,indata,mout);
end
task multdiv8;
input fcn_left;
input [7:0] fcn_in;
output [7:0] qout;
output [7:0] mout;

if (fcn_left==1)
qout=fcn_in<<3;
else
mout=fcn_in>>3;
endtask
endmodule
哪邊有錯呢  麻煩各位大哥大姊了

check the number of your task's ports.



    function会返回一个值!
应该是 out = func_name(in1,in2);

task只返回一位的东东 你那不是八位么

    task不返回值

sensitive list

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top