四位数值比较器
![四位数值比较器](https://img.360docs.net/img88/1fzjk0aqcs1tbbiqwdu5c3gze9rq9cp5-81.webp)
![四位数值比较器](https://img.360docs.net/img88/1fzjk0aqcs1tbbiqwdu5c3gze9rq9cp5-d2.webp)
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的了解。
(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好
评与关注!)