Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法' G7 M7 s7 A" l
我所知道的是,task 可以有零個或者多個宣告來使用
& j7 b+ }( J& O! W# A# g但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
( L% h2 W3 W% R1 K這樣的方式不知該如何使用?' ?) q1 i! E* e8 K$ W

6 L) i  R7 R& W1 ~; E' l我目前是在撰寫用於simulation環境下的verilog code
0 }  X4 \/ z$ M: J+ g  p( Q/ A, \4 V那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
  @8 u& p& Y6 m( G$ d& x那我該怎麼寫較好?
% A) T- _% w+ e0 e" {6 V* c' v. P) m/ C
引述一下 簡短的程式
3 [% x& H1 ]  d/ E* \& a       for(i = 0; .. .. ..) begin8 F- i$ E# ^/ H! k  h2 p$ F( A
        ... ... : F. M4 _- a3 Z4 W' b
       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);& z! d" h8 u/ Y/ f+ h7 ^
       if (Status == MYNAK)! V9 F& e1 v2 Z. O2 X2 h
          printstatus(Status, MYNAK);
6 J8 t8 E" U" H8 P5 y# `: a       else) R4 }1 u" k$ |6 C+ d: g% g
          check_udc_if_hshk(1'b1, 1'b1);
( J# W& v3 }0 Z- v       #5000;& x% e( n0 {! Z! V
    if(i == 1)  begin& Q2 S6 S7 a& U$ y% ^3 U* P
        #140_000;
" P+ a) ]8 n" l8 B! ~/ Z2 j     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?2 m  s' ~8 t( m7 M. O4 t; x
    end
: @9 Z) N5 y; y+ _" ?- H3 ~  Aend
分享到:  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 的帖子

自己回覆一下好了!
: h7 d/ l# o% R6 L/ j
( Z. i, X1 v9 q- _1 }+ G我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
" d" U5 ]! j, M& _* u# A. Hex: & z) k0 U& M3 V
input    clk,a,b,c;
$ d2 G( s. @4 b  s* Goutput  d_out;7 R7 x* t) m: S8 O& Y" A, B* E4 [! n

: T% _( X4 l- ?: u- `+ sreg      d;  C7 }0 b, q% \0 T: e  O7 O' u
always (posedge clk) begin- k: B) K. ?; q  a& V1 O
       temp_task(a,b,c);( g  d  _* t5 `3 `
       d_out = ~c;2 _# h7 O/ M2 B" A8 B6 Y
end
& x& k2 z" y; G- w  C( U+ }) k. }, r5 L3 O
  task temp_task;
5 M  A* K  i0 d8 R8 ~     input  x,y;
# t: b) i1 z3 c1 T     output  z;
, ~8 P9 E, M; Y2 w8 B7 F# F; a    % _+ ~+ g0 ~# u& \% c( }5 h2 V
     reg z;
1 _9 V: C3 s2 M! I         z = x + y;
7 X5 L2 ~7 z! r; T2 D8 N  endtask1 D5 ~# u- G3 T- R: G2 m" I

; k% g0 c! v: `那我的情況,主要是只做單純的task 沒有in / out" K) C5 ~3 Z& a& P
所以直接在simulation中加入task's name(ex:temp_task)6 F6 S+ n3 D1 {8 g9 Z% Q; C/ s
等到程式直接執行到該行就會進入到指定的task中,執行程式..- N, j8 H. S1 h8 M: l: ^) m% d: N

( m/ |' ]- }3 T/ N這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@; j. ]* g/ M: h5 [9 @+ |
答案是可以的4 D9 O9 Z) X  n" M' s# j  p
task也可以不使用local variable% I3 z; F( w5 V4 o
直接也可以對golbal variable進行更動
2 q7 q- N$ b  Z* @. |但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-5-15 11:12 AM , Processed in 0.110014 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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