[英]errors in VHDL code using fpga advantage
我需要您的帮助来修复我的vhdl代码中的一些错误。 我正在使用fpga优势5.2,它太旧了,但由于框图的缘故而不是自己写代码,我正在使用vhdl开发mips处理器,我完成了除两个块之外的所有块,它们是数据存储器和指令存储器。 两个块都有相同的错误:
数据存储错误:
错误:C:/单周期处理器/处理器/hdl/dmem_untitled.vhd(34):靠近“是”:预期:开始错误:C:/单周期处理器/处理器/hdl/dmem_untitled.vhd(51):在“过程”附近:期望:“;”
指令存储器错误:
错误:C:/单周期处理器/处理器/hdl/imem_untitled.vhd(38):在“ is”附近:预期:BEGIN错误:C:/单周期处理器/处理器/hdl/imem_untitled.vhd(53):在“过程”附近:期望:“;”
这是数据存储器的代码:
-- hds header_start
--
-- VHDL Architecture Processor.dmem.untitled
--
-- Created:
-- by - Ahmed.UNKNOWN (AHMED-PC)
-- at - 01:58:50 04/21/2016
--
-- Generated by Mentor Graphics' HDL Designer(TM) 2001.5 (Build 170)
--
-- hds header_end
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.all;
use IEEE.STD_LOGIC_SIGNED.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.std_logic_textio.all;
library STD;
use STD.textio.all;
ENTITY dmem IS
-- Declarations
port(clk, we: in STD_LOGIC;
a, wd: in STD_LOGIC_VECTOR (15 downto 0);
rd: out STD_LOGIC_VECTOR (15 downto 0));
END dmem ;
-- hds interface_end
ARCHITECTURE untitled OF dmem IS
BEGIN
process is
type ramtype is array (63 downto 0) of STD_LOGIC_VECTOR(15 downto 0);
variable mem: ramtype;
variable IADR: INTEGER;
begin
IADR:= CONV_INTEGER(a(7 downto 2));
-- read or write memory
--loop
if rising_edge(clk) then
if (we='1') then mem (IADR):= wd;
end if;
end if;
rd <= mem (IADR);
wait on clk, a;
--end loop;
end process;
END untitled;
也是指令存储器的代码:
-- hds header_start
--
-- VHDL Architecture Processor.IMEM.untitled
--
-- Created:
-- by - Ahmed.UNKNOWN (AHMED-PC)
-- at - 02:17:30 04/21/2016
--
-- Generated by Mentor Graphics' HDL Designer(TM) 2001.5 (Build 170)
--
-- hds header_end
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_SIGNED.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.std_logic_textio.all;
library STD;
use STD.textio.all;
ENTITY IMEM IS
-- Declarations
port(
rd: out STD_LOGIC_VECTOR(31 downto 0);
a: in STD_LOGIC_VECTOR(5 downto 0)
);
END IMEM ;
-- hds interface_end
ARCHITECTURE untitled OF IMEM IS
begin
ROM_PROCESS: process(a) is
type MEM is array(0 to 63) of STD_LOGIC_VECTOR(31 downto 0);
variable MEMORY: MEM := (others => X"00000000");
variable IADR: INTEGER;
begin
memory(0) := X"00611820" ; -- add $3, $3, $1
memory(1) := X"ac030004" ; -- sw $3, 4($0)
memory(2) := X"00221024" ; -- and $2,$1,$2
memory(3) := X"10220001" ; -- beq $1, $2, SAME
memory(4) := X"8c010004" ; -- lw $1, 4($0)
memory(5) := X"0022182a" ; -- SAME: slt $3, $1, $2
IADR:= CONV_INTEGER(a);
rd <= MEMORY(IADR);
end process;
END untitled;
的is
从IEEE标准1076-1993前进,但不允许在VHDL标准的原-1987修订过程语句是可选的。
取下is
在下面的过程中灵敏度列出两个文件。 这告诉我们您正在使用-1987兼容工具(用于综合吗?)来分析VHDL。
还要注意,您的use子句是一团糟。 不得将软件包numeric_std与Synopsys软件包std_logic_arith或std_logic_unsigned一起使用。 您可以简单地注释掉该use子句。
有一个隐式库子句使库逻辑名std
可用,您不需要。 您也没有使用textio。
您的代码将使用与-1993修订版兼容的VHDL工具进行不变的分析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.