Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 想問有關task的語法?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法$ b& Q% w7 j; A) y; r, p
我所知道的是,task 可以有零個或者多個宣告來使用0 z# R5 L7 r, S7 f. X- |  [6 F
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
8 R2 `* z' W' j5 ~$ r9 i+ D這樣的方式不知該如何使用?
* E0 [8 ~( e; r+ R6 j& @" j' W
我目前是在撰寫用於simulation環境下的verilog code3 A: S3 I! n2 [8 h5 t
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份5 o8 t+ a, }, o! ^$ V, b* ]
那我該怎麼寫較好?7 b9 v' \" o, N  e& @

4 g: }  j8 y7 d6 n) f- ^引述一下 簡短的程式: y+ i9 d8 n+ @- K& |
       for(i = 0; .. .. ..) begin6 m2 b8 @* G9 E. c  G
        ... ...
- C6 c' V& c; f& K- q' P- K: d       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
3 n( v$ p/ k  G! y       if (Status == MYNAK)/ m  O  `, D& Z+ e. z% O) @
          printstatus(Status, MYNAK);
1 d# R/ }( O; W" t* u5 @       else
/ o" e! |' ~0 m0 q9 a8 q; k9 V          check_udc_if_hshk(1'b1, 1'b1);
7 N' b$ a4 d7 k3 L: o       #5000;
7 `% _! n2 V/ @    if(i == 1)  begin$ p$ @# l6 a7 S1 X6 n
        #140_000;' k1 L" l2 r3 }$ x6 V1 x
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?! t6 q; |. U  {* g! ~- G% g! U( ]
    end
' _0 o+ i. |+ N' b/ K. ?end
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-4-18 23:47:21 | 只看該作者
只要在initial 或 always的 block內 呼叫 TASK 即可以用吧

評分

參與人數 1 +3 收起 理由
greatsky + 3 感謝指教啦!這部份自己有嘗試出來不過 ...

查看全部評分

3#
 樓主| 發表於 2007-4-20 17:29:40 | 只看該作者

回復 #1 greatsky 的帖子

自己回覆一下好了!$ R1 \4 _7 M% s+ h  ~+ x
+ E- r% p# m8 M5 f: _
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
# y- L% M' p9 V- Sex:
; [" d9 X! ]9 i/ p* Q0 vinput    clk,a,b,c;
. F3 G* }: m5 e( w& coutput  d_out;
( @3 Y4 r) h% H4 u" Y0 M  w" I: k. {) M- m& j) W
reg      d;
1 Y# B0 N( G$ O, ]- Q' B2 Galways (posedge clk) begin
7 P0 C" g, n. c! Q2 S. f: `. x( D       temp_task(a,b,c);& R2 E" i$ X6 W! [1 b. R1 V
       d_out = ~c;
' P  \3 ]3 i7 `# yend! S" ~$ W/ x! u3 e  }" F

7 ]0 ~( z4 B( c/ t# D5 ^" ?8 E  task temp_task;/ m0 w9 [6 K! i7 I$ ^
     input  x,y;
$ s+ \$ _6 h0 w     output  z;1 c8 O4 V9 Y+ B8 [: ~- Z3 I! d
   
+ ?5 x  e' U6 c$ v' m& c. a     reg z;
  h  Z: y3 d) Q4 H8 p' a- ?         z = x + y;
7 E7 Z9 [# V7 ~' B3 Q4 B3 Q) H' S  endtask: r+ @5 e( \: J0 _4 a- g, z
1 Z% E7 a, _+ g+ \  |3 W* y& {
那我的情況,主要是只做單純的task 沒有in / out
7 P) u7 \) N* ], q* i所以直接在simulation中加入task's name(ex:temp_task)
. i4 J; ^) ]4 k5 s+ y等到程式直接執行到該行就會進入到指定的task中,執行程式..2 m4 b4 t  |7 ^
( ^8 M( t: d3 `4 f; L9 [& u7 B
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

參與人數 1Chipcoin +3 收起 理由
masonchung + 3 勇於求知!多問多看囉

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@" L8 j8 `  X7 ]+ p9 K0 G/ e2 K
答案是可以的
" i9 b! Q* P" C3 `+ N  ?task也可以不使用local variable  l+ c7 t% O4 f  w+ L
直接也可以對golbal variable進行更動! u' ^# {6 Q/ I! t7 t
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

參與人數 1 +3 收起 理由
masonchung + 3 熱心回覆!

查看全部評分

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-23 10:33 AM , Processed in 0.103513 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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