Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
我想問一下有關task的語法$ k( g& ]4 p6 _7 ^9 c
我所知道的是,task 可以有零個或者多個宣告來使用! l; d1 O6 q# Q7 U* }
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
* P7 L: f+ T2 V8 g這樣的方式不知該如何使用?
/ H$ c$ [: v+ S+ q& e# {  I' z! b% B; W3 p4 R& h
我目前是在撰寫用於simulation環境下的verilog code% {) {5 u5 |/ L. ^- }
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
) b+ y1 y8 r' s3 h! F0 W那我該怎麼寫較好?
1 m: I* B% a$ M# i! l, k% o' c( D) H0 Y8 c1 p( E
引述一下 簡短的程式
! h+ p, h% @' p       for(i = 0; .. .. ..) begin# A. T/ Y+ n: l8 y, X$ J
        ... ...
% s+ L% t0 x7 y  \       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
5 _* O+ t+ l1 W  Q: _       if (Status == MYNAK)
) l& `7 U) i4 w  i          printstatus(Status, MYNAK);
  w. M0 ^' |5 R) A$ h" j3 }       else( O  A' C  g6 z/ z9 V- h5 `
          check_udc_if_hshk(1'b1, 1'b1);
8 B9 a9 n! o$ J$ w& E       #5000;6 j) o+ }4 j* h6 ]' I  b
    if(i == 1)  begin
/ t% u: E8 u; a        #140_000;3 F  Q8 h% ^. ]$ H, B+ z. n/ }
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?
# m$ _: D' ]2 g' [  Z    end4 R1 l$ S! |# Z, T9 t
end
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
3 b8 w% @. f9 Q. f3 M答案是可以的
- S* A! _$ \/ f+ s$ Ctask也可以不使用local variable
  E8 k# g1 a( H* L直接也可以對golbal variable進行更動  ~* b8 }' X" g) {) G+ r' o( a
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

回復 #1 greatsky 的帖子

自己回覆一下好了!* p6 G# T* E* B% `$ y
4 i; W. o" S: d# y
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
: b) q& w! F, g4 _' `' Wex:
4 H; H  h" j. f3 Qinput    clk,a,b,c;
8 N1 P5 V: d# [& Xoutput  d_out;* x' z/ G& E( [8 Q) G: c4 z

0 i' K% @& T4 z# lreg      d;# ?8 J  l' a5 s# ]- g, g
always (posedge clk) begin# r  x8 ^& b/ \3 \( m; F
       temp_task(a,b,c);' M/ o9 v5 t7 L% m1 l
       d_out = ~c;
. c. Z) e# T) M7 h7 E- Eend
2 O/ K6 C$ Z% W
1 R3 z1 c5 L7 j! P1 c- s  task temp_task;; l0 {4 d; e0 j8 F" Q
     input  x,y;
/ D" [+ @7 i7 x5 T     output  z;
- E) P( M; U* l3 A' s: ^   
0 ^) i& M+ y& y, y# }# @     reg z;
, E1 ]2 S9 `3 V9 n+ t% T/ }         z = x + y;
, r- c" f- @& P1 \9 G1 b  endtask1 `) u. K% p  y9 `/ _6 ?
& c* q! e) b( M1 u9 P
那我的情況,主要是只做單純的task 沒有in / out
1 S7 r0 v/ @7 M4 q' H+ L所以直接在simulation中加入task's name(ex:temp_task)
, R7 e4 u+ ~3 d9 q等到程式直接執行到該行就會進入到指定的task中,執行程式..
4 L, }  h. p9 P1 g! f0 `, B9 M( \0 Y8 W3 d! X
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

2#
發表於 2007-4-18 23:47:21 | 只看該作者
只要在initial 或 always的 block內 呼叫 TASK 即可以用吧

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-5-16 08:21 AM , Processed in 0.103513 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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