数字电路二位数值比较器Word文件下载.docx
《数字电路二位数值比较器Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字电路二位数值比较器Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
![数字电路二位数值比较器Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/27/2ff7853c-e578-4b6f-87fa-6c2d0ec29a74/2ff7853c-e578-4b6f-87fa-6c2d0ec29a741.gif)
本课程设计就是两位数比较器,可以实现2位二进制数值的比较。
二、EDA和VHDL的介绍
EDA技术
EDA技术的概念
EDA是电子设计自动化(E1echonicsDes5pAM•toM60n)的缩写。
由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异。
从EDA技术的几个主要方面的内容来看,可以理解为:
EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。
EDA技术的特点
采用可编程器件,通过设计芯片来实现系统功能。
采用硬件描述语言作为设计输入和库(LibraLy)的引入,由设计者定义器件的内部逻辑和管脚,将原来由电路板设计完成的大部分工作故在芯片的设计中进行。
由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量和难度,有效增强了设计的灵活性,提高了工作效率。
并且可减少芯片的数量,缩小系统体积,降低能源消耗,提高了系统的性能和可靠性。
能全方位地利用计算机自动设计、仿真和调试。
VHDL语言
VHDL语言的简介
VHDL语言是一种用于电路设计的高级的硬件描述语言。
其主要是应用在数字电路的设计中。
在一些实力较为雄厚的单位,它常被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计分成外部和内部,既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点.与其他硬件描述语言相比,VHDL的特点:
1、功能强大、设计灵活:
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
VHDL支持同步电路、异步电路和随机电路的设计。
VHDL支持自底向上的设计,又支持自顶向下的设计。
2、支持广泛、易于修改:
大多数EDA工具几乎都支持VHDL,故在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。
3、强大的系统硬件描述能力
VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL还支持预定义的和自定义的数据类型。
此外还有独立于器件的设计、很强的移植能力、易于共享和复用等特点。
三、系统组成
数据输入端|:
A1,B1,A0,B0
输出端口:
1,2,3
四、硬件设计
a、输入2位二进制数值分别用A1、B1、A0、B0表示
b、输出用1、2、3表示,其中1、2、3分别代表结果是A>
B、A=B、A<
B。
2位数值比较器以及逻辑图如下:
电路说明:
A、B是两B1个二位二进制数A1A0和B1B0,进行比较时首先比较高位即A1和B0,如果A1>
B1,则不管其他位数码为何值,一定有A>
反之,A1<
B1,则不管其他位数码为何值,一定有A<
B,如果,A1=B1,就比较下一位A0和B0,若A0>
B0则有A>
B;
若A0<
B0则有A<
B,否则是A=B。
根据上诉,可得A>
B、A<
B、A=B的逻辑函数式为:
Y(A>
B)=A1*B1′+(A1⊙B1)A0*B0′*I(A>
B);
Y(A<
B)=A1′*B1+(A1⊙B1)A0′*B0*I(A<
Y(A=B)=A1⊙B1)*(A0⊙B0)*I(A=B)。
其中I(A>
B)、I(A<
B)、I(A=B)都是来自低位的比较结果。
以下是具体的真值表
输入
输出
A1
B1
A0
B0
1
2
3
任意
备注:
输出中的1、2、3分别代表A>
B
五、软件编程
系统工作软件流程
1)打开Max+plusII,进入编辑环境,如下图:
2)新建文本文件,选择TextEditorfile:
如下图:
3)点击ok进入文本编辑系统,输入源程序,如下图所示:
4)建立工程,然后看编译是否有错误,直到通过编译为止:
5)仿真建立波形文件:
程序代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityCompis
port(
A1:
instd_logic;
B1:
A0:
B0:
AsmallerB:
outstd_logic;
AbiggerB:
AequalB:
outstd_logic
);
endComp;
architectureRTLofCompis
signalS_TMP:
std_logic_vector(3downto0);
begin
S_TMP<
=A1&
B1&
A0&
B0;
process(S_TMP)begin
case(S_TMP)is
when"
0000"
=>
AsmallerB<
='
0'
;
AbiggerB<
AequalB<
1'
0001"
0010"
0011"
0100"
0101"
0110"
0111"
1000"
1001"
1010"
1011"
1100"
1101"
1110"
1111"
whenothers=>
endcase;
endprocess;
endRTL;
运行仿真:
仿真结果:
六、系统调试
1),软件打不开,解决办法把license.dat的文件拷贝到安装目录下面,
2)逻辑图显示nodemissingsource错误,解决办法是把输入端口的名字改了,
3)仿真结果总是出不来,解决的办法是单击Max+plus下拉菜单下面的Simulator,而不是直接点击
运行。
七、心得体会
虽然刘老师曾经多次讲过如何使用该软件,但是在这个课程设计开始的时候,我们依旧很迷茫,不知道该怎么去做这个课程设计。
最后反复看了课本之后,才开始着手做2位数值比较器这个课题,在课程设计过程中,我们查阅了大量的资料,多次询问了同学许多问题,才把这个课题了解清楚。
开始时,对2位数值比较器的理解比较深入,可是在设计时总是忘记少连或者多连一些线路,所以开始的设计都是以失败而告终,这样的情况浪费了我们很多时间,通过这次做课程设计,我们了解到做课程设计也是对课本知识的巩固和加强,由于课本的知识很多,平时课间的学习并不能很好的理解和运用各个元件的功能,所以在这次课程设计中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识,平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
同时还可以记住更多的东西,比如一些芯片的功能,通过动手实践让我们对各个元件映像深刻,认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准,所以这次的课程设计对我们的作用是非常大的。
虽然此课程设计对我们组很有压力,可是当我们看到我们的成果时,我们感到了高兴,同时明白了有些事情即使再难,在枯燥,只要我们尽自己最大的努力,最后也能完成的很好。
我们应该克服自己懒惰的心理,只要敢于动手去做,其实所有事情并不是想象中的那么难。
通过这次课程设计,加强了我们动手、思考和解决问题的能力,明白了做事要注意细节,最后对MAX+plus这个软件产生了兴趣。
八、参考文献
[1]数字电子技术基础(第五版),阎石主编,高等教育出版社
[2]数字系统设计及VHDL实战,徐向明主编,机械工业出版社
[3]黄仁欣.EDA技术实用教程.北京:
清华大学出版社,2006
九、附录
程序原理图:
程序
代码以及部分注释:
--使IEEE库可见
--调用IEEE库中的程序包
--
entityCompis--实体说明
--二进制输入端口
--结果输入端口
architectureRTLofCompis--结构体描述
--输入4个二进制数值
case(S_TMP)is--case语句