Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 10245|回復: 2
打印 上一主題 下一主題

[問題求助] 有關verilog 錯誤

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-12-27 13:54:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟我是新手  想把呼叫function函數改成呼叫task 但不知道是哪邊有問題會一值出現  希望高手們能幫我一下  
( ^+ D, G( A3 h9 H我猜應該是在always和呼叫連結不起來的問題  卻不知道如何下手
% p+ |8 V( F& Z& F" P! @, x5 Ancvlog: *W,FAAOP1 (shift.v,49|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].( S0 X" z$ h/ ~- F7 [9 M
output [7:0] mout;3 I2 {2 i& u( P; s6 R1 Q
                |3 D# d( @0 @# D
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)].% W: I! n7 v, n  d  }
multdiv8(right,indata,mout);9 G+ o7 }! i0 [. G( u! @) ^' U+ b
       |
9 p; I) {2 [; D1 e; l  F0 kncvlog: *W,FAAOP1 (shift.v,51|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
/ o/ _3 q5 E0 h; [4 z) s9 S, voutput [7:0] mout;8 s# D4 b7 \" {9 ]5 u; P- K2 }
5 z6 K3 j$ w* v) D
6 k$ L8 Y! S  r+ L7 u6 J  r
原本的code:7 t/ ?- O" X" R" p! P8 g! C
3 |  a% m1 d- R) y. o/ @
module shift(indata,qout,mout);
& d) y; U8 z6 j" v. L5 R% L. W" r) a- m7 o0 J/ A
output [7:0] qout;6 A, Y% a: \( O( W
output [7:0] mout;9 S  O4 f- `, |& q& q: s
input   [7:0]  indata;! b% a5 s  o6 y
$ v- n* C9 _+ ~+ B. I2 a
reg [7:0] qout;
7 w4 O2 u- C) K9 ~1 ]reg [7:0] mout;
: `& `" g2 k+ h! uparameter left=1;
0 o) X2 \" w9 n( t& hparameter right=0;( p' g. x  L( }3 |$ w
! m$ x/ K0 z+ _, P! V/ ?3 ~
always@(indata)
# e( {; P6 n; I( }4 S4 {
7 P! k. C+ z/ X& s' L+ f9 Fbegin1 R, E+ _9 Q6 l

/ O  D% `' M- R) Q! x( \: |mout=multdiv8 (left,indata);
! c1 k( R' |4 A) H" eqout=multdiv8  (right,indata);
& [  v) X! U* l. H
6 b& T9 L/ s+ R, cend
+ m1 e3 z0 _* B) v7 |) |, z" \. V. A% p7 B9 j$ |1 ^7 V& D8 s
function [7:0] multdiv8;
$ d$ X/ C0 x% @1 v9 ?7 L: P& l/ P/ k' n( u
input fcn_left :5 T" C# m3 t: q* a6 o
input[7:0] fcn_in;
6 ?) O/ B' h0 j, e; J, z+ x5 xbegin
" B8 E, [- Q9 a3 A6 W& n    multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);: k' @/ p5 P) V5 u& z) H
end& Q" R; `6 j& ~7 c0 p
endfunction
8 ?* H$ m0 D4 j/ S' T5 |5 Y. H+ a7 k# j5 O
endmodule
8 w. @0 w, |+ w' u5 M
8 U  Q6 s' D: ]+ G3 X6 }) I, g/ B0 F以下是我自己寫的
- n; K7 D4 C8 F# W& d; `  U
/ _8 ~& j' N6 i5 m+ s. Imodule (qout, mout,indata);2 _# {( s: p& b8 {
: i9 ~6 r8 C7 X7 o9 h
output [7:0] qout;' K$ @- N9 A( C: w5 q% I) `; y/ C
output [7:0] mout;
, r# V) ?" z$ i$ U8 ^! [& ~4 Qinput [7:0] indata;
; ~9 y' |' q( `5 ~1 @reg [7:0] qout;" j+ p+ B0 ~- W) z1 }" e
reg [7:0] mout;$ V; Z8 g8 F9 U8 L& W; y
parameter left=1;
+ U  W3 _, r" E/ U9 Q. E' x% fparameter right=0;
8 M, Z1 x+ I$ {; h7 J. {- g" q: M1 D! O9 }% U
always@(indata) begin
7 h) w; k" i8 {! \; t) p; @& u+ S! |% X9 J0 m: G& D
multdiv8 (left,indata,qout);
' G, k5 R3 z7 J, b1 n; hmultdiv8 (right,indata,mout);
3 \+ z% P' b+ P& J) P0 g. Q
5 R& y3 A: g& T  f; Oend
) X9 F) d. u' ^" _) v0 t0 a+ e1 Q8 O, \) s
task multdiv8;
( w' A4 r* W) Q; c/ Z: _  n0 M' o) Y, {3 H
input fcn_left;
/ U7 _+ F) |* z4 r/ C4 Uinput [7:0] fcn_in;
- C, `' R: {! j) P- x  Z* xoutput [7:0] qout;
; n, I# h) f2 |/ V0 Ioutput [7:0] mout;3 ~$ X6 a, Y. G7 N  M& f, H

7 V+ ~1 v- ^3 ^6 q9 Z* r9 `* U' U$ Q; L2 u1 E
if (fcn_left==1)
$ q/ _- Z& U% \# n! ^5 @qout=fcn_in<<3;, r! e5 _! Y. e3 H; o' P! V
else& T8 a; s* J2 k+ {% I% _
mout=fcn_in>>3;; s' y0 _+ s. Y% Y( J
" S  R& [' @1 K: l5 o+ h) X6 e
endtask $ q( V" Y2 H1 N1 o9 O, w$ ]
endmodule
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2010-12-29 13:19:41 | 只看該作者
you did not specify qout when you called the task, which is the error message tries to tell you.
3#
 樓主| 發表於 2010-12-29 16:34:47 | 只看該作者
我知道我問題所在了  task的port和宣告的port不一致8 W0 K5 v. j, g+ b2 p$ `) d
3 u" c9 r; N, L7 o/ X3 h! U) ?
要在task後面多打qout and mout 這樣就OK了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2025-2-24 12:44 AM , Processed in 0.159009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表