Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法6 L/ ]8 b2 Z8 o7 {& x6 o
我所知道的是,task 可以有零個或者多個宣告來使用
( m* X' N! U5 |5 i0 [" n9 b: ^# K但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
, `" {0 P/ }( \. M這樣的方式不知該如何使用?
1 z- o/ z: a$ d' R, N9 L% X0 X5 |; v! c! [
我目前是在撰寫用於simulation環境下的verilog code+ _# g* D  ^0 w6 H3 O
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份8 r6 f; E% _9 v; h7 [& c& W$ W5 S
那我該怎麼寫較好?
* j4 ]4 J+ B! c$ s5 r/ a/ y( }8 ^
6 o+ c9 }% i9 @+ K3 t引述一下 簡短的程式
0 \4 b; m4 L2 `  h5 v# d       for(i = 0; .. .. ..) begin: `) h9 i+ }- B, \- S+ T( n
        ... ... + a0 `2 x* [! ?! T6 l
       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);0 d7 D( d( H- b1 T, G# _( T+ o
       if (Status == MYNAK)  n5 Q" O+ C8 v  k% @
          printstatus(Status, MYNAK);( b6 j$ T0 ]- P  n, g% r
       else' u$ d& O. w. o9 ~
          check_udc_if_hshk(1'b1, 1'b1);% E* v8 R/ L! L% B
       #5000;
+ E" V$ U6 \# j5 r9 i! \    if(i == 1)  begin
" w3 B! Z+ a2 K2 g        #140_000;) B. N, V+ O9 E8 e
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?
1 Z) \# A5 X/ _+ e1 Q% T    end) |0 I7 H- }7 k# U( h9 u, H9 D& V
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 的帖子

自己回覆一下好了!2 [" |, h' j" z) E( g" P

, a* R" A: M+ i' Q: ~  q- w1 X我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
0 T8 o5 ?; `. U+ D7 Z' Aex:   ?, G: N* q+ `; f6 j; ?
input    clk,a,b,c;
2 }2 e  u2 c  e' o& R# j/ }" @output  d_out;
3 J8 c* F) B: D$ c8 u, G
3 z* l$ i/ K2 j9 J+ D! Preg      d;
; u2 F# O7 c7 }; b; C/ e3 ^always (posedge clk) begin' K1 d" M+ F% |6 `! c2 ^7 Q
       temp_task(a,b,c);
5 N) ~4 h; C" `% m1 \$ z) s       d_out = ~c;: l1 |7 ^* ~% w( U" T
end6 M/ s- U8 W, b! E' Q
4 y; n6 q! \9 h/ O+ h; m
  task temp_task;+ G( x* v" r+ [
     input  x,y;: J' b" V6 w! i- n) |3 p; v
     output  z;: b  w  M2 C  h% K" d
   
% a6 C! N9 U# j  @     reg z;* X/ K% h1 Z% }  k& L' {' D
         z = x + y;
0 ^: o/ d/ G* o2 z  endtask0 Q! `" R$ D! l3 ], G

: ]6 B) {& I: p$ n( P* L5 `, X* x. [那我的情況,主要是只做單純的task 沒有in / out
( o+ G5 C+ _. r  E8 v" Z/ ~6 K所以直接在simulation中加入task's name(ex:temp_task)+ |, b, Y  ~3 d6 M
等到程式直接執行到該行就會進入到指定的task中,執行程式..9 [# V) L3 s% Q' a- z

/ `. J  T9 l8 G0 k4 n# T這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@8 d4 T0 {9 p) b. q- D
答案是可以的
! e$ Y. W! u+ Z% _+ Etask也可以不使用local variable  P1 ^+ Y8 t% @5 [% y
直接也可以對golbal variable進行更動: v+ J% |' h2 f- `  G( Q) k# A3 W
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-5-22 12:14 PM , Processed in 0.115015 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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