首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教大侠

请教大侠

我用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
返回列表