A. VHDL 程序编译报错!急!
两个地方,一个是rst='1',要加单引号,因为rst是std_logic型,而不是整型,还有一个是在process括号里面应该加上个c,还有就是c<=(others=>'0');这里面的0也应该是用单引号!!!
B. 关于VHDL的错误
process(in1,in2,in3,in4.sel) 这里面的"点"应该是“逗号” 估计是你抄错了吧
C. vhdl 分频器程序报错
从报错提示上看,是键入了非法字符。在输入符号时,要注意不要在全角(汉字)状态,要保证输入的是半角字符。
D. VHDL语法错误怎么改
你写的代码使用了 Verilog 语言,不是 VHDL 语言;
使用 Verilog 语言描述需要在工程里添加 Verilog 代码文件而不是 VHDL 代码文件;
可以尝试将 .vhd 文件后缀重命名为 .v 文件后缀,重新尝试编译工程;
如果编译不通过,请根据给出的错误信息修正代码;
E. VHDL编译错误 Error (10465)
你已经在端口声明中声明了端口goal_speed,就不能再将其声明为常数了。
另外,赋值语句并无规定要将双引号去掉。是否使用双引号,要看你的赋值类型,字符串文字才需要用双引号将其括在其中。
F. VHDL 编译报错!急!在线等……
你是想写一个分频程序吧,,错误蛮多的,variable只能用在进程中,不能在两个进程里面同时对一个信号,或者变量赋值,下面是我帮你修改的程序;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cf is
port(clk,trigger:in std_logic;
delclk:out std_logic);
end cf;
architecture behave of cf is
begin
process(clk,trigger)
variable count:integer range 0 to 100;
begin
if trigger='1' then
count:=0;delclk<='0';
elsif clk'event and clk='1' then
if count=100 then
count:=0;
delclk<='1';
else count:=count+1;
delclk<='0';
end if;
end if;
end process;
end behave;
G. vhdl编译出错
就是说你在你的DESIGN中已经将pn定义为一个信号或者一个逻辑IO口了,这个检查下有没重复命名的变量就行
至于"inst"检测出重复,这是你画一个.bdf文件经常会出现的问题,只需要你把.bdf文件中的所有使用元件重新命名就行,特别是名字为inst,inst0,inst1这几个元件,后面多加几个数,就能解决问题
H. vhdl编译错误呀Error (10482): VHDL error at light.vhd(40): object "t" is used but not declared
t没有定义。
注意第一个process中虽然定义了一个t,但是它是局部变量,而在40行的需要再定义一次t。
I. VHDL程序编译出错,报错can't determine definition of operator ""+"" -- found 0 possible definitions
修改后的code如下:
1:将你程序中的bit_vector改为 std_logic_vector,USE IEEE.STD_LOGIC_UNSIGNED.ALL以及USE IEEE.STD_LOGIC_SIGNED.ALL可以使得“+”两方具有不同的数据类型,但不支持bit_vector。
2:USE IEEE.STD_LOGIC_UNSIGNED.ALL以及USE IEEE.STD_LOGIC_SIGNED.ALL用一个就可以了,删除了USE IEEE.STD_LOGIC_SIGNED.ALL。
请采纳!!
library IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_ARITH.all;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDERCTL IS
PORT( in1 : in std_logic_vector(2 downto 0);
in2 : in std_logic_vector(2 downto 0);
cntl : in std_logic;
pout : out std_logic_vector(2 downto 0));
END entity ADDERCTL;
ARCHITECTURE FUNC OF ADDERCTL IS
BEGIN
PROCESS(cntl)
BEGIN
if (cntl='1') then pout<=in1+in2;
end if;
end process;
end ARCHITECTURE FUNC;