2021-04-02 数字系统作业之程序改错

数字系统作业之程序改错

前言
本次作业所用软件为Quartus||9.0,所用板载为EPF10K20T144-4。本篇博客仅供参考学习。

注意事项
(1)创建VHDL工程时选择板载系列一定要按照板载芯片上的系列选中。
(2)目前使用的Quartus || 9.0不支持输入汉字的功能,只支持显示汉字的功能,所以想要在上面显示汉字,得先在记事本中写好自己要写的汉字内容,然后再复制粘贴到Quartus || 9.0上的文件中。
(3)安装驱动程序前一定要记得禁止驱动程序签名。
(4)配置完引脚以后一定要记得要再编译一次。

创建一个VHDL工程
1、点击File->new project Wzarid

2、默认Next即可。

3、在图中灰圈所圈中地方选择工程保存文件,红圈所圈中地方输入项目名称(注:项目名称为自定义,不要出现空格,且当使用VHDL语言编写硬件程序时,要注意实体名一定要和工程名一致,要不然会编译报错),然后点击Next即可。

4、如果需要添加自己已经写好的文件,在红圈圈中的地方找到文件路径,然后点击Add即可添加,若不需要,则默认Next即可。

5、在图中灰圈所圈中地方选择程序所要烧入板载系类,红圈所圈中地方选择板载芯片上所标系列,然后点击Next即可。

6、默认Next即可。

7、默认Finish即可。

创建一个VHDL程序文件
1、点击File->new或直接点击图中红线所圈按钮即可。

2、点击VHDL File即可。

3、在此界面输入自己要写的程序即可。

更改VHDL程序中的错误
1、错误程序如下

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164     

ENTITY ADD8bit IS
PORT(A,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);    --两个加数
     Cin:IN STD_LOGIC;     --低位的进位输入信号
     8_y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);     --和
     Cout:OUT STD_LOGIC;);     --高位进位输出
END;

ARCHITECTURE ONE IS
Signal AA,BB,temp:STD_LOGIC_VECTOR;
BEGIN
AA<=0&A;
BB<=0&B;
temp<=AA+BB+Cin;
8_Y<=temp(7 downto 0);
Cout<=temp[8];
END ONE;

报错一:Error (10500): VHDL syntax error at diy.vhd(4) near text "ENTITY"; expecting "(", or "'", or "."
错误原因:
在这里插入图片描述
这一行代码少了.ALL;
解决办法:将此行代码改成如下代码即可。

USE IEEE.STD_LOGIC_1164.ALL; 

报错二:Error (10500): VHDL syntax error at diy.vhd(7) near text "8"; expecting an identifier, or "constant", or "file", or "signal", or "variable"
错误原因:
在这里插入图片描述
这一行代码标识符8_y起始为数字,因此为非法标识符。
解决办法:将此行代码改成如下代码即可。

Sum8_y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);     --

报错三:Error (10500): VHDL syntax error at diy.vhd(8) near text ")"; expecting an identifier, or "constant", or "file", or "signal", or "variable"
错误原因:
在这里插入图片描述
这一行代码在STD_LOGIC后多加了一个(注:端口声明的最后一个端口在声明完不需要添加
解决办法:将此行代码改成如下代码即可。

Cout:OUT STD_LOGIC);     --高位进位输出

报错四:Error (10500): VHDL syntax error at diy.vhd(11) near text "IS"; expecting "of"
错误原因:
在这里插入图片描述
这一行代码缺少了实体声明。
解决办法:将此行代码改成如下代码即可。

ARCHITECTURE ONE OF ADD8bit IS

报错五:Error (10500): VHDL syntax error at diy.vhd(17) near text "8"; expecting "end", or "(", or an identifier, or a concurrent statement
错误原因:
在这里插入图片描述
这一行代码标识符8_y起始为数字,因此为非法标识符,并且按照程序,Y应为小写字母y
解决办法:将此行代码改成如下代码即可。

Sum8_y<=temp(7 downto 0);

报错六:Error (10327): VHDL error at diy.vhd(14): can't determine definition of operator ""&"" -- found 0 possible definitions
错误原因:
在这里插入图片描述
这两行代码中0是字符没有加' '
解决办法:将此行代码改成如下代码即可。

AA<='0'&A;
BB<='0'&B;

报错七:Error (10327): VHDL error at diy.vhd(17): can't determine definition of operator ""+"" -- found 0 possible definitions
错误原因:
在这里插入图片描述
没有载入操作符+所要应用的程序包。
解决办法:在添加程序包的地方加上要用的程序包即可。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; 

报错八:Error (10482): VHDL error at diy.vhd(5): object "STD_LOGIC_VECTOR" is used but not declared
错误原因:实体名与工程名不一致。
解决办法:修改工程名使其一致即可。

报错九:Error (10529): VHDL error at ADD8bit.vhd(13): variable must be constrained Error: Can't elaborate top-level user hierarchy
错误原因:
在这里插入图片描述
没有定义逻辑矢量的位数。
解决办法:将此行代码改成如下代码即可

Signal AA,BB,temp:STD_LOGIC_VECTOR(8 DOWNTO 0);

2、正确程序如下

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;     

ENTITY ADD8bit IS
PORT(A,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);    --两个加数
     Cin:IN STD_LOGIC;     --低位的进位输入信号
     Sum8_y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);     --和
     Cout:OUT STD_LOGIC);     --高位进位输出
END;

ARCHITECTURE ONE OF ADD8bit IS
Signal AA,BB,temp:STD_LOGIC_VECTOR(8 DOWNTO 0);
BEGIN
AA<='0'&A;
BB<='0'&B;
temp<=AA+BB+Cin;
Sum8_y<=temp(7 downto 0);
Cout<=temp(8);
END ONE;

对VHDL程序(流水灯程序)进行仿真
1、点击File->new->Vector Waveform File创建一个Vector Waveform File文件。

2、填添加仿真的引脚并设置好波形。(注:如下图所示)

3、点击图中红线所圈中的时序仿真按钮得到如图所示结果即可。

将VHDL程序文件(流水灯程序)烧入板载测试
1、点击Assignments->Pins在图中红线圈中的地方设置对应板载的引脚,设置完引脚后一定要记得再编译一次

2、点击烧入按钮,再在弹出的界面上点击start将VHDL程序烧入板载

3、调整好输入,得到输出,成功界面如下。

(注:输出进位信号引脚为PIN_95。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值