基于原理图的十进制计数器的设计(FPGA).doc
《基于原理图的十进制计数器的设计(FPGA).doc》由会员分享,可在线阅读,更多相关《基于原理图的十进制计数器的设计(FPGA).doc(15页珍藏版)》请在冰豆网上搜索。
实验一:
基于原理图的十进制计数器设计
一、实验目的:
1.熟悉和掌握ISEFoudation软件的使用;
2.掌握基于原理图进行FPGA设计开发的全流程;
3.理解和掌握“自底向上”的层次化设计方法;
4.温习数字电路设计的基础知识。
二、实验原理:
完成一个具有数显输出的十进制计数器设计,原理图如图2.1所示。
十进制计数器
七段数码管显示译码器
使能控制端
时钟端
异步清零端
FPGA
图2.1十进制计数器原理图
本实验为完成设计,采用了自底向上的设计流程。
自底向上设计是一种设计程序的过程和方法,是在设计具有层次结构的大型程序时,先设计一些较下层的程序,即去解决问题的各个不同的小部分,然后把这些部分组合成为完整的程序。
自底向上设计是从底层(具体部件)开始的,实际中无论是取用已有模块还是自行设计电路,其设计成本和开发周期都优于自顶向下法;但由于设计是从最底层开始的,所以难以保证总体设计的最佳性,例如电路结构不优化、能够共用的器件没有共用。
在现代许多设计中,是混合使用自顶向下法和自顶向上法的,因为混合应用可能会取得更好的设计效果。
一般来说,自顶向下设计方法适用于设计各种规模的数字系统,而自底向上的设计方法则更适用于设计小型数字系统。
1、七段数码管译码器的设计
七段数码管属于数码管的一种,是由7段二极管组成。
按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。
本实验使用共阴数码管。
它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。
显示译码器,一般是将一种编码译成十进制码或特定的编码,并通过显示器件将译码器的状态显示出来。
根据显示的要求,可以得到七段显示译码器产生的各段LED输出与输入的二进制对应关系:
表2.1七段字符显示真值表
数码
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”库中的或非门。
根据表2.1,可以绘制关于数码管A段的逻辑电路图如图2.2所示。
同理可绘制出剩余各段输出的逻辑图。
将以上绘制好的电路图生成对应的原理图模块,再绘制一个新的原理图,调用刚生成的各段输出逻辑图的原理模块,得到完整的七段显示译码器设计如图2.2所示。
图2.2七段显示译码器
2、十进制计数器的设计
调用ISE软件自带的“Counter”库中的十进制计数器CD4CE。
CD4CE是一个同步十进制器,输入有异步清零控制端CLR、工作使能控制端CE和时钟输入端C,输出有BCD码计数值输出端Q3~Q0,进位输出端TC和输出状态标志位CEO。
CD4CE的功能表如表2.2所示。
最后完成的计数器总逻辑电路设计如图2.4所示,其中TC端直接输出驱动数码管的小数点段dp,作为进位标志位。
表2.2CD4CE的功能表
图2.3十进制计数器总逻辑电路
三、实验内容
1、设计七段译码显示电路
新建一个工程,用led7命名。
为工程新建一个原理图文件,命名为segA。
采用“最小项译码器+逻辑门”的方案,调用ISE自带的元件符号,按图3.1所示绘制好数码管A段LED的驱动逻辑电路。
并生成原理图模块符号,以便后面调用。
使用相同的方法,按照下面各图搭建数码管B段LED、C段LED、D段LED、E段LED、F段LED、G段LED的驱动逻辑电路,并分别命名为segB、segC、segD、segE、segF、segG,生成各自的原理图模块符号。
图3.1segA原理图图3.2segB原理图
图3.3segC原理图图3.4segD原理图
图3.5segE原理图图3.6segF原理图
图3.7segG原理图
图3.8segA集成模块图
图3.9segB集成模块图
图3.10segC集成模块图
图3.11segD集成模块图
图3.12segE集成模块图
图3.13segF集成模块图
图3.14segG集成模块图
再为工程新建一个原理图文件,命名为seg7,调用前面生成的A~G段输出函数模块符号,如图2.2所示绘制七段显示译码器原理图。
生成模块符号,以便后面调用。
2、设计十进制计数器
调用CD4CE计数器符号和seg7模块符号,绘制计数器顶层原理图。
图3.15十进制计数器总逻辑电路
四、实验仿真
1、七段译码显示电路的仿真
在资源管理区将“Sourcesfor”设置为“BehavioralSimulation”,然后在任意位置单击鼠标右键,在弹出的菜单中选择“NewSource”命令,然后选中“TestBenchWaveForm”类型,输入文件名为“test_segA”,点击Next进入下一页,设置好激励波形的参数。
设置好波形后在资源管理区中选中test_segA,在资源操作区中双击“XilinxISESimulator”下的“SimulateBehavioralModel”,启动ISESimulator执行仿真验证。
图4.1segA激励波形
图4.2segA仿真结果
按照上述方法分别仿真译码电路的其他模块。
图4.3segB激励波形
图4.4segB仿真结果
图4.5segC激励波形
图4.6segC仿真结果
图4.7segD激励波形
图4.8segD仿真结果
图4.9segE激励波形
图4.10segE仿真结果
图4.11segF激励波形
图4.12segF仿真结果
图4.13segG激励波形
图4.14segG仿真结果
结果分析:
从对七个译码器部件的仿真结果中可以看出,设计出来的译码器部件是完全符合我们的要求。
可以使用七个译码器部件组成七段译码电路来进行仿真。
右键单击文件,选择“NewSource”建立一个seg7的testbench文件,命名为“test_seg7”,激励文件设置如下图,对seg7进行仿真。
图4.15seg7激励波形
图4.16七段译码器仿真结果
结果分析:
由仿真结果可知,此七段译码电路符合我们的要求。
能够完成七段译码的工作。
2、十进制计数器的仿真
添加名称为test_counter的激励文件,对十进制计数器进行功能仿真验证。
图4.17十进制计数器激励文件
图4.18十进制计数器功能仿真结果
结果分析:
此十进制计数器的功能符合我们的要求。
能够进行十进制计数。
双击“UserConsreaints”下的“FloorplanArea/IO/Logic-Post-Synthesis”进行引脚的锁定,如图4.19所示
图4.19引脚锁定图
双击“File”下的“Open”,打开“counter.ucf”文件,修改约束文件,如图4.20所示
图4.20修改约束文件图
双击“ImplementDesign”进行布局布线,然后在“Post-RouteSimulate”下进行时序仿真。
图4.21十进制计数器时序仿真结果
五、实验体会
通过这次实验,我更进一步的了解了ISE软件的功能。
学会使用ISE软件进行时序仿真和下载原理图和程序到实验板上。
在实验过程中也遇到了各种各样的困难和问题,不过在老师的帮助下,克服了这些问题,顺利的完成了实验。
比如在这次实验中,遇到的最大的困难就是约束文件的修改。
第一次修改时添加了错误的ucf文件,结果在布局布线的时候出现了问题。
最后请教老师才知道是文件添加错误,应该添加跟工程名字相同的ucf文件。
实验中的收获是很大的,特别是实验板的使用。
一般情况下没有这些条件。
所以应该相当珍惜这些机会。
思考题:
1、分析并说明本实验所完成的工程文件结构关系。
答:
counter是顶层文件,seg7是第二层文件,segA~segB是底层文件。
2、记录本实验中所完成的FPGA资源耗用情况和运行的时钟频率。
答:
FPGA资源耗用情况和运行的时钟频率如下图所示。
图
(1)资源消耗情况
图
(2)时钟频率
3、在仿真激励信号的设计上组合电路和时序电路分别关注的重点是什么?
为什么?
答:
组合电路关注的是当前的输入信号,时序电路关注的是当前输入信号和电路原来的状态。
因为组合电路的输出只与当时的输入信号有关,而与其过去的状态无关。
时序电路某一时刻的输出信号不仅与当时的输入信号有关,而且与电路过去的状态有关。
4、如何分析仿真软件运行出的结果?
答:
将仿真结果里面的光标线拖到相应的位置,便可以看到相应的高低电平,对应真值表,就可以依次检查仿真结果是否正确。