等长的一维矢量;
(3)BOOLEAN类型; (4)BOOLEAN类型; 8-14 程序 :
LIBRARY IEEE ; USE ---- ;
USE IEEE.STD_LOGIC_ARITH.ALL ; PACKAGE STD_LOGIC_UNSIGNED IS FUNCTION “ + ” ( L : AGE ; R : INTEGER ) RETURN AGE ; END STD_LOGIC_UNSIGNED ;
LIBRARY IEEE ; USE ---- ;
USE IEEE.STD_LOGIC_ARITH.ALL ;
PACKAGE BODY STD_LOGIC_UNSIGNED IS FUNCTION “ + ” ( L : AGE ; R : INTEGER ; ) RETURN AGE IS
VARIABLE RESULT : INTEGER ; BEGIN
RESULT := CONV_INTEGER(L)+R ;
RETURN CONV_AGE(RESULT) ; END FUNCTION “ + ” ; ----
END STD_LOGIC_UNSIGNED ;
LIBRARY IEEE ; USE ---- ;
USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE. STD_LOGIC_UNSIGNED.ALL ENTITY ---- IS PORT ( ---- ) ;
END ENTITY ---- ;
ARCHITECTURE ---- OF ---- IS SIGNAL a, c : AGE ; ---- BEGIN
c <= a + 20 ;
END ARCHITECTURE ---- OF ---- ; 8-15
第一种设计方案:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity comp8 is
port (a,b: in integer range -127 to 127; d,e,f: out std_logic ); end comp8;
architecture behav1 of comp8 is begin
process (a,b) begin
d<=?0?;e<=?0?;f<=?0?; if (a=b) then d<=?1?; elsif (a>b) then e<=?1?; else f<=?1?; end if; end process; end architecture behav1;
第二种设计方案:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity comp8 is
port (a,b: in signed(8 downto 0); d,e,f: out integer range 0 to 1); end comp8;
architecture behav2 of comp8 is begin
process (a,b)
variable c: signed(8 downto 0); begin
d<=0;e<=0;f<=0; c:=a-b;
if (c=0)then d<=1; elsif (c(8)='0') then e<=1; else f<=1; end if; end process; end architecture behav2;
问题:
1.任意一个二进制数都有符号位?