|
小弟我是新手 想把呼叫function函數改成呼叫task 但不知道是哪邊有問題會一值出現 希望高手們能幫我一下 6 ^) ?# [9 {3 K+ k2 B3 ^
我猜應該是在always和呼叫連結不起來的問題 卻不知道如何下手4 h& v) [3 s4 K* l7 x1 z
ncvlog: *W,FAAOP1 (shift.v,49|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
5 a; b5 {: r; v7 ~+ houtput [7:0] mout;
: s+ ?1 u8 p& g0 A" h. A7 n9 Q" ?( V9 {& l |5 f9 C, g5 v" C: P/ x: K
ncvlog: *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)].1 m2 ^; j8 M8 _$ s* Z3 X4 H' p+ e/ Z0 i
multdiv8(right,indata,mout);
3 [% M: W$ B5 p, M |
8 e4 J4 J; N5 m# Y/ {ncvlog: *W,FAAOP1 (shift.v,51|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].5 f9 S% s4 ^- K. ?6 R" a# M1 @
output [7:0] mout;1 w6 f2 |- y9 K R6 G* T2 e4 ^
/ k: w+ ?* m9 f* m' H
0 ]+ v [8 ]+ x6 w原本的code:; d. I6 ~9 i) f
+ k! q G+ y' R t6 Wmodule shift(indata,qout,mout);
, j$ q, e# X( Q+ ~- F9 {3 E* M5 U; u
output [7:0] qout;
$ I3 ?% ?1 t y$ S8 Poutput [7:0] mout;
/ |) w0 z* z0 M; [2 s4 J Y4 d& yinput [7:0] indata;$ s7 Z( D( r4 \7 Y& U( R) `9 x
4 @! D- ?, A/ `# W- Y C, \. Ureg [7:0] qout;
7 O4 d: x- u5 u7 v8 D7 J+ yreg [7:0] mout;& c9 c, R) [& S j% }* p
parameter left=1;7 z5 P. B9 J! ~" v$ [, {3 H% ?
parameter right=0;
* a, G) i# v$ k& s8 p
2 y9 ~# j+ g' I, q1 o* {: balways@(indata)
S6 n0 Z5 B2 y5 J- W. s
0 C% u0 @2 ]. W$ A5 |. U0 ~begin
7 W, a* Z4 T* e8 _
% v/ [4 W* y2 d6 Umout=multdiv8 (left,indata);( z7 Z: {$ [/ h2 ?
qout=multdiv8 (right,indata);
6 p; @# D( t z8 I# u3 i0 V' `9 o9 y1 `5 r/ Z
end) @: V" n3 v3 X3 A5 k
6 B; q9 G1 B1 h! }$ Z) B/ k
function [7:0] multdiv8;) B8 N8 B& F4 b0 K
# k. y/ z& }" p1 o# S* z- _
input fcn_left :
1 g" N% R1 m) Binput[7:0] fcn_in;0 j5 V; E4 R$ G! e0 a k0 C* w
begin
% Y+ E3 i0 i" X& O ]$ _( T multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);
6 B6 }: U. k: [% Bend
+ q; s8 V' c& Z+ A: X; F5 S: rendfunction$ i4 @. q9 Q& `1 z% {( K
$ s) m7 q2 ~+ m$ R" i
endmodule( u5 ~, G( O8 }) {
$ H7 r2 O; K- P& _# V# {5 K! x0 y3 ^以下是我自己寫的
: p1 e6 n2 O# i3 I, L1 W$ |( T. f& g* x$ u
module (qout, mout,indata);& r: _. r2 i2 J- x6 ]
3 P# s. k) Z/ T
output [7:0] qout;
4 x& G# k s9 Qoutput [7:0] mout;& H) r' Q* M: }
input [7:0] indata;
9 S% |4 a3 k7 Z$ jreg [7:0] qout;- W! [$ c+ P% @, X6 m- C
reg [7:0] mout;9 O% [7 Z' n; h' o6 q
parameter left=1;" }2 z8 T) Q4 J+ c# ^( i+ I
parameter right=0;( [# @+ _& @8 ?
2 ]( y4 Z: H d2 h) jalways@(indata) begin
$ Y' B+ F! E2 B/ m6 A* `. ~ f6 T3 j
multdiv8 (left,indata,qout);1 i& E7 T6 {0 G& O+ }
multdiv8 (right,indata,mout);
7 g) K. z- P0 L5 ~- n$ _: Q
0 S* ?4 T$ O9 V8 Cend1 M/ M& |* w: v6 X
2 R& @* d/ w# Q. Q/ ^$ ^. ~% o
task multdiv8;. U. V8 @$ W' x+ ~8 c
% ?; i" Y0 m3 O+ c
input fcn_left;
& A; x" [% \& P; _% F4 h1 a; S, Jinput [7:0] fcn_in;1 N3 [8 b. B9 [9 J+ B3 I
output [7:0] qout;% J0 x' t" M9 y ^- G
output [7:0] mout;! o/ z% I8 b! k# s$ P; Z
+ Y+ D. s5 f& D' y+ S. y; w, C3 N Z( T3 C$ N7 r8 H- [
if (fcn_left==1)
2 }5 ^; u. }# y3 oqout=fcn_in<<3;6 \& a$ |" s% }2 p2 I# ^
else1 a/ [. C( z% r* X
mout=fcn_in>>3;( Q# E/ Y& t. l2 m
# [' ?& t1 R; y0 B- I
endtask 1 B2 X0 K# ]: e. Y9 b
endmodule |
|