|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
基于QuartusII6.0的狀態(tài)機(jī)問(wèn)題 |
| 作者:joneamry 欄目:技術(shù)交流 |
各位FPGA的高手大蝦們,能不能幫俺把這個(gè)狀態(tài)機(jī)的問(wèn)題看一下,在此俺先謝過(guò)各位了! LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY TEST IS PORT( inclk : IN std_logic; clock : OUT std_logic; TEST : OUT std_logic; data : OUT std_logic_vector(3 DOWNTO 0) ); END TEST; ARCHITECTURE behave OF TEST IS TYPE states IS (st0,st1,st2,st3); SIGNAL current_state,next_state : states:=st0; SIGNAL ckk : std_logic; BEGIN PROCESS(current_state) BEGIN CASE current_state IS WHEN st0=>clock<='0';data<="0001";next_state<=st1; WHEN st1=>clock<='0';data<="0010";next_state<=st2; WHEN st2=>clock<='1';data<="0100";next_state<=st3; WHEN st3=>clock<='0';data<="1000";next_state<=st0; WHEN OTHERS=>next_state<=st0; END CASE; END PROCESS; PROCESS(inclk) BEGIN IF rising_edge(inclk) THEN current_state<=next_state; ckk<= NOT ckk; END IF; TEST<=ckk; END PROCESS; END behave; 這個(gè)程序在4.2上可以仿真實(shí)現(xiàn)和下載,但是在6.0時(shí)候就不行了,當(dāng)我把SIGNAL current_state,next_state : states:=st0;這句話(huà)最后的st0改為st1或者別的時(shí)候狀態(tài)機(jī)可以運(yùn)轉(zhuǎn),但結(jié)果data是錯(cuò)誤的。請(qǐng)各位幫幫忙,我這個(gè)程序錯(cuò)在那了????????????? |
| 2樓: | >>參與討論 |
| 作者: hskfly 于 2006/8/10 14:59:00 發(fā)布:
...... SIGNAL current_state,next_state : states:=st0;有毛病 信號(hào)不是這樣賦值的 不知道這樣行不行(不對(duì)的地方請(qǐng)大蝦們指正^_^) (如果一定要有一個(gè)初值的話(huà)) ARCHITECTURE behave OF TEST IS SIGNAL ckk : std_logic; BEGIN PROCESS(current_state) TYPE states IS (st0,st1,st2,st3); variable current_state,next_state : states; BEGIN current_state:=st0; CASE current_state IS WHEN st0=>clock<='0';data<="0001";next_state<=st1 ................ 或者 ARCHITECTURE behave OF TEST IS TYPE states IS (st0,st1,st2,st3); SIGNAL current_state,next_state : states; current_state<=st0; SIGNAL ckk : std_logic; BEGIN PROCESS(current_state) BEGIN CASE current_state IS WHEN st0=>clock<='0';data<="0001";next_state<=st1; 個(gè)人覺(jué)得SIGNAL current_state,next_state : states:=st0; 中的“:=st0”是多余的,直接去掉即可 |
|
| 3樓: | >>參與討論 |
| 作者: joneamry 于 2006/8/12 8:29:00 發(fā)布:
?????????????????? “hskfly”這位大哥你所說(shuō)的內(nèi)容是信號(hào)初值的問(wèn)題,中間所說(shuō)的(也就是我寫(xiě)的)“ SIGNAL current_state,next_state : states:=st0;”其中“:=st0”只是在仿真的時(shí)候有用,但是在綜合的時(shí)候就被忽略了。這些問(wèn)題也不是狀態(tài)機(jī)出現(xiàn)的問(wèn)題。 "kefeng19"大哥,如果你不相信的話(huà),你可以用QuartusII試試。(QuartusII可以在ALTERA的網(wǎng)站上下載,同時(shí)申請(qǐng)?jiān)S可)。 |
|
| 4樓: | >>參與討論 |
| 作者: kefeng19 于 2006/8/12 16:10:00 發(fā)布:
我兩個(gè)編譯器都用了 只有幾個(gè)警告。。我沒(méi)有多看。反正不是錯(cuò)誤。。。 |
|
| 5樓: | >>參與討論 |
| 作者: joneamry 于 2006/8/13 16:24:00 發(fā)布:
不是編譯,下載有問(wèn)題 我也在編譯的時(shí)候也是沒(méi)有什么問(wèn)題,只不過(guò)在下載時(shí)就出現(xiàn)了問(wèn)題,根本就不是我程序中寫(xiě)的結(jié)果。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |