用VHDL语言设计一个4位二进制数据比较器,应该怎么设计

用VHDL语言设计一个4位二进制数据比较器,应该怎么设计,第1张

LIBRARY IEEE;

USE IEEESTD_LOGIC_1164ALL;

USE IEEESTD_LOGIC_UNSIGNEDALL;

ENTITY COMPARE4 IS                        ——四位比较器

PORT(IA_MORE_THAN_B:IN STD_LOGIC;     ——高位比较的标志位的输入

IB_MORE_THAN_A:IN STD_LOGIC;

IA_EQUAL_B:IN STD_LOGIC;

A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);——两个输入

B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

OA_MORE_THAN_B:OUT STD_LOGIC;

OB_MORE_THAN_A:OUT STD_LOGIC;

OA_EQUAL_B:OUT STD_LOGIC);

END COMPARE4;

ARCHITECTURE BEHAV OF COMPARE4 IS

BEGIN

PROCESS(IB_MORE_THAN_A, IA_EQUAL_B,IA_EQUAL_B)

BEGIN

IF(IA_EQUAL_B='1')THEN

——从最高位比较,如果高位大则停止比较输出结果,否则进行下一位比较

IF(A(3)>B(3))THEN              

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(3)<B(3))THEN

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSIF(A(2)>B(2))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(2)<B(2))THEN

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSIF(A(1)>B(1))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(1)<B(1))THEN

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSIF(A(0)>B(0))THEN

OA_MORE_THAN_B<='1';OB_MORE_THAN_A<='0';OA_EQUAL_B<='0';

ELSIF(A(0)<B(0))THEN

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='1';OA_EQUAL_B<='0';

ELSE

——如果输入中两个数相等的标志位为0,则表明高位不相等,停止比较,输出结果。

OA_MORE_THAN_B<='0';OB_MORE_THAN_A<='0';OA_EQUAL_B<='1';

END IF;

ELSE

OA_MORE_THAN_B<=IA_MORE_THAN_B;OB_MORE_THAN_A<=IB_MORE_THAN_A;

OA_EQUAL_B<=IA_EQUAL_B;

END IF;

END PROCESS;

END BEHAV;

VHDL 的英文全名是VHSIC Hardware Description Language(VHSIC硬件描述语言)。VHSIC是Very High Speed Integrated Circuit的缩写,是20世纪80年代在美国国防部的资助下始创的,并最终导致了VHDL语言的出现。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

端口是实体的对外接口,硬件对应物相当于引脚,其实它是一种隐式的信号定义。而信号本身可看成是一种显式的信号定义,它的硬件对应物是连接线。一句话,端口可看成信号!只不过端口模式(in、out、buffer等)限制了端口信号的功能,例如如果端口是out模式,则不能进行内部反馈赋值,而信号则可以随便赋值了。

端口是在实体中定义的,是实际存在的,对应着芯片的引脚;信号是在结构体中定义的,是个全局量,进程之间可以通过信号来通信,交换数据;变量是个局部量,只能用在定义的结构体或进里,不能用跳出进程或结构体。

你的ENTITY的声明里面:

duan : out std_logic_vector(7 to 0);

wei : out std_logic_vector(5 to 0)

用downto。。

即改为

duan : out std_logic_vector(7 downto 0);

wei : out std_logic_vector(5 downto 0)

应该就行了,希望能帮到你

PS。要是看到了,麻烦采纳下啊。。。我很认真的答,但有一半以上的都没回应。。

以上就是关于用VHDL语言设计一个4位二进制数据比较器,应该怎么设计全部的内容,包括:用VHDL语言设计一个4位二进制数据比较器,应该怎么设计、关于VHDL语言中signal 和port输出端口的区别、VHDL中端口、信号、变量有何异同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10120864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存