|
小弟我是新手 想把呼叫function函數改成呼叫task 但不知道是哪邊有問題會一值出現 希望高手們能幫我一下 0 K2 V$ M% F4 E
我猜應該是在always和呼叫連結不起來的問題 卻不知道如何下手
& m6 b/ R+ f) D }( oncvlog: *W,FAAOP1 (shift.v,49|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
& \6 M( q# t8 X1 t9 coutput [7:0] mout;
1 v5 e6 w- _9 U) |$ n& H |
- x! ] A6 s- Lncvlog: *W,FAAOP2 (shift.v,60|16): Formal output argument 'mout' is absent in the task or function call identified by the previous error message [10.2.2][10.3(IEEE)].& u" s: p, b& |0 K$ H4 `: o2 c
multdiv8(right,indata,mout);
0 q3 j: y2 J8 o; Z- X2 u, A |0 U2 p8 K e, p5 v
ncvlog: *W,FAAOP1 (shift.v,51|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
' x( @1 h ]' ~& p5 Y" O% boutput [7:0] mout;) e1 P" I- G- w, u% V/ @8 Z3 o
" ^) \& E; v+ N4 L7 h
( ?/ c; ^# c, ^& C' u) Q原本的code:" U+ A. T7 a3 X# ^' r( `2 _
# F5 ]8 k4 `4 v) R$ O& D
module shift(indata,qout,mout);
5 h8 N% O H4 W0 s7 `' n$ q' h# Q& B; R$ n2 J& U, h- \& |' \0 H
output [7:0] qout;
: @5 i4 b6 f* E8 Z" s2 houtput [7:0] mout;8 E. [' F( Y, g( ?- k) q$ [7 l
input [7:0] indata;: ~! U# m3 L0 t4 \8 F
* b8 c2 d% ^% Z
reg [7:0] qout;6 k4 g$ y% {9 q7 D0 ^
reg [7:0] mout;
* o7 `4 G _4 `) ]' A2 Q! |: c- t! eparameter left=1;
0 X* g* @; C4 J9 C) l# C9 Eparameter right=0;/ R9 t6 n. X8 i1 y" V# F
& t& k3 {3 y* g$ i& T4 ?always@(indata)
; s* [8 C; z& x6 o
' H; q0 @) o' H% {, Hbegin$ D& |" W6 z8 P" D% V4 X4 I+ g4 N- e
1 I2 o& U& @! @9 L' @% b3 N* ]& X
mout=multdiv8 (left,indata);
% g" |0 ^) Q) m+ R3 bqout=multdiv8 (right,indata);4 }5 Z2 P: O1 Q7 s4 Q
" ~) Z0 {( y1 T9 N0 l, nend
& W2 Y0 A0 Y+ n
; O" k3 i+ W+ }* B& ?) g7 _$ l g" jfunction [7:0] multdiv8;% I) R; g) X+ l6 C% P
) p) j7 y+ [2 I; v. J$ C8 F
input fcn_left :
`# \) C, B' w) ]7 Finput[7:0] fcn_in;/ Y3 ]% q5 ^1 Z# z! E7 e
begin4 t0 ]. {: e0 H6 g5 t! o
multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);# n3 x+ v6 K8 z/ Q6 W4 w* e% q* l
end% S8 i& K+ e; C; N( G2 W
endfunction4 Z6 ~4 x: g0 ^
: o) G, L% m8 n- H/ }
endmodule3 `' `7 H( U/ Y
2 b, \" v* |+ B5 k% r以下是我自己寫的 + q) `" E! u' C6 N( l& X) J5 f" `; X
( O0 S3 u. \9 T& {- |
module (qout, mout,indata);
% G( n; t' K9 m4 [& y# `% F3 v0 N/ g9 S6 e ~" a9 Q9 I
output [7:0] qout;
7 ^/ B; q' U6 h4 {" C3 V1 M) m) foutput [7:0] mout;
- \& k! _3 |* H% ]! @- ~7 M _3 a8 K7 |input [7:0] indata;
' k- ]5 s) F( ereg [7:0] qout;9 l9 T, ^2 M. y. P/ N; h
reg [7:0] mout;0 C4 H3 Z: c) h* e$ Z. c
parameter left=1;
5 N; _6 ]4 D% G" z0 Qparameter right=0;
0 r& c7 t$ a4 o) u% Y
3 v+ M7 |8 c/ N5 s d* Halways@(indata) begin( L4 e# W7 M, k2 [5 u- r
/ s+ S5 b( K; K% Rmultdiv8 (left,indata,qout);9 d$ E2 U- y7 _/ T
multdiv8 (right,indata,mout);# b# i) m+ f2 f% F3 `; H# s* w, r
. [3 [1 g. f, w2 e2 H' Bend; R8 B9 G+ k! o8 G$ U
$ U; d! b* R0 n; c, L- X7 [task multdiv8;
5 ?: Y, ]5 h& Y$ k" y- H. ~+ F: F
input fcn_left;
n5 K1 S7 h' m- oinput [7:0] fcn_in;
* L% p \6 C+ _3 f0 U* L" `2 }! ?output [7:0] qout;
! m6 n* t- I; E" X7 ]5 voutput [7:0] mout;
9 W7 g! q+ D4 \' K E" q9 [! O: j$ S' w2 w
2 Q( I% x# U2 U6 U( W
if (fcn_left==1)
, G7 ~6 i. }; v! y1 k0 k7 R$ fqout=fcn_in<<3;& c/ m6 o4 K, O: j1 ?4 [
else; w! a8 e7 d! y, j
mout=fcn_in>>3;& [: ~7 A5 }% O' t# U9 ^
- {+ q; y1 ?6 o* e% m/ U$ @endtask
9 e9 t4 l7 ~5 }, [& Wendmodule |
|