|
小弟我是新手 想把呼叫function函數改成呼叫task 但不知道是哪邊有問題會一值出現 希望高手們能幫我一下
$ j; U( f3 z6 n- A3 e+ a( v8 u我猜應該是在always和呼叫連結不起來的問題 卻不知道如何下手" [9 `9 ]9 t+ a3 R0 v
ncvlog: *W,FAAOP1 (shift.v,49|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
4 E# U, T+ ^% o9 `5 Woutput [7:0] mout;
' l- \# _$ L1 P0 ~7 k/ z- x! U |
5 ~) e$ S- o8 Cncvlog: *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)].9 p& r5 M6 C1 y4 P6 T) ~( a
multdiv8(right,indata,mout);
7 V4 ~, k7 ?& ^ |
+ R" C3 c: ? Y2 [ncvlog: *W,FAAOP1 (shift.v,51|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
1 a* h8 c( F. u* D! d4 I) p) ^output [7:0] mout;3 g* T. s( ?+ E9 N/ N! F
2 j. ^7 A6 @% p/ B' X6 ^ c6 \; ~* L
原本的code:
- r. o/ W- M& H, g! q5 |; ^
* Q" E; i" I8 }- U% E1 c" wmodule shift(indata,qout,mout);
% t$ v6 q1 B+ [& I, ?2 m) P$ X) A9 K0 i7 `6 i! d
output [7:0] qout;* n- J, O4 _' {9 H
output [7:0] mout;( r1 X) k% g, H* ~1 `
input [7:0] indata;
9 W$ m: k* G5 U# V, O8 G/ d6 p- }+ U
reg [7:0] qout;2 }) e8 }% {* D% [6 x/ b: W- a
reg [7:0] mout;/ C# R: N6 B+ F
parameter left=1;
! D( K$ m u* X7 Tparameter right=0;% V9 y& P% K$ z7 H4 Q
" _7 R+ G& R4 \& ~, [' Balways@(indata)2 Q% T9 a. ^3 F, D
+ d0 s S E$ N" C% J; l4 mbegin1 s- P5 g; a# M+ I
$ W- Z% ?* D/ t8 H. U% ?& |
mout=multdiv8 (left,indata);
6 R# b; V; s6 l- V: f! v2 lqout=multdiv8 (right,indata);) h+ |+ X7 L. {, I2 \# B
* E2 t1 B5 A- Eend
5 x/ c) w) ^, L/ S5 Z) b, ?
9 A9 s( ~6 H3 t: }function [7:0] multdiv8;* a5 j- E, R- h: Y0 N4 y
x& X! M6 L; {: X9 \input fcn_left :. l: G3 c( d. v' K' P! @. s
input[7:0] fcn_in;' M0 z+ a- {4 E" D7 l4 V! @4 B- Y2 \
begin
4 T8 E! O8 N+ V2 j multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);; v% s, U7 J* K: E( v
end
" L; u+ g2 Q# y( m- F& w' Vendfunction
1 \9 o! P: N' V9 T
( |' I, ?4 V, q2 a, iendmodule
+ O- K+ r6 E0 M7 l
( t% o F+ G; Z: q) q以下是我自己寫的
! \+ Z6 q1 Q3 ~& o
" X/ n2 m( G7 K I# gmodule (qout, mout,indata);
+ k7 Q) u0 I# W, N
7 p; p$ [3 X# S, m% |# ?3 n7 D# `6 poutput [7:0] qout;
+ G/ M: m" x. {output [7:0] mout;. Y+ }# B6 w( k/ G+ p3 m- K
input [7:0] indata;
! C$ t4 L% ^% G6 R2 Y0 s0 K" Treg [7:0] qout; N! L9 `4 _/ G; z+ ~3 S
reg [7:0] mout;" `" k8 y$ m0 x
parameter left=1;2 N& S" p7 T8 ^' Q" Z
parameter right=0;' B m+ {' V6 }: G7 n$ X. `8 f
- }% K7 g) q7 oalways@(indata) begin7 U' e( L& f( ?( m/ R
: v4 p. b2 h* }6 ~9 U: g$ @, h/ Y7 \ Zmultdiv8 (left,indata,qout);( K! h9 H! p4 ]1 p! h& R4 l$ P
multdiv8 (right,indata,mout);
, Z. H$ H; r6 b& d- s! L8 S* T4 I5 m& \
end7 a5 m0 i8 ^) X6 b
; O8 @# d% Z5 R" f+ d7 g4 @# E! Ctask multdiv8;/ J" D" d, n3 v, m5 c5 F
( f& L$ w7 Z+ s' F
input fcn_left;
2 N5 m# {& l" x8 b3 E. Minput [7:0] fcn_in;( _7 m! _; y+ [8 V0 J
output [7:0] qout;$ q* t" E2 m$ r E G4 |) ~" O* a
output [7:0] mout;
# B& h+ l2 {. Z1 T1 v0 `2 i$ p1 L, K' G
' Z0 c& I' L- xif (fcn_left==1)% h2 p* e! O5 ~
qout=fcn_in<<3;. G& }4 t4 j* I; }9 U
else
9 Z+ |% H* Y0 J8 `; W8 @mout=fcn_in>>3;
T' W/ c6 H6 b2 K, Q& Z; V* H" A
1 I- V9 E% b* [: F7 ]/ Aendtask
8 g$ U4 M4 g: J! b! ~4 Nendmodule |
|