Chip123 科技應用創新平台

標題: 有關verilog 錯誤 [打印本頁]

作者: laasong    時間: 2010-12-27 01:54 PM
標題: 有關verilog 錯誤
小弟我是新手  想把呼叫function函數改成呼叫task 但不知道是哪邊有問題會一值出現  希望高手們能幫我一下  
3 h! p7 C! v! J我猜應該是在always和呼叫連結不起來的問題  卻不知道如何下手
7 b* S2 B. M0 r+ Pncvlog: *W,FAAOP1 (shift.v,49|7): task or function call does not specify all formal output arguments [10.2.2][10.3(IEEE)].
$ D6 D! O. M" R) ~% C1 C% C4 g$ zoutput [7:0] mout;' Q% |1 v( O2 v2 X" r9 B) Z' W5 t
                |
: q% ]: V3 h1 p! |" d- m) H$ B; |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)].
  N9 I. d. k* E9 {- A: y2 wmultdiv8(right,indata,mout);
" L# V3 D  f: Y( Q  ^: v1 K0 p       |$ z6 q: d# G: y, |' |. j$ 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)].1 x# ^% P# |- b/ T& o/ ~$ q, M
output [7:0] mout;
, c( z$ r7 Z* ]/ s! ~! b! d, E8 E6 t& F8 X3 Y3 K. s/ ]& G
4 f& R3 g( a, h7 M% p: W
原本的code:- e$ n) d7 k0 M8 M$ c
$ F9 w/ N+ ~0 u# |# b3 o' @
module shift(indata,qout,mout);" |6 r$ m$ q/ y: p2 k
4 A( W5 D! S" L$ Y7 M! `
output [7:0] qout;+ h* [0 Q. `' T* @3 {
output [7:0] mout;8 S- d% O/ L) M# p
input   [7:0]  indata;5 O7 b& c2 w' `: X5 ?, Y0 i% ~
5 T% B0 d0 h# j; }# V6 C
reg [7:0] qout;. ]8 w; F' ]- L# H9 Q* F
reg [7:0] mout;6 r  o/ [% w& z# o# {
parameter left=1;
1 P% ~+ p7 m" Nparameter right=0;
9 n: f8 `; T  S+ X9 f! o- {! W. [/ y2 N6 z+ L
always@(indata)
/ T: x0 q* t, y# S
" Y+ j% Q! x0 U. t. g) s7 ibegin9 D. X. ?& o* g1 u

' s  R: T# J( m: Y; {2 Fmout=multdiv8 (left,indata);$ U3 D* a+ A. y
qout=multdiv8  (right,indata);
4 e+ p  ~( M& ]  r* ~
6 `8 v6 V. V" S& q) ~& z9 jend
$ E. V7 J: t( Y9 h$ F
4 j) t* i1 q2 s1 L* t" x. |/ wfunction [7:0] multdiv8;
; O3 m& c* B- Z1 O1 b
6 C3 N9 u  d& |4 Ginput fcn_left :
1 \$ b  |# V  M; P+ sinput[7:0] fcn_in;7 z, d5 Q9 x$ R9 W) C
begin: }) d7 R/ W% Z# b" p0 {1 G
    multdiv8=(fcn_left==1)?(fcn_in<<3): (fcn_in>>3);
6 t9 R! g& R# E* _. V& k/ ]end
2 A3 _  N+ ]4 @endfunction
6 e; t6 _( O5 h5 K/ G: x8 j
1 D1 w' ]- z/ J3 }0 cendmodule
( d, [' l; i2 x' v( G: o1 i' ]8 v$ x
以下是我自己寫的 " e9 K2 E9 w: r

+ Q  g4 K) `& Y! d3 Jmodule (qout, mout,indata);$ C1 z0 s$ @% f" J2 H9 B% T0 t

0 }/ Q: |( K" Xoutput [7:0] qout;
2 V5 g6 _& b0 |6 A) E7 M# `! loutput [7:0] mout;: a7 q# j- \/ B. h1 T
input [7:0] indata;$ x" t  Y( X) {
reg [7:0] qout;4 g$ D/ B: k# i
reg [7:0] mout;
- F2 o( i6 B0 G! H4 L$ `2 w1 jparameter left=1;3 c& q* x" a: R: P
parameter right=0;
3 p( j' {. ^9 [! W9 P
. y" U4 M) m' O" Kalways@(indata) begin
: m4 _7 u8 f! s7 B% d: x: d: P% V0 \" E' ]
multdiv8 (left,indata,qout);; R5 S& Y  O5 D+ s# L+ n+ Q' D
multdiv8 (right,indata,mout);% z! |3 I  Z7 X! c

7 n) ~1 u# f2 X8 ]" h8 iend, h+ d& Z  k- J  L1 N
' F/ ^  t0 P+ v+ _* `( r
task multdiv8;& ~+ }5 L( T2 w4 @5 {

4 s: O5 N9 T& s7 r3 zinput fcn_left;2 e2 B9 `" J: X6 i
input [7:0] fcn_in;
: l8 _- E# \/ e( H: Ooutput [7:0] qout;3 \+ u" m' }- W. M  r+ I$ C3 k" G
output [7:0] mout;
; Y6 r1 _+ N$ Y' W9 p! k) e+ U! {8 T9 ~- \2 r3 ?8 [

7 K$ I! U5 N  d! T$ `+ [if (fcn_left==1)# F4 z  x$ e) H: i* |
qout=fcn_in<<3;
0 A8 w4 g3 V& \3 f# X' r& Jelse
& y4 B4 Y7 S! n5 Wmout=fcn_in>>3;; A1 T+ L" ?* L( m
; v  c  X# G1 y
endtask
% T7 o+ l* r6 f+ e+ w, Wendmodule
作者: chienw    時間: 2010-12-29 01:19 PM
you did not specify qout when you called the task, which is the error message tries to tell you.
作者: laasong    時間: 2010-12-29 04:34 PM
我知道我問題所在了  task的port和宣告的port不一致
' s4 |6 {. ?" @& U! O. ~
$ p6 k  E% ?1 U0 q% n  ~5 c! @3 c要在task後面多打qout and mout 這樣就OK了




歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2