| 
  |||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe  | 
  
一個狀態(tài)機程序,編譯出錯,請高手指點(已解決) | 
  
| 作者:wuzm02 欄目:EDA技術 | 
////程序總共有8個錯誤,提示錯誤都是在case語句中的賦值語句中。 MODULE adc (din,clk,EOC, OE,ADDA,ALE,START,dout,qq); parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4, st5=3'd5, st6=3'd6, st7=3'd7; input clk; input EOC; input[7:0] din; OUTPUT OE; OUTPUT ADDA; OUTPUT ALE; //地址鎖存 OUTPUT START; OUTPUT[7:0] dout; //轉換數據輸出 OUTPUT[7:0] qq; //即時狀態(tài)顯示 reg ALE; reg START; reg LOCK; reg[7:0] dout; reg[7:0] qq; reg[2:0] state; reg[2:0] next; reg a,b; assign ADDA=1; //選通道IN1 always@(posedge clk )//or state or EOC) begin if(a) begin next=st0; a=0; end //初始化 else begin case(state) st0: begin qq=0; ALE=0;START=0; OE=0; LOCK=0; end st1: begin qq=1; ALE=1;START=0; OE=0; LOCK=0; next=st2; end st2: begin qq=2; ALE=1;START=1; //啟動采樣信號START OE=0; LOCK=0; next=st3; end st3: begin qq=3; ALE=1;START=1; OE=0; LOCK=0; if(EOC==0) next=st4; else next=st3; end st4 : begin qq=4; ALE=0;START=0; OE=0; LOCK=0; if(EOC==1) next=st5; else next=st4; end st5: begin qq=4; ALE=0;START=1; OE=1; //開啟輸出允許OE LOCK=0; next=st6; end st6: begin qq=5; ALE=0;START=0; OE=1; LOCK=1; next=st0; end st7: begin qq=6; ALE=0;START=0; OE=1; LOCK=1; next=st0; //延遲一個脈沖 end default state=st0; endcase state=next; end end always@(posedge LOCK) //輸出數據鎖存 begin dout=din; end endMODULE  * - 本貼最后修改時間:2005-4-19 9:42:42 修改者:wuzm02  | 
  
| 2樓: | >>參與討論 | 
| 作者: littleou 于 2005/4/18 17:35:00 發(fā)布:
         看看書吧 最起碼的coding style 都沒有寫對。 code不是這么寫的  | 
  |
| 3樓: | >>參與討論 | 
| 作者: wuzm02 于 2005/4/18 19:44:00 發(fā)布:
         首先謝謝littleou,我是認真看書后才上網發(fā)貼求教的。 首先謝謝littleou,我是認真看書后才上網發(fā)貼求教的。 我知道是在case語句當中的賦值出了問題,如果是只給一個寄存器賦值,而把后面的注解掉(如下): case(state) st0: begin qq=0; //ALE=0;START=0; OE=0; LOCK=0; end …… 則程序沒不會出錯(當然端口聲明也要改)。 但是,為了實現程序的功能,卻不能不給ALE=0;START=0; OE=0; LOCK=0;賦值. 從書上,我知道,在case的分支中,也有同時給兩個變量賦值的。所以,我希望能夠知道我的程序是哪方面出了問題。如果要實現功能,我的程序應該如何去改正。 敬請指正。  | 
  |
| 4樓: | >>參與討論 | 
| 作者: wuzm02 于 2005/4/18 19:58:00 發(fā)布:
         請大家多給點建議。 請大家多給點建議。  | 
  |
| 5樓: | >>參與討論 | 
| 作者: a_tu01 于 2005/4/18 22:18:00 發(fā)布:
         是漏寫了還是其他原因? 進入st0后,如何進入其他狀態(tài)? OE是否也應該定義為reg?  | 
  |
| 6樓: | >>參與討論 | 
| 作者: wuzm02 于 2005/4/19 9:37:00 發(fā)布:
         謝謝a_tu01,我是漏寫了 謝謝a_tu01,我之前一直以為是在case語句中的賦值有問題,而沒有仔細檢查沒個語句, 現在發(fā)現錯誤是由于自身疏忽造成的。 再次謝謝a_tu01。  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號  |