Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法
0 u9 B3 B3 ]- M我所知道的是,task 可以有零個或者多個宣告來使用# T4 k+ Y& L' u, ^$ ?# I! F+ D, @
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
* ]# |6 [8 K! q$ {- B這樣的方式不知該如何使用?; d8 Y& L/ d2 O9 K$ M

# p, I" t# y. f# {. C! D% m我目前是在撰寫用於simulation環境下的verilog code
# H# R. x$ Y. \& ]1 L! F- |! X那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
( Q3 N9 g/ Q5 {( h/ F那我該怎麼寫較好?$ W8 t* E, T  ]( B( c

9 j. x1 O3 h0 s# _' C引述一下 簡短的程式0 `. m$ s8 {( a2 r; P# F
       for(i = 0; .. .. ..) begin
+ M* a  A  K' L. s. Y# _        ... ...
2 J( r  c' ~" x8 Q* h& }       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);; n0 M: i" u; _, t
       if (Status == MYNAK)4 T- m, S3 m' X- X- J7 C5 J
          printstatus(Status, MYNAK);
0 a  H3 B" }9 Q7 P, K       else
8 J; u, G! j! _4 R          check_udc_if_hshk(1'b1, 1'b1);& b" Z( E% l* ?9 F
       #5000;
: @/ [; x( V* ?9 p. k    if(i == 1)  begin8 m* X) `, ]7 V8 p# [: n
        #140_000;
' _3 C8 {6 n4 P3 A7 J5 C; ~     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?) S1 z5 e/ y, k: I1 j" W4 Z/ _
    end
# |3 V7 }3 n9 _' `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 的帖子

自己回覆一下好了!
5 g* p. {$ l- b( q3 c1 N0 S3 A0 j' d% W9 z8 t! M
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出) l+ w* }2 L8 ~9 O7 n. O- h
ex:
& i- V' y9 W1 [9 x+ M$ d' vinput    clk,a,b,c;
$ }) O! Q! V" Q9 D" E/ h* Boutput  d_out;, a2 c, r; w; R( Z

! t% o; n/ @1 i  K$ }reg      d;
+ h: H5 P/ `4 n9 ~always (posedge clk) begin& \) ]0 Y% d% F  k, I9 ~' s
       temp_task(a,b,c);
2 C5 m8 j7 C; m9 g( h. V. v       d_out = ~c;: K( |) {9 A  p. j
end( C. T; Z8 I( \8 G2 v; {; g  a

: N+ T6 A. u. p# T2 N! C  task temp_task;
' n. _  a2 ?6 g8 X     input  x,y;
; c" @" f. g5 ~, g4 T7 H4 E     output  z;
4 h8 p- g( l* S! ?    $ l7 [/ l: O: z& |' I
     reg z;; T; i2 z4 m' S6 e1 n( b7 h' M
         z = x + y;
$ a3 J: a) X; f  endtask- p" Q, g7 u, r* s

* V' N0 O6 b6 _/ f' f% k那我的情況,主要是只做單純的task 沒有in / out  R: K' [, h: C5 h+ W' ~) B
所以直接在simulation中加入task's name(ex:temp_task)
4 U% u4 @5 X) x1 z+ Q9 n' Y4 V等到程式直接執行到該行就會進入到指定的task中,執行程式..
8 L* g( \7 [* l* x* d! v7 u" f- ?' h& c" [! ~( G1 G% G1 Y' \
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
! }& C/ w: b$ p" ?) m/ e/ L, ]答案是可以的
( M3 |/ a8 j6 i) k, Otask也可以不使用local variable; x2 S* P- P4 C# I1 e& \: X% P' v
直接也可以對golbal variable進行更動7 D+ P) `( y% r8 x7 J. h
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-4-29 07:31 PM , Processed in 0.108006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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