数字电子技术基础课程设计报告书题目:2位数值比较器姓名:班级:指导教师:设计时间:2011年3月— 7月民族大学数学与计算机学院一、背景和编写目的随着时代的进步,社会的发展,科学技术的进步,我们会在很多地方用到比较器,比如,在体育竞技场地对一些选手的成绩进行比较,选出他们中的成绩优异者;我们为了比较一下不同物品的参数,我们可以利用一些科学技术来实现这些功能,使得我们的工作效率得以提高,减少了我们认为的工作量。
本次设计的目的就是通过实践掌握数字电路的分析方法和设计方法,了解了解EDA技术和maxplus2软件并掌握VHDL硬件描述语言的设计方法和思想。
以数字电子技术基础为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。
通过对比较器的设计,巩固和综合运用所学知识,提高分析、解决计算机技术实际问题的独立工作能力。
比较器有2位数比较器,4位数比较器,8位数比较器等多种。
本课程设计就是两位数比较器,可以实现2位二进制数值的比较。
二、EDA和VHDL的介绍EDA技术EDA技术的概念EDA是电子设计自动化(E1echonics Des5p AM•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>B。
反之,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<B);Y(A=B)= A1⊙B1)*(A0⊙B0)*I(A=B)。
其中I(A>B)、I(A<B)、I(A=B)都是来自低位的比较结果。
以下是具体的真值表备注:输出中的1、2、3分别代表A>B、A=B、A<B五、软件编程系统工作软件流程1)打开Max+plusII,进入编辑环境,如下图:2)新建文本文件,选择Text Editor file:如下图:3)点击ok进入文本编辑系统,输入源程序,如下图所示:4)建立工程,然后看编译是否有错误,直到通过编译为止:5)仿真建立波形文件:程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity Comp isport (A1 : in std_logic;B1 : in std_logic;A0 : in std_logic;B0 : in std_logic;AsmallerB : out std_logic;AbiggerB : out std_logic;AequalB : out std_logic);end Comp;architecture RTL of Comp issignal S_TMP : std_logic_vector(3 downto 0);beginS_TMP <= A1 & B1 & A0 & B0;process (S_TMP) begincase (S_TMP) iswhen "0000" => AsmallerB <= '0';AbiggerB <= '0';AequalB <= '1';when "0001" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "0010" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "0011" => AsmallerB <= '0';AbiggerB <= '0';AequalB <= '1';when "0100" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "0101" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "0110" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "0111" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "1000" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "1001" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "1010" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "1011" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "1100" => AsmallerB <= '0';AbiggerB <= '0';AequalB <= '1';when "1101" => AsmallerB <= '1';AbiggerB <= '0';AequalB <= '0';when "1110" => AsmallerB <= '0';AbiggerB <= '1';AequalB <= '0';when "1111" => AsmallerB <= '0';AbiggerB <= '0';AequalB <= '1';when others => AsmallerB <= '0';AbiggerB <= '0';AequalB <= '0';end case;end process;end RTL;运行仿真:仿真结果:六、系统调试1),软件打不开,解决办法把license.dat的文件拷贝到安装目录下面,2)逻辑图显示node missing source 错误,解决办法是把输入端口的名字改了,3)仿真结果总是出不来,解决的办法是单击Max+plus下拉菜单下面的Simulator,而不是直接点击运行。