基于原理图的十进制计数器的设计FPGA.docx
《基于原理图的十进制计数器的设计FPGA.docx》由会员分享,可在线阅读,更多相关《基于原理图的十进制计数器的设计FPGA.docx(10页珍藏版)》请在冰豆网上搜索。
![基于原理图的十进制计数器的设计FPGA.docx](https://file1.bdocx.com/fileroot1/2022-12/14/e0e583d9-ff9c-47a8-b1b8-9e8e32cf2792/e0e583d9-ff9c-47a8-b1b8-9e8e32cf27921.gif)
基于原理图的十进制计数器的设计FPGA
西南科技大学
实验报告
课程名称:
基于FPGA的现代数字系统设计
实验名称:
基于原理图的十进制计数器设计
姓名:
周伟
学号:
班级:
电子1103
指导教师:
刘桂华
西南科技大学信息工程学院制
实验一:
基于原理图的十进制计数器设计
一、实验目的:
1.熟悉和把握ISEFoudation软件的利用;
2.把握基于原理图进行FPGA设计开发的全流程;
3.明白得和把握“自底向上”的层次化设计方式;
4.温习数字电路设计的基础知识。
二、实验原理:
完成一个具有数显输出的十进制计数器设计,原理图如下图。
十进制计数器
七段数码管显示译码器
使能控制端
时钟端
异步清零端
FPGA
图十进制计数器原理图
本实验为完成设计,采纳了自底向上的设计流程。
自底向上设计是一种设计程序的进程和方式,是在设计具有层次结构的大型程序时,先设计一些较基层的程序,即去解决问题的各个不同的小部份,然后把这些部份组合成为完整的程序。
自底向上设计是从底层(具体部件)开始的,实际中不管是取用已有模块仍是自行设计电路,其设计本钱和开发周期都优于自顶向下法;但由于设计是从最底层开始的,因此难以保证整体设计的最正确性,例如电路结构不优化、能够共用的器件没有共用。
在现代许多设计中,是混合利用自顶向下法和自顶向上法的,因为混合应用可能会取得更好的设计成效。
一样来讲,自顶向下设计方式适用于设计各类规模的数字系统,而自底向上的设计方式那么更适用于设计小型数字系统。
1、七段数码管译码器的设计
七段数码管属于数码管的一种,是由7段二极管组成。
按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。
本实验利用共阴数码管。
它是指将一切发光二极管的阴极接到一同组成公共阴极(COM)的数码管。
共阴数码管在应历时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。
显示译码器,一样是将一种编码译成十进制码或特定的编码,并通过显示器件将译码器的状态显示出来。
依照显示的要求,能够取得七段显示译码器产生的各段LED输出与输入的二进制对应关系:
表七段字符显示真值表
数码
A3
A2
A1
A0
A
B
C
D
E
F
G
0
0
0
0
0
1
1
1
1
1
1
0
1
0
0
0
1
0
1
1
0
0
0
0
2
0
0
1
0
1
1
0
1
1
0
1
3
0
0
1
1
1
1
1
1
0
0
1
4
0
1
0
0
0
1
1
0
0
1
1
5
0
1
0
1
1
0
1
1
0
1
1
6
0
1
1
0
1
0
1
1
1
1
1
7
0
1
1
1
1
1
1
0
0
0
0
8
1
0
0
0
1
1
1
1
1
1
1
9
1
0
0
1
1
1
1
1
0
1
1
A
1
0
1
0
1
1
1
0
1
1
1
b
1
0
1
1
0
0
1
1
1
1
1
c
1
1
0
0
1
0
0
1
1
1
0
d
1
1
0
1
0
1
1
1
1
0
1
E
1
1
1
0
1
0
0
1
1
1
1
F
1
1
1
1
1
0
0
0
1
1
1
最小项译码器输出能产生输入变量的所有最小项,而任何一个组合逻辑函数都能够变换为最小项之和的标准形式,故采纳译码器和门电路可实现任何单输出或多输出的组合逻辑函数。
当译码器输出低电平有效时,一样选用与非门;当译码器输出高电平有效时,一样选用或门。
为了电路简单,我选择利用或非门。
本实验能够采纳ISE软件自带的“Decoder”库中的4线-16线译码器D4_16E(带使能端,输出高电平有效)和“Logic”库中的或非门。
依照表,能够绘制关于数码管A段的逻辑电路图如下图。
同理可绘制出剩余各段输出的逻辑图。
将以上绘制好的电路图生成对应的原理图模块,再绘制一个新的原理图,挪用刚生成的各段输出逻辑图的原理模块,取得完整的七段显示译码器设计如下图。
图七段显示译码器
2、十进制计数器的设计
挪用ISE软件自带的“Counter”库中的十进制计数器CD4CE。
CD4CE是一个同步十进制器,输入有异步清零操纵端CLR、工作使能操纵端CE和时钟输入端C,输出有BCD码计数值输出端Q3~Q0,进位输出端TC和输出状态标志位CEO。
CD4CE的功能表如表所示。
最后完成的计数器总逻辑电路设计如下图,其中TC端直接输出驱动数码管的小数点段dp,作为进位标志位。
表CD4CE的功能表
图十进制计数器总逻辑电路
三、实验内容
1、设计七段译码显示电路
新建一个工程,用led7命名。
为工程新建一个原理图文件,命名为segA。
采纳“最小项译码器+逻辑门”的方案,挪用ISE自带的元件符号,按图所示绘制好数码管A段LED的驱动逻辑电路。
并生成原理图模块符号,以便后面挪用。
利用相同的方式,依照下面各图搭建数码管B段LED、C段LED、D段LED、E段LED、F段LED、G段LED的驱动逻辑电路,并别离命名为segB、segC、segD、segE、segF、segG,生成各自的原理图模块符号。
图segA原理图
图segA集成模块图
再为工程新建一个原理图文件,命名为seg7,挪用前面生成的A~G段输出函数模块符号,如下图绘制七段显示译码器原理图。
生成模块符号,以便后面挪用。
2、设计十进制计数器
挪用CD4CE计数器符号和seg7模块符号,绘制计数器顶层原理图。
图十进制计数器总逻辑电路
四、实验仿真
1、七段译码显示电路的仿真
在资源治理区将“Sourcesfor”设置为“BehavioralSimulation”,然后在任意位置单击鼠标右键,在弹出的菜单当选择“NewSource”命令,然后选中“TestBenchWaveForm”类型,输入文件名为“test_segA”,点击Next进入下一页,设置好鼓励波形的参数。
设置好波形后在资源治理区当选中test_segA,在资源操作区中双击“XilinxISESimulator”下的“SimulateBehavioralModel”,启动ISESimulator执行仿真验证。
图segA鼓励波形
图segA仿真结果
依照上述方式别离仿真译码电路的其他模块。
结果分析:
从对七个译码器部件的仿真结果中能够看出,设计出来的译码器部件是完全符合咱们的要求。
能够利用七个译码器部件组成七段译码电路来进行仿真。
右键单击文件,选择“NewSource”成立一个seg7的testbench文件,命名为“test_seg7”,鼓励文件设置如以下图,对seg7进行仿真。
图seg7鼓励波形
图七段译码器仿真结果
结果分析:
由仿真结果可知,此七段译码电路符合咱们的要求。
能够完成七段译码的工作。
2、十进制计数器的仿真
添加名称为test_counter的鼓励文件,对十进制计数器进行功能仿真验证。
图十进制计数器鼓励文件
图十进制计数器功能仿真结果
结果分析:
此十进制计数器的功能符合咱们的要求。
能够进行十进制计数。
双击“UserConsreaints”下的“FloorplanArea/IO/Logic-Post-Synthesis”进行引脚的锁定,如下图
图引脚锁定图
双击“File”下的“Open”,打开“”文件,修改约束文件,如下图
图修改约束文件图
双击“ImplementDesign”进行布局布线,然后在“Post-RouteSimulate”下进行时序仿真。
图十进制计数器时序仿真结果
五、实验体会
通过这次实验,我更进一步的了解了ISE软件的功能。
学会利用ISE软件进行时序仿真和下载原理图和程序到实验板上。
在实验进程中也碰到了各类各样的困难和问题,只是在教师的帮忙下,克服了这些问题,顺利的完成了实验。
比如在这次实验中,碰到的最大的困难确实是约束文件的修改。
第一次修改时添加了错误的ucf文件,结果在布局布线的时候显现了问题。
最后请教教师才明白是文件添加错误,应该添加跟工程名字相同的ucf文件。
实验中的收成是专门大的,专门是实验板的利用。
一样情形下没有这些条件。
因此应该相当珍爱这些机遇。
试探题:
1、分析并说明本实验所完成的工程文件结构关系。
答:
counter是顶层文件,seg7是第二层文件,segA~segB是底层文件。
2、记录本实验中所完成的FPGA资源耗用情形和运行的时钟频率。
答:
FPGA资源耗用情形和运行的时钟频率如以下图所示。
图
(1)资源消耗情形
图
(2)时钟频率
3、在仿真鼓励信号的设计上组合电路和时序电路别离关注的重点是什么?
什么缘故?
答:
组合电路关注的是当前的输入信号,时序电路关注的是当前输入信号和电路原先的状态。
因为组合电路的输出只与那时的输入信号有关,而与其过去的状态无关。
时序电路某一时刻的输出信号不仅与那时的输入信号有关,而且与电途经去的状态有关。
4、如何分析仿真软件运行出的结果?
答:
将仿真结果里面的光标线拖到相应的位置,即能够看到相应的高低电平,对应真值表,就能够够依次检查仿真结果是不是正确。