⑴ vhdl文件为什么会编译不成功,总说一个结构体没有定义
最后描述half_adder的时候,头那里要调用xor3/and2才行。加上 use work.all;
⑵ VHDL编译错误 Error (10465)
你已经在端口声明中声明了端口goal_speed,就不能再将其声明为常数了。
另外,赋值语句并无规定要将双引号去掉。是否使用双引号,要看你的赋值类型,字符串文字才需要用双引号将其括在其中。
⑶ quartus怎么不能开始编译我打开了下载的一个vhdl 语言的一个文件,怎么不能开始编译
首先看看这个vhdl语言文件是不是在一个工程中,并且实体名必须和工程名相同,这样才可编译。第二是仿真,建立了波形文件,要打开仿真工具,进行功能仿真,输出仿真图才可正确仿真。
⑷ VHDL编译出现如下的问题怎么解决
Warning: Output pins are stuck at VCC or GND
Warning (13410): Pin "sound" is stuck at GND
Warning (13410): Pin "q[2]" is stuck at GND
Warning (13410): Pin "q[1]" is stuck at GND
这个的意思是您的这几个输出管脚直接接地了(意思是它们的值一直都是0)。当然如果这符合您的设计要求这种警告可以不管。
Warning: Following 3 pins have nothing, GND, or VCC driving datain port -- changes to this connectivity may change fitting results
Info: Pin sound has GND driving its datain port
Info: Pin q[2] has GND driving its datain port
Info: Pin q[1] has GND driving its datain port
这几句的意思是您没有对这三个信号进行驱动。
⑸ 大神,大虾们帮我解决下VHDL在编译时出现的问题吧
if(head == null){
throw new Exception("null node");
}
char ch = head.getData();
if(ch == c) {
head = head.getNext();
return head;
}
⑹ vhdl编译出错
就是说你在你的DESIGN中已经将pn定义为一个信号或者一个逻辑IO口了,这个检查下有没重复命名的变量就行
至于"inst"检测出重复,这是你画一个.bdf文件经常会出现的问题,只需要你把.bdf文件中的所有使用元件重新命名就行,特别是名字为inst,inst0,inst1这几个元件,后面多加几个数,就能解决问题
⑺ VHDL 程序编译报错!急!
两个地方,一个是rst='1',要加单引号,因为rst是std_logic型,而不是整型,还有一个是在process括号里面应该加上个c,还有就是c<=(others=>'0');这里面的0也应该是用单引号!!!
⑻ 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;
⑼ 崩溃了!VHDL程序老是编译通不过!
你的原始程序做了少许的修改,其实你的程序没有错误。应该是在编写代码的时候改变了输入法,导致编译错误的,以后要注意了。
把那个coi1_out统统删除在敲一遍就好了。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY PULSE IS
PORT ( RESET : IN STD_LOGIC;
CP : IN STD_LOGIC;
direction : IN STD_LOGIC;
A_A : OUT STD_LOGIC;
n_A : OUT STD_LOGIC;
B_B : OUT STD_LOGIC;
n_B : OUT STD_LOGIC );
END PULSE;
ARCHITECTURE behv OF PULSE IS
TYPE states IS (s0,s1,s2,s3);
signal current_state,next_state : states :=s0;
BEGIN
REG : PROCESS(CP,RESET)
BEGIN
IF (RESET = '1')THEN
current_state <= s0;
ELSIF (CP = '1' AND CP'EVENT) THEN
current_state <= next_state;
END IF;
END PROCESS;
CORN:PROCESS (current_state,direction)
variable coi1_out:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
CASE current_state IS
WHEN s0 => coi1_out:="1100";
IF direction = '1' THEN
next_state <= s1;
ELSE
next_state <= s3;
END IF;
WHEN s1 => coi1_out:= "0110";
IF direction = '1' THEN
next_state <= s2;
ELSE
next_state <= s0;
END IF;
WHEN s2 => coi1_out:= "0101";
IF direction = '1' THEN
next_state <= S3;
ELSE
next_state <= s1;
END IF;
WHEN s3 => coi1_out:= "1001";
IF direction = '1' THEN
next_state <= s0;
ELSE
next_state <= s2;
END IF;
WHEN others => coi1_out:= "1100";
IF direction = '1' THEN
next_state <= s1;
ELSE
next_state <= s3;
END IF;
END CASE;
A_A <= coi1_out(3);
n_A <= coi1_out(1);
B_B <= coi1_out(2);
n_B <= coi1_out(0);
END PROCESS;
END behv;
⑽ 在用maxplus2对VHDL语言程序进行编译时,出现了ERROR :Can't open VHDL "WORK" 的错误,请问如何处理
因为你将VHDL文件存在了你的电脑里盘的根目录下面了,你应该在你存程序的盘里建个文件夹,然后在打开,