Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-4-4 11:09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想問一下有關task的語法
6 @. _6 Z5 _0 Y. Q" X4 Z我所知道的是,task 可以有零個或者多個宣告來使用6 m) Z+ o  @; |  y3 U' o0 W/ l
但若我只是想在程式中 例用task的方式添加到主程式,把子程式放置在另一個檔案中
6 G5 W" l' N6 J3 f$ M( @這樣的方式不知該如何使用?
* l3 [$ ]% X; B0 P; G5 n8 C! Z9 {# {/ K+ v7 B
我目前是在撰寫用於simulation環境下的verilog code
/ g6 `+ T/ t/ E# d那我添加的部份是很大一段的 force訊號.. 這些訊號很明顯就沒有額外需要宣告in / out 的部份0 p! z) Q1 Y3 C
那我該怎麼寫較好?1 q' r% L8 P! T/ o7 |- E
' M" P& g& a+ V4 |7 S
引述一下 簡短的程式
' M" J) q1 \2 j       for(i = 0; .. .. ..) begin. d" l& E9 \6 Y  x) G
        ... ...
% {  a. X* v* X: I% A       transfer_bulk_OUT(address, endpt, exp_bytecount, 1, Status);+ W6 z- o4 |$ p3 _9 D
       if (Status == MYNAK)
% P4 F- O, ]% r. O& [3 e          printstatus(Status, MYNAK);
# A: C% R# G9 u" `& y- K       else
5 F: u) b# i* @: |* \          check_udc_if_hshk(1'b1, 1'b1);/ `/ W$ v/ ^2 D: O
       #5000;9 P, S- v0 K4 N3 c2 R; C
    if(i == 1)  begin
, A: U. Q% e: y2 C, ]* L  }        #140_000;* Z& ?4 s9 Z8 U$ D3 h. S0 a
     z_fix_tasks;                        <= 在此部份想要添加子程式進來  可以這樣添加嗎?0 ~5 i. {' u* g$ N. a
    end. u& h# n6 O; z- n, [
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 d, Z. |9 m% ?, g

1 T. a- i7 o$ _; L( t" u+ Q我之前不解的地方是在 書本上所指的 task語法範例會包含輸入/輸出
4 |" P% T- Y/ x4 tex: 2 j) B( g7 U$ e8 \  a5 J
input    clk,a,b,c;
$ |' w+ j; v! M/ }! B* uoutput  d_out;( Y) e+ E8 ~* T  l" @2 H8 F1 \2 a
; h- {" J* i# p/ R4 ]
reg      d;
8 P$ `3 a1 R: \always (posedge clk) begin
2 g$ ?/ s; K) c7 D, U6 t& {* |; }       temp_task(a,b,c);
; Z' G5 ^: s+ g0 R9 E       d_out = ~c;
7 l$ t9 [) G0 F7 ~' F& G+ Rend, ]: r) b9 l5 H$ W; Q% `

7 r$ h( S* m7 u3 \  task temp_task;3 o" n: d- d. S
     input  x,y;) |+ ~& m: g5 [$ \
     output  z;
( G6 K6 ]6 J2 V, B9 u3 c    . u  o! o% D4 G( n; j) L  U- I; A
     reg z;& _/ c7 T: c+ y0 a5 ]" h2 ~, ^" N
         z = x + y;
2 r9 U2 x, v5 x2 D4 N: ?  endtask6 Q/ M. G$ ]$ {
" H; W" d& O/ i2 @7 X: e
那我的情況,主要是只做單純的task 沒有in / out
* y3 e, O2 m1 h# J! \所以直接在simulation中加入task's name(ex:temp_task)
# F1 P; J+ J9 n* T等到程式直接執行到該行就會進入到指定的task中,執行程式..3 {! k8 I: J4 \
, @* p* F* `+ P+ S: g
這個應該是蠻基本的...以前沒用過,在發問時不確定是不是能這麼做,編譯時一直出現Error,害我以為這樣會不能執行..Orz

評分

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

查看全部評分

4#
發表於 2007-11-7 11:13:34 | 只看該作者
ㄝ都,雖然年代久遠不過還是回答一下@@8 \& d6 S% O# v% y% i
答案是可以的
: M5 \) e9 @/ O/ g" A5 ftask也可以不使用local variable3 v, e! ]0 n9 m. V) G
直接也可以對golbal variable進行更動
; J6 E5 g, P& V! m5 @但是這個task的動作內容必須在同一個endmudule之內才可以。

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-6-5 11:19 AM , Processed in 0.132517 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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