Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法# f/ Y% i) B1 _( @
我所知道的是,task 可以有零個或者多個宣告來使用
" S" p7 z& v) j$ o# D5 m但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
" L" D- j" d0 \這樣的方式不知該如何使用?3 h& P4 Y9 o0 i% ^3 m

! l& O5 Q" G  g) v6 S我目前是在撰寫用於simulation環境下的verilog code/ b) l1 {$ B9 Y( X3 F4 j
那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份
! Q( d5 W. [* I( ^+ ~. a8 t那我該怎麼寫較好?
' A! S8 Y4 E1 l, G* ^# Q4 S( i8 t! a2 k8 S! }. l- d
引述一下 簡短的程式
3 [& J) a- N3 o6 v       for(i = 0; .. .. ..) begin
$ _4 v0 ~7 Y$ }$ i; t0 r        ... ... - k4 b& p' T& V1 {1 D7 C1 U$ H' I
       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);
: v, M' ?  D% `       if (Status == MYNAK)5 G+ n! t, D6 z4 p5 v( P; Y; L
          printstatus(Status, MYNAK);
2 z( w5 J! ?5 n8 M1 I% m0 R6 g       else/ b: c5 d$ p+ k/ N: i
          check_udc_if_hshk(1'b1, 1'b1);
5 H, r3 l" {# `$ |( v7 N7 k       #5000;
# n( g& `# m- T1 b1 M1 l    if(i == 1)  begin2 B& P3 e2 q- a- n; y& [  {1 }8 R
        #140_000;
* J7 w* n9 {1 j+ w     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?2 Q( a, u  D! |
    end6 P0 g' J$ r; x0 V* v( S- q
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 的帖子

自己回覆一下好了!
+ x) h) n8 `% n  E: o0 K* U: `0 S2 K5 p4 W
我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出: t3 \% Y6 U& B, A
ex:
' C, P" |, f) k+ O. F; i3 rinput    clk,a,b,c;
% p9 B* N9 @6 n1 p, u& u0 \output  d_out;2 v& R  B% k( P# [$ R3 \: N% ]% u

) h! m1 q7 T3 Z1 Y7 D. E6 J$ @( Hreg      d;
5 }9 h$ n' o- {5 ^- _3 P8 Aalways (posedge clk) begin" M' V2 ]2 e+ T' @& Z/ g
       temp_task(a,b,c);
' |& c$ S+ E/ z5 @1 t       d_out = ~c;
6 {; _/ B; P2 Q3 xend
/ g/ u) i# ^; @: O
9 \: |1 P7 {" t- d. K  task temp_task;
% r/ V6 }- M0 ^9 F2 ~. @: ~     input  x,y;
3 i& R' M6 d% w# n     output  z;
* q3 a8 T3 z* b3 o7 K4 p, k: ~    ; u  K* a4 H+ a7 j( \
     reg z;' c' c" L1 H# {% S
         z = x + y;
% a5 C: t' e- O) L" M/ K  endtask
7 f& ]5 u1 T7 a6 H5 g
# {, Q7 O% P) o: I3 w, {* [0 Q4 i那我的情況,主要是只做單純的task 沒有in / out  ]8 o2 L/ A7 Q/ ?# D' z2 g* k
所以直接在simulation中加入task's name(ex:temp_task)
. _& X1 Y$ m! f1 x等到程式直接執行到該行就會進入到指定的task中,執行程式..! u$ K  ^5 q5 o$ z- u
2 O  D$ ~( x& L. ~& @
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@
( I& @: w3 V6 d* ^$ K8 I答案是可以的4 |& s# |- }2 E( k: G* A" j
task也可以不使用local variable5 I6 b& x% N5 e! K
直接也可以對golbal variable進行更動  X2 v0 s5 Q. G0 V5 q( u
但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-6-14 04:05 AM , Processed in 0.120516 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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