
- UID
- 121884
- 性别
- 男
|

我用vhdl写的两段小程序,在Quartus上仿真时,Quartus弹出一个错误窗口,其内容如下:
Internal Error: Sub-system: SIM, File: sim_preprocessor.cpp, Line: 2532
machine_iname != 0
Quartus II Version 5.0 Build 148 04/26/2005 SJ Full Version
两程序都是这个问题,请问是什么原因?
我写的程序:
1:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY StemDetecor_mealy IS
PORT(
clk: IN STD_LOGIC;
reset: IN STD_LOGIC;
din: IN STD_LOGIC;
dout: OUT STD_LOGIC);
END StemDetecor_mealy;
ARCHITECTURE behavior OF StemDetecor_mealy IS
TYPE STATE_TYPE IS(A,B);
SIGNAL present_state: STATE_TYPE;
SIGNAL next_state:STATE_TYPE;
BEGIN
PROCESS(reset,clk)
BEGIN
IF(reset='1')THEN
present_state<=A;
ELSIF(clk'EVENT AND clk='1') THEN
present_state<=next_state;
END IF;
END PROCESS;
PROCESS(clk)
BEGIN
CASE present_state IS
WHEN A =>
IF din='1' THEN
next_state<=B;
ElSE
next_state<=A;
END IF;
WHEN B =>
IF din='0' THEN
next_state<=A;
ELSE
next_state<=B;
END IF;
END CASE;
END PROCESS;
PROCESS(clk,present_state,din)
BEGIN
IF reset='1' THEN
dout<='0';
ELSIF clk'EVENT AND clk='1' THEN
IF present_state=B AND din='1' THEN
dout<='1';
ELSE
dout<='0';
END IF;
END IF;
END PROCESS;
END behavior;
程序2:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY StemDetecor_moore_onehot IS
PORT(
clk: IN STD_LOGIC;
reset: IN STD_LOGIC;
din: IN STD_LOGIC;
dout: OUT STD_LOGIC);
END StemDetecor_moore_onehot;
ARCHITECTURE behavior OF StemDetecor_moore_onehot IS
CONSTANT A: STD_LOGIC_VECTOR(2 DOWNTO 0):="001";
CONSTANT B: STD_LOGIC_VECTOR(2 DOWNTO 0):="010";
CONSTANT C: STD_LOGIC_VECTOR(2 DOWNTO 0):="100";
SIGNAL present_state:STD_LOGIC_VECTOR(2 DOWNTO 0);
--SIGNAL next_state:STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
PROCESS(clk,reset)
BEGIN
IF(reset='1')THEN
present_state<=A;
ELSIF clk'EVENT AND clk='1' THEN
CASE present_state IS
WHEN A =>
IF din='1' THEN
present_state<=B;
END IF;
WHEN B =>
IF din='1' THEN
present_state<=C;
ELSE
present_state<=A;
END IF;
WHEN C =>
IF din='1' THEN
present_state<=C;
END IF;
WHEN OTHERS =>
present_state<=A;
END CASE;
END IF;
END PROCESS;
WITH present_state SELECT
dout <= '0' WHEN A,
'0' WHEN B,
'1' WHEN C;
END behavior; |
ftp://bbsupload:5t6H7n8@210.51.188.157 |
|