Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法1 l6 U* T% O/ O% i( s7 d# p! Q& Q9 V
我所知道的是,task 可以有零個或者多個宣告來使用
( o6 L: W) |4 i但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中 " Y; f& y4 _) X/ _8 w' f8 g( A) m
這樣的方式不知該如何使用?1 ?- b3 A& D; L# B! _9 v
3 J( G" n5 u3 k% a8 e1 o
我目前是在撰寫用於simulation環境下的verilog code/ n# z- z0 P) R, Q( y
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
$ c4 {! f2 m6 D$ N8 J9 T那我該怎麼寫較好?
4 O0 f* A( q- k/ d
9 l9 o+ Y( E! t引述一下 簡短的程式
+ U, L9 f8 s6 v       for(i = 0; .. .. ..) begin6 W: n$ @) R0 m% G; v' E
        ... ...
8 e  }7 S; M. s; H6 D       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
# H* {2 q& ?3 d2 h) e       if (Status == MYNAK)2 s9 T. D6 U- k/ X$ X& T" Z" k
          printstatus(Status, MYNAK);6 L# K  o/ w9 ^6 D6 Z
       else5 y9 N& ]! q. ]& A
          check_udc_if_hshk(1'b1, 1'b1);
5 U' l0 L5 S# w9 m" K       #5000;: L) d) v% _( L
    if(i == 1)  begin
5 N* ]4 n9 x% l/ w( R        #140_000;
, ]1 F- H: R9 k/ f# k     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?+ K# I/ I' |# d9 R. a
    end
5 K8 n2 u( b% A7 @0 }6 G' lend
分享到:  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 的帖子

自己回覆一下好了!
- z8 t2 C2 _- B+ n: p1 H5 [+ q) ?( w. ~" q) h% l' k
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出6 s) e) O; O* C( t) t* y
ex:
; T# [& L3 u$ @1 v& }input    clk,a,b,c;
! E! z, d$ X. U9 g2 ~9 c) L! Goutput  d_out;, ~+ E7 ^  s: ?7 H& ?

! V# g5 ]! v) |  ireg      d;
9 a; |8 s  X0 L2 W/ d7 x9 B" palways (posedge clk) begin. v8 I" j: ]; _9 I. R8 X1 X) [
       temp_task(a,b,c);  b- e* u5 v0 p6 y
       d_out = ~c;- K  B0 [6 u( U% h) e) I
end
1 v/ G0 P+ @* `; y3 M  S
1 N! Y: u/ |0 s% p- ^  task temp_task;
, b1 f, _: D6 P- S     input  x,y;
5 q2 @; g, ~/ S1 I  e# ?8 S     output  z;
  S9 n  l; @1 z! ]+ o0 f. K- ?   
( W$ R0 x) o: v$ X6 H! W5 q. O$ `. t     reg z;  p& M9 Z& y  N
         z = x + y;
# i! A/ \  i" y! ~, b  endtask
: A/ ~; a- e" R' w% A" i+ E8 z/ q: l6 O  o+ q  [* w
那我的情況,主要是只做單純的task 沒有in / out
7 h4 B4 L! }- |2 R所以直接在simulation中加入task's name(ex:temp_task)
1 o6 H) R" H  i4 C1 u等到程式直接執行到該行就會進入到指定的task中,執行程式..
5 h+ Y  T7 Y9 K* K4 S4 Q; M
7 w% U% M! x4 `0 q6 r" I  p" ?這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
) z0 f! a* G. V5 q' A. T答案是可以的
5 X* W$ A& d2 b' ~task也可以不使用local variable- l9 }+ a+ o1 \1 X0 n7 X
直接也可以對golbal variable進行更動
. w$ X5 e. {+ a- ?2 f' t但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-6-13 10:59 PM , Processed in 0.116515 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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