基于VHDL的16进制计数器的程序设计.docx
- 文档编号:13460092
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:12
- 大小:664KB
基于VHDL的16进制计数器的程序设计.docx
《基于VHDL的16进制计数器的程序设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的16进制计数器的程序设计.docx(12页珍藏版)》请在冰点文库上搜索。
基于VHDL的16进制计数器的程序设计
FPGA实验报告
实验课程名称通信系统集成电路设计
实验项目名称QuartusII实验操作
专业班级通信一班
学生姓名刘雷杰
学号3009204128
指导教师陈为刚
实验一:
QuartusII操作及16进制加法器
1.实验目的
a)熟悉熟悉EDA工具QuartusII及modelsim软件的使用方法。
掌握用quartusii或其他EDA软件对VHDL源程序进行编译、调试、修改、波形仿真。
b)学习VHDL程序的软件及硬件的编写及仿真方法并熟练掌握VHDL程序的编写方法和注意事项。
c)编写、调试出16进制计数器的程序,仿真出波形。
d)在上面的基础上做出PCM9程序,并仿真出波形数据。
2.实验器材
a)电脑中要有QuartusII软件
b)电脑中要有Modelsim软件
3.实验内容
a)熟悉QuartusII和modelsim软件,并将两个软件进行配置,使软件可以用于为后面的软件进行调试。
b)尽量自己编写VHDL程序,做16进制的计数器实验,包括计数器程序和测试平台。
c)了解模块设计方法和思想,并设计并搭建测试平台。
4.实验要求
a)熟悉两个软件并配置好相关环境。
b)编写实验用的VHDL程序。
c)使用QuartusII编译,查找错误并修改到正确无误。
d)使用QuartusII仿真,生成波形文件。
e)保存相关文件,并书写实验报告。
5.实验步骤及结果
a)建立工程并加入16进制模块和测试平台。
1.建立工程。
在菜单栏里有fileNewProjectWizard,点击Next到这个界面。
输入项目名称。
后点击Finish,完成项目的创建。
2.建立文件。
在菜单栏里有fileNew,跳转到下面这个界面。
点击选择VHDLFile,这个选项后点击OK。
到环境中,写模块代码。
然后保存文件,按CTR+S。
出现下面的界面,输入要保存的名字。
我们这里保存为counter.vhd。
同理,同样的步骤编写测试平台的文件tb_counter.vhd。
下面是二个图。
b)配置相应环境,并调试。
1.在菜单栏里AssignmentsSettings,出现这个界面,修改如下图中所示。
2.同样在ToolsOptions,会出现下面的界面,对其进行了如下的设置。
点击OK进行保存设置。
最后经过几次实验编译成功了,出现了如下的对话框。
点击Ok就可以了。
c)仿真及结果。
在菜单栏里ToolsRunEDASmuliationToolsEDARLTSimulation
就会出现要进行仿真的结果如下图所示
6.实验总结
a)实验中在写完两个文件后出现了如下的错误:
Error:
Top-leveldesignentity"test_counter_16"isundefined,
从网上找到原因如下:
存的文件名和结构体名字不一致,在quartus软件中要求这样做,不然就出错。
解决方法一:
改结构体或文件保存名使其名字一致。
(这是一般的方法)
解决方法二:
点击project菜单,然后再点击setasTop-levelEntity(就是倒数第二行)下就行。
(这是软件自带的方法)
用第一方法,问题解决。
编译成功。
b)在进行modelsim波形输出的过程中,遇到过没有波形输出,查看了一下,认为是testbench没有设置正确,所以就会出现这种情况,把检查环境的互调配置修改为如下就正确了。
c)实验总结:
实验要认真细心,通过本实验,知道了VHDL具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门电路级三个不同层次的设计,能够完成从上层到下层(从抽象到具体)逐层描述的结构化设计思想。
要注意在程序编写过程中出现的错误提示信息,对其进行正确改正,基本上掌握EDA工具QuartusII软件的使用方法,并学会了用QuartusII软件建立项目并编写程序和调试下载的方法,基本上熟悉了VHDL程序的软件的仿真方法,也熟练掌握VHDL程序的编写方法和注意事项。
7.附录
a)模块程序(counter.vhd)
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
--useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitycounteris
Port(
reset:
instd_logic;
clock:
instd_logic;
dataout:
outstd_logic_vector(3downto0)
);
endcounter;
architectureBehavioralofcounteris
signalinner_reg:
std_logic_vector(3downto0);
begin
dataout<=inner_reg;
process(clock,reset)
begin
if(reset='1')then
inner_reg<="0000";
elsif(clock'eventandclock='1')then
inner_reg<=inner_reg+"0001";
endif;
endprocess;
endBehavioral;
b)测试平台(tb_counter.vhd)
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.all;
USEieee.numeric_std.ALL;
ENTITYtb_counterIS
ENDtb_counter;
ARCHITECTUREbehaviorOFtb_counterIS
--ComponentDeclarationfortheUnitUnderTest(UUT)
COMPONENTcounter
Port(
reset:
instd_logic;
clock:
instd_logic;
dataout:
outstd_logic_vector(3downto0)
);
ENDCOMPONENT;
--Inputs
SIGNALclk:
std_logic:
='0';
SIGNALrst:
std_logic:
='0';
--Outputs
SIGNALdataout1:
std_logic_vector(3downto0);
BEGIN
--InstantiatetheUnitUnderTest(UUT)
uut:
counterPORTMAP(
reset=>rst,
clock=>clk,
dataout=>dataout1
);
--clkgen:
clk_gen:
process
begin
clk<='0';waitfor100ns;
loop
clk<=notclk;waitfor6.25ns;
endloop;
endprocess;
reset_gen:
process
begin
rst<='1';waitfor1200us;
rst<='0';wait;
endprocess;
END;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 16 计数器 程序设计