Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法+ m" G" p* T/ g! O+ ?* q2 `
我所知道的是,task 可以有零個或者多個宣告來使用
) ~' z0 S& j* B0 h3 Q但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
! _2 b! Z' U0 c5 W, h* D這樣的方式不知該如何使用?
7 j0 f, H0 R; m6 U
& _# B# m5 Q# p- R! U: W: f- ]我目前是在撰寫用於simulation環境下的verilog code( m& p- Y, |$ X8 e, x' q1 u( v
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
; h: e- u9 B5 H那我該怎麼寫較好?
) V& F: `$ h1 F0 n
5 s9 ^7 e" C, k( l. g引述一下 簡短的程式4 }1 N4 n2 w# o0 C6 U
       for(i = 0; .. .. ..) begin- {5 f2 _1 @' I, a% g/ u9 `0 D4 \
        ... ...
. e8 E& J' A4 K/ {4 [       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);( A/ T; J5 X" I6 u
       if (Status == MYNAK)! d# X4 ~% W% ~
          printstatus(Status, MYNAK);
9 N% M* K2 }' B+ U       else) i! U' k: l0 Z& [4 L3 T/ t
          check_udc_if_hshk(1'b1, 1'b1);
9 C% |( ^3 P% D# x4 i       #5000;* H1 ^% z3 \1 m
    if(i == 1)  begin
& U' m( ~8 |! r2 ^        #140_000;9 _  [8 k8 S: v( M& s8 p
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?
' e) C3 x9 `, A! k2 i0 \" l    end3 y; T/ ]( g: x. ^8 e: r
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 的帖子

自己回覆一下好了!
0 p0 K: K# W8 A6 E: F! G( F/ L
+ Q$ A3 X- W! ]4 p0 `我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
) q% M1 v2 {6 v) m# _' tex: . Q0 A8 e- q& D( y  N3 b8 M% N
input    clk,a,b,c;% a# N, r' b' x# f* `6 _
output  d_out;
: j( u8 p% W" O8 x$ @) h' y% k( I$ Z$ \- D5 E2 l3 T& G, Q
reg      d;  w% L% L5 K; B9 P" i, p
always (posedge clk) begin& a/ V1 o$ v+ n7 L) G! q- ~
       temp_task(a,b,c);% C  w$ u4 D" }5 @# ^% d
       d_out = ~c;
% o" U( I' U$ |: f" ~2 Fend& u/ ]& j/ s7 P2 I8 g5 R) a

0 j! @$ `  _5 D" P1 B' n" R  task temp_task;
3 u% \$ ^) n  E) h0 ]  N     input  x,y;: S4 B3 i4 o5 F( `! R5 b- J, _+ d- V
     output  z;
9 J% a6 @2 @% ]$ |8 K3 c/ q   
9 [) l% q0 I6 z6 C, L, V' h) f     reg z;% h7 M' z1 r& D. i2 u
         z = x + y;, [! S7 {9 U' N% K
  endtask
3 ^5 u6 N8 w6 Y6 [' e; J1 r( `( f) J4 j, L6 U# B3 ~
那我的情況,主要是只做單純的task 沒有in / out
1 z7 E6 q# W6 k1 _; s* v/ n所以直接在simulation中加入task's name(ex:temp_task)
0 E' a) ^& [# \  l等到程式直接執行到該行就會進入到指定的task中,執行程式..1 G/ |$ z: s% n
7 \. ^5 R3 E+ w: q& c) U
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@7 P+ O; q( r/ [3 b2 J
答案是可以的
) m% s6 _4 u1 r- @task也可以不使用local variable, R( V: n: {0 N* M
直接也可以對golbal variable進行更動8 F' ~( f& C% K& G4 y
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2025-2-23 12:47 AM , Processed in 0.164010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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