EDA实验报告计数器.doc
- 文档编号:1256957
- 上传时间:2022-10-19
- 格式:DOC
- 页数:10
- 大小:259.55KB
EDA实验报告计数器.doc
《EDA实验报告计数器.doc》由会员分享,可在线阅读,更多相关《EDA实验报告计数器.doc(10页珍藏版)》请在冰豆网上搜索。
数字电路与逻辑设计实验报告
模323计数器设计实验报告
一、实验内容
在QuartusII平台上,利用VHDL代码实现学号323计数器的设计,并在三位数码管显示出来。
二、实验步骤与过程分析
1、建立工程。
打开QuartusII软件平台,点击File---〉newprojectwizard建立一个工程xuehao_323,工程所在文件夹名字为xuehao_323,设置顶层实体名称为xuehao_323,点击next设置device,按照实验箱上FPGA的芯片名更改编程芯片的设置。
分析:
选择的硬件平台是AlteraEPF10K20TI144_4的FPGA试验箱。
2、添加VHDL文件。
在所在工程添加文件cnt10.vhd(十进制计数器),cnt_xuehao.vhd(323进制计数器),scan_led3_vhd.vhd(三位数码管显示),exp_cnt_xuehao323_7seg.vhd(数码管显示323三位学号计数器)四个文件。
这里通过老师给出的代码进行修改且理解:
cnt10.vhd如下:
分析:
这是十进制计数器的VHDL代码设计,因为十进制有十个状态,所以输入数据和输出状态需要四位宽,其中输入端口有aclr 清零端,clock时钟信号,cnt_en使能端,data[3..0]数据输入,sload装载使能,当aclr为高电平有效时,输出清零,从0开始,计数为时钟信号clock的上升沿到来时且使能端cnt_en为高电平有效时自动加1(sload为低电平时),如果装载使能sload为高电平有效时,则装载数据data[3..0],输出端口有两个,分别为cout(当q[3..0]为9时输出为高电平),q[3..0]变化为0—9循环变化。
cnt_xuehao.vhd分析如下:
这里是调用cnt_10十进制计数器的元件例化来设计323(学号)计数器。
输入端口aclr(高电平有效清零端),clock(时钟信号上升沿有效),cnt_en(使能端),sload(装载时能,高电平有效时装在输入的数据),datab[3..0],datas[3..0],datag[3..0](三位学号的数据输入端,每位变化相当于一个十进制计数器);输出端口qb[3..0](百位)qs[3..0](十位)qg[3..0](个位)变化为qbqsqg=000到322共323中状态,当等于322时,输出cout为高电平指示达到一个循环。
这里的主要思想是用三次十进制计数器分别生成323计数器的三位。
scan_led3_vhd.vhd如下:
分析:
这里是七段数码管的显示,显示八个数码管中的三个。
输入引脚scan_clk为时钟源,cnt_aclr为清零端,datab[3..0],datas[3..0],datag[3..0]为数据输入,用以显示得到三位十六进制的数,已在数码管上显示出来,输出接口seg7[6..0]用来接七段数码管的abcdefg段, wei[2..0]用来选择八个数码管中的三个来显示输入数据。
exp_cnt_xuehao323_7seg.vhd如下:
分析:
这里是用到元件例化把323计数器和3位数码管结合,达到在七段数码管上显示323计数器的输出的三位。
也是我们实验的最终目的,显示计数器的状态变化。
输入引脚和输出引脚都是上面几个vhd文件的结合,主要有输入接口aclr(高电位清零),clock(计数器时钟信号),scan_clk(数码管时钟源),cnt_en(时能端),sload(装在时能),数据装载输入datab[3..0](百位),datas[3..0](十位),datag[3..0](个位);输出端口cout(当输出状态为322时cout输出为高电平),seg7[6..0](七段数码管的abcdef段), wei[2..0]三位数码管显示。
3、简单编译
这里首先点击左上角files中,选择exp_cnt_xuehao323_7seg.vhd右击选择SetasTop-levelEntity设为为顶层文件,然后键盘按下Ctrl+L进行编译。
提示成功。
4、RTL调试
点击Tools->Netlistviewers->RTLviewer命令查看经软件解释生成的原理图如下:
分析:
如上图由两部分组成,一部分是cnt_xuehao(323计数器),另一部分是scan_led3_vhd(三位数码管),输出端为cout和wei[2..0],seg7[6..0].输入端为aclr(清零命令),clock(计数器时钟信号),cnt_en(使能端),sload(装载使能),数据输入datab[3..0](百位),datas[3..0](十位),datag[3..0](个位),scan_clk(数码管时钟源).
容易验证RTL调试与VHD文件相符。
点击cnt_xuehao部分生成cnt_xuehao的RTL部分如下图:
分析:
如图知道323计数器主要部分是由三个十进制计数器组成的。
与相应的VHDL代码的实现功能是一致的。
4.功能仿真
下面我只对文件cnt_xuehao.vhd进行功能仿真,即对(学号)323计数器进行功能仿真。
首先设置cnt_xuehao.vhd为顶层实体文件(因为之前exp_cnt_xuehao323_7seg.vhd为顶层实体文件)。
然后进行简单编译一次。
a).点击File->New->VectorWaveformFile建立波形文件。
点击“insertthenode”,插入输入端和输出端接口。
b).然后设置输入端colck的周期为10ns;设置datab,datas,datag,qb,qs,qg为ASCII显示;手动设置aclr(清零命令)为低电平,然后在180ns左右设置一小段为高电平以验证清零作用;手动设置cnt_en(使能端)恒为高电平有效;手动设置sload(装载使能)在前一周期为高电平有效,得以第一周期转载输入的数据,接着一个周期后恒为低电平无效,之后只做时钟计数;手动设置输入数据datab,datas,datag均恒为0,然后在第一周期把它们设置为399得以第一周期装载(装载使能sload有效)数据,则计数从399开始(我的学号为323)。
则初始设置完成,如下图:
保存波形文件为cnt_xuehao.vwf
c)选择ProcessingàGenerateFunctionalSimulationNetlist命令,产生功能仿真网表。
d)选择AssignmentsàSettings命令,单击SimulatorSettings选项,在右侧的Simulationmode下拉列表中选择Functional项,并指定Simulationinput波形文件为cnt_xuehao.vwf,单击OK按键完成设置
e)选择ProcessingàStartSimulation命令,完成功能仿真,仿真结果为:
结果分析:
这里设置从399开始计数
如图,使能端一直有效,第一个周期内,sload装载时能有效,所以上升沿到来前,输出qbqsqg=000,上升沿到来时,由于sload为高电平有效,输入数据databdatasdatsg为399,所以装载入399,所以输出qbqsqg=399;第二个周期开始,每个周期随着时钟信号上升沿的到来时,开始计数,所以qbqsqg从399变化为400,401,402,403,404,405,406,407,322,000(我的学号为323,所以323进制计数器设计成功),然后当180ns附近清零端aclr为高电平,则执行清零命令,则输出qbqsqg变为000,接着又开始继续计数。
综上分析,323计数器设计成功,且有清零命令,装载输入功能,自动计数功能。
5.引脚设置与下载测试
a)目标器件选择及管脚分配。
选择菜单AssignmentsàPins,然后在分配窗口为输入端和输出端设置管脚。
如图为详细的引脚设置:
b)进行一次全编译(ctrl+L)后,开始下载验证。
选择好硬件设施,然后点击start进行下载
分析:
这里是在宿舍用老师给的小电路板安装驱动后来进行下载实验的,这里出现的问题明明只选择了三个数码管,但是八个都一起亮了,换了很多块板子都是这样的问题,所以验证没有顺利进行,只有下次做实验时再继续在实验室用专用实验箱进行验证了。
三、实验总结
这次实验最大收获是搞清楚了计数器的功能原理和完全接触到了元件例化的用法,这里通过几个文件相互元件例化的调用而达到从一位到三位的计数器设计,这么多次元件例化的接触,印象很深刻。
还有通过波能仿真的过程也收获很大,在初始化输入端的设置用了很多技巧,得以把计数器的清零功能装载功能和计数功能都仿真出来。
10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告 计数器
![提示](https://static.bdocx.com/images/bang_tan.gif)