导航:首页 > 源码编译 > vhdl程序无法编译怎么回事

vhdl程序无法编译怎么回事

发布时间:2024-12-19 15:21:24

1. 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;

2. 崩溃了!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;

3. quartus怎么不能开始编译我打开了下载的一个vhdl 语言的一个文件,怎么不能开始编译

首先看看这个vhdl语言文件是不是在一个工程中,并且实体名必须和工程名相同,这样才可编译。第二是仿真,建立了波形文件,要打开仿真工具,进行功能仿真,输出仿真图才可正确仿真。

4. vhdl编译出错

就是说你在你的DESIGN中已经将pn定义为一个信号或者一个逻辑IO口了,这个检查下有没重复命名的变量就行

至于"inst"检测出重复,这是你画一个.bdf文件经常会出现的问题,只需要你把.bdf文件中的所有使用元件重新命名就行,特别是名字为inst,inst0,inst1这几个元件,后面多加几个数,就能解决问题

5. VHDL编译错误 Error (10465)

你已经在端口声明中声明了端口goal_speed,就不能再将其声明为常数了。
另外,赋值语句并无规定要将双引号去掉。是否使用双引号,要看你的赋值类型,字符串文字才需要用双引号将其括在其中。

6. VHDL 四人抢答器程序哪错了,编译不出来,错误不知道咋那么该

你的程序能够编译,在MAXPLUS里面是可以编译的。如果你使用MAXPLUS不能编译,需要检查编译的是否为当前文件,选择File-Project-Set project to current file。如果你用的是quartus,检查一下你的文件是否设为顶层文件,否则一定报错。

但是需要说的是,你的程序不能实现抢答器的功能。

从仿真来看,Dout抢答结果不能正确显示第一个抢答的序号。上图S4第一个抢答,输出为8(正确),但是当S3第二个按下抢答器后,输出变成了C(1100),四个人都按下之后编程了F(1111)。

建议你思考:

使用时序电路(触发器)来做这个任务。因为组合电路不能实现抢答器的功能。虽然你使用了Process过程,但是达不到信号锁存的功能。

阅读全文

与vhdl程序无法编译怎么回事相关的资料

热点内容
android引用module 浏览:885
安卓程序占用内存如何查看 浏览:160
java秒转date 浏览:621
单片机da的用法 浏览:407
javareturnbreak 浏览:512
石化网约车优惠app怎么申请 浏览:64
qq怎么填写服务器 浏览:896
解压诡异事件 浏览:221
挂淘宝店用什么服务器 浏览:889
算法中递归函数的是什么意思 浏览:140
我是程序员演员表路景文 浏览:149
乘车码要与app互通怎么办 浏览:820
安卓手机怎么显示beats耳机的电量 浏览:617
unity安卓ui怎么做 浏览:988
pdf字体变乱 浏览:611
命令与征服3凯恩之怒单位 浏览:475
易语言电子书附源码下载 浏览:905
安卓刷机出现无命令 浏览:704
急招CNC编程双休不加班 浏览:29
小程序less编译 浏览:725