LIBRARY IEEE
USE IEEE.STD_LOGIC_1164.ALL
USE IEEE.STD_LOGIC_UNSIGNED.ALL
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_BOB_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系统设计的基本点。
library ieeeuse ieee.std_logic_1164.all
use ieee.std_logic_unsigned.all
use ieee.std_logic_arith.all
entity source is
port(
clk : in std_logic
a,b : in std_logic_vector(7 downto 0)
YG,YE,YL: out std_logic
)
end
architecture one of source is
begin
process(clk)
begin
if(clk'event and clk='1')then
if (a>b) then
YG <= '1'
YE <= '0'
YL <= '0'
elsif(a=b) then
YG <= '0'
YE <= '1'
YL <= '0'
else
YG <= '0'
YE <= '0'
YL <= '1'
end if
end if
end process
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)