四位数值比较器

四位数值比较器
四位数值比较器

EDA技术课程大作业

设计题目:四位数值比较器

院系:电子信息与电气工程系

学生姓

学号:200902070035

专业班级:09电子信息工程(升)

2010年12月9日

四位数值比较器

1. 设计背景和设计方案

1.1设计背景

在数字电路中,比较器的逻辑功能是用来对两输入端口送来的数据进行比较操作,然后将比较的结果送到输出端口上。通常,比较器对两个输入数据进行比较可以得到三种基本的比较结果:大于、小于和等于。当然,比较器也可以得到不大于、不小于和不等于等结果,而这几种结果可以由三种基本的比较结果进行取反运算即可。

1.2设计方案

四位数值比较器是数字电路中应用得最广泛的一种比较器。一般来说,四位数值比较器的实体模块如图1-2-1所示,与其对应的真值表如表1-2-1所示。比较器含有两个4位位矢量输入端口A和B,3个比较结果输出端口GT、EQ、LT,以及3个级联输入端口I1、I2、I3。其中级联输入端口的作用是用来进行芯片的级联操作。通过这些端口可以对比较器的功能进行扩展。

图1-2-1 四位比较器实体模块

表1-2-1 四位比较器的真值表

2. 方案实施

2.1四位数值比较器的设计

1、设计思路文字描述

根据实体模块和真值表可知,设计两组四位数据输入端口,三个级联输入端口,三个数据比较结果输出端口。

2、程序

library ieee;

use ieee.std_logic_1164.all;

entity comparator is

port(A0,A1,A2,A3: in std_logic;

B0,B1,B2,B3: in std_logic;

I1,I2,I3: in std_logic;

GT,EQ,LT: out std_logic);

end comparator;

architecture one of comparator is

signal A_tmp,B_tmp:std_logic_vector(3 downto 0);

begin

A_tmp <= A3&A2&A1&A0;

B_tmp <= B3&B2&B1&B0;

process(A_tmp,B_tmp,I1,I2,I3)

begin

if(A_tmp > B_tmp) then

GT <='1'; EQ <='0'; LT <='0';

elsif(A_tmp < B_tmp) then

GT <='0'; EQ <='0'; LT <='1';

elsif(A_tmp = B_tmp) then

if(I2='1') then

GT <='0'; EQ <='1'; LT <='0';

elsif(I1='1') then

GT <='1'; EQ <='0'; LT <='0';

elsif(I3='1') then

GT <='0'; EQ <='0'; LT <='1';

end if;

end if;

end process;

end one;

3、运行结果文字描述

运行程序全部成功通过,有十六个警告。

4、波形仿真图

5、仿真结果文字描述

当输入端口A3A2A1A0=1111 > B3B2B1B0=0000时,输出端口GT=1,EQ=0,LT=0。当输入端口A3A2A1A0=0000 < B3B2B1B0=1111时,输出端口GT=0,EQ=0,LT=1。当输入端口A3A2A1A0 = B3B2B1B0=0000且I2=1时,输出端口GT=0,EQ=1,LT=0。当输入端口A3A2A1A0 = B3B2B1B0=0000且I1=1时,输出端口GT=1,EQ=0,LT=0。

当输入端口A3A2A1A0 = B3B2B1B0=0000且I3=1时,输出端口GT=0,EQ=0,LT=1。

3.结果和结论

程序经过运行和修改,最后终于编译成功。通过波形仿真,得到了预期的结果。在编写程序时要特别注意程序中的关键字一定不能错,否则就会出错。保存工程的文件夹不能用中文名,也最好不要用数字。在保存实体文件时,文件名一定要与实体名相同。否则也会出错。通过这次设计,进一步加深了对EDA的了解。

(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好

评与关注!)

相关主题
相关文档
最新文档