Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法: K1 w/ h& P/ z- {5 J5 p6 l: r
我所知道的是,task 可以有零個或者多個宣告來使用
6 d+ x# ?6 }( f' {但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
- O! ]6 x! H$ F  s; |6 }4 ^9 V這樣的方式不知該如何使用?
) t- |. ^" S) O2 X8 e7 ~* j; f2 O3 k8 r9 f& s: C
我目前是在撰寫用於simulation環境下的verilog code
5 S. C# r8 R8 I! I; B那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
# H0 g" T% f3 x+ L, }9 I那我該怎麼寫較好?
' C" K+ h7 ~  h3 V5 h
3 O* |( C, `. g. g. v引述一下 簡短的程式
) V2 x% U# B, F' ]* p6 @* `       for(i = 0; .. .. ..) begin
0 l' o7 v9 n+ l' x& [& Q  J" h        ... ...
& F; L, ]5 P: P$ J. `       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);# q  J. I0 f. ~+ a# ]
       if (Status == MYNAK)" v! Z7 s# D3 x$ e' q6 p
          printstatus(Status, MYNAK);
; \9 \$ i! A- c" V       else
8 v& ^  V8 k7 O7 v1 H  N2 l          check_udc_if_hshk(1'b1, 1'b1);3 V# ~! L8 K6 \6 m2 A0 K
       #5000;
8 M5 J4 G( U3 j* C0 J    if(i == 1)  begin1 n% g8 t2 }: i  x
        #140_000;( d" _+ P( P8 b% S
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?# Q, q- S* W4 |5 J% ]* C! J
    end5 s+ e4 x  S' r& T4 c% A. r. A
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 的帖子

自己回覆一下好了!) ~. u  m* q0 e/ O! N: h+ P
5 \1 \4 Q' g- y1 R7 p$ L: \
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
9 ~3 [/ C4 h1 C* k8 h" Cex: ( q. l4 `0 L2 }4 x  ?
input    clk,a,b,c;$ k8 S& @9 g# E( |% b
output  d_out;
5 C! F8 ]% J& X# ^
5 d, g# l3 u" p" Greg      d;
7 D6 y+ v, p9 h) calways (posedge clk) begin3 T4 N- P- G+ Y% ~& Y; C
       temp_task(a,b,c);
! N, M  h7 }1 C, _) g$ B       d_out = ~c;
# Z: C" R1 p4 {: k1 E6 Wend
* I$ \* i) V- [* j7 y! Y! M! [( a5 p3 D2 b7 J: O! e7 i% K" e7 k
  task temp_task;8 f0 I, k/ f' I4 M9 {
     input  x,y;& b2 r# c4 B9 f- t
     output  z;
$ O6 D, G4 T1 K6 ~   
, i. \& A7 y$ b0 k/ {; X     reg z;5 K7 I$ k+ V3 C' c$ X. Y
         z = x + y;
) s1 d" ^$ e" e  endtask6 M! w5 q0 e; ~) F
3 @" v  Q) s8 N
那我的情況,主要是只做單純的task 沒有in / out
( }$ I# `7 u9 c4 p所以直接在simulation中加入task's name(ex:temp_task)8 `5 G7 V2 p2 s/ T4 V0 W
等到程式直接執行到該行就會進入到指定的task中,執行程式..
; P7 C3 l' q* K. a& d2 l+ l" }( [2 J- _" ~: V
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
2 f" }. u% S1 @3 y& t5 h答案是可以的
. T6 ~* I  x0 @: f# Btask也可以不使用local variable
: E9 b9 T6 Q& t3 Z$ ~+ o5 b直接也可以對golbal variable進行更動
. g8 I9 G+ B. g" i& ~/ A但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-5-31 11:24 PM , Processed in 0.123015 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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