第三章 vhdl 语法

Download 第三章  VHDL 语法

If you can't read please download the document

Upload: thu

Post on 09-Jan-2016

183 views

Category:

Documents


12 download

DESCRIPTION

第三章 VHDL 语法. 3.1 VHDL 语言的基本结构 3.2 VHDL 语言的基本结构 3.3 VHDL 语言结构体的描述方法 3.4 VHDL 语言语言顺序描述语句 3.5 VHDL 语言并行描述语句. 3.1 VHDL 语言的基本结构. 3.1.1 VHDL 数据对象( Data Objects ). 1 、常数( Constant ). 定义格式为: Constant 常数名:数据类型 : = 表达式;. Constant width: integer := 7; Constant Vcc: REAL:=5.0; - PowerPoint PPT Presentation

TRANSCRIPT

  • VHDL 3.1 VHDL3.2 VHDL3.3 VHDL3.4 VHDL3.5 VHDL

  • 3.1.1 VHDLData ObjectsConstant width: integer := 7;Constant Vcc: REAL:=5.0; Constant D2:Std_Logic_Vector(width Downto 0):= 0000;LibraryEntityArchitectureProcess1ConstantConstant = 3.1 VHDL

  • 2 Signal [=] Signal A : Std_logic_vector(3 Down to 0) := 0000;
  • 3 Variable [=] Variable a: integer := 0; := a := b and c;

  • Signal clk: std_logic; Variable data: std_logic_vector(7 downto 0);Constant width: integer :=7 ;clk
  • Architecture abc of example is signal tmp:std_logic;Begin process(a,b,c) begin tmp
  • 3.1.2 VHDL 1 1Boolean stdstandard FALSETRUE 2Bit stdstandard 01

  • 3Bit_Vector stdstandard Signal A: bit_vector(0 to 7);Signal B: bit_vector(7 downto 0); A
  • 4Std_Logic IEEEstd_logic_1164 Library IEEE;Use IEEE.std_logic_1164.all;

  • bitVHDLBIT

    UX0011ZWL0H1-

  • 5Std_Logic_vector ieeestd_logic_1164 Bit_VectorStd_Logic_vectorBIT01Std_LogicSignal A: STD_LOGIC_VECTOR(0 to 7);Signal B: STD_LOGIC_VECTOR (7 downto 0); A
  • Variable a , b : std_logic;Signal data : std_logic_vector(0 to 3);a: = 1;b: = 0;data
  • 2. Signal data : std_logic_vector(0 to 3);data(1 to 2)
  • 1Integer

    stdstandard-231~231

    Signal day: integer range 0 to 31;

    Variable a,b,c: interger;

    C=a+b;

  • 0

    0

    Unsigned(0110) +6+ 10Unsigned(1010)signed(0110)+6signed(1010)-22UnsignedSignedSignedUnsignedIEEEstd_logic_arith

  • (STRING)

    VARIABLE string_yin : STRING (1 TO 7 ) ;string_yin := "a b c d" (CHARACTER)A a

    Aa

  • (TIME)TYPE time IS RANGE 2147483647 TO 2147483647 units fs ; -- VHDL ps = 1000 fs ; -- ns = 1000 ps ; -- us = 1000 ns ; -- ms = 1000 us ; -- sec = 1000 ms ; -- min = 60 sec ; -- hr = 60 min ; -- end units ;Q
  • TYPE 1TYPE IS(12);TYPE week IS (sun,mon,tue,wed,thu,fri,sat);2 TYPE IS ARRAY OF TYPE word IS ARRAY (0 TO 7) OF STD_LOGIC;

  • 3Record TypesC Type iocell is record Enable :bit; Data :bit_vector(7 downto 0); end record; singal bus : iocell; bus.Enable
  • SUBTYPE IS SUBTYPE data IS STD_LOGIC_VECTOR(7 DOWNTO 0); SUBTYPE digit IS INTEGER RANGE 0 TO 9;

  • bitbit_vectorboolean std_logicstd_logic_vector3.1.3 VHDLoperator

    =

    /=

    =

    AND

    BITBOOLEANSTD_LOGIC

    OR

    BITBOOLEANSTD_LOGIC

    NAND

    BITBOOLEANSTD_LOGIC

    NOR

    BITBOOLEANSTD_LOGIC

    XOR

    BITBOOLEANSTD_LOGIC

    XNOR

    BITBOOLEANSTD_LOGIC

    NOT

    BITBOOLEANSTD_LOGIC

    +

  • signal d1,d2,s : integer; SIGNAL a bc : STD_LOGIC_VECTOR (3 DOWNTO 0) SIGNAL defg : STD_LOGIC_VECTOR (1 DOWNTO 0) SIGNAL hIjk : STD_LOGIC SIGNAL lmnop : BOOLEAN ... s
  • /

    =

    /=

    =

    AND

    BITBOOLEANSTD_LOGIC

    OR

    BITBOOLEANSTD_LOGIC

    NAND

    BITBOOLEANSTD_LOGIC

    NOR

    BITBOOLEANSTD_LOGIC

    XOR

    BITBOOLEANSTD_LOGIC

    XNOR

    BITBOOLEANSTD_LOGIC

    NOT

    BITBOOLEANSTD_LOGIC

    +

  • +

    &

    *

    ()

    /

    ()

    MOD

    REM

    SLL

    BIT

    SRL

    BIT

    SLA

    BIT

    SRA

    BIT

    ROL

    BIT

    ROR

    BIT

    **

    ABS

  • Variabe data: std_logic_vector(3 donto 0) :=1011;Data SLL 1;--0110Data SRL 3;--0001Data ROL 1;--0111

    c

  • ENTITY IS [GENERIC] [PORT]END ENTITY ENTITY or2 IS PORTabIN STD_LOGIC; C: OUT STD_LOGIC); END ENTITY or2 3.2 VHDL3.2.1

  • ENTITY ISEND ENTITY I/OI/OGENERICGENERIC [CONSTANT] [IN] [:= ]]

  • GENERIC trisetfallTIME:=1ns; Addrwidth:INTEGER:=16);PORT(a0, a1 : IN STD_LOGIC; Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0); trisetfallAddrwidthAddrwidth

  • PORT PORT

  • clk DA 1IN loadresetenableclkaddress

  • 2OUT 3INOUT

  • 4BUFFER

  • OutBufferEntity test1 is port(a: in std_logic; b,c: out std_logic );end test1;

    architecture a of test1 is begin b

  • VHDLPCI/DMA

  • 3.2.2 ARCHITECTURE OF IS []BEGIN []END ;

  • (behavioral)(dataflow)(structural)

  • PROCESSArchitecture behavioral of eqcomp4 is begincomp: process (a,b) beginif a=b then equal
  • RTL

  • ab

    Architecture dataflow2 of eqcomp4 is beginequal

  • :

    Component [ IS ] [ Port ]End Component ;

    : Port Map

  • 1 Port Map1, 2,;architecture struct of eqcomp4 isCOMPONENT XNOR2PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC);END COMPONENT;COMPONENT and4PORT(a,b,c,d:IN STD_LOGIC; q:OUT STD_LOGIC);END COMPONENT; SIGNAL X:STD_LOGIC_VECTOR(0 TO 3);begin U0:xnor2 port map(a(0),b(0),x(0)); U1:xnor2 port map(a(1),b(1),x(1)); U2:xnor2 port map(a(2),b(2),x(2)); U3:xnor2 port map(a(3),b(3),x(3)); U4:and4 port map(x(0),x(1),x(2),x(3),equal);end struct;

  • 1 Port MapA=>A1, B=>B1,;architecture struct of eqcomp4 isCOMPONENT XNOR2PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC);END COMPONENT;COMPONENT and4PORT(a,b,c,d:IN STD_LOGIC; q:OUT STD_LOGIC);END COMPONENT; SIGNAL X:STD_LOGIC_VECTOR(0 TO 3);begin U0:xnor2 port map(A=>a(0),B=>b(0),C=>x(0)); U1:xnor2 port map(B=>b(1),A=>a(1),C=>x(1)); U2:xnor2 port map(A=>a(2),B=>b(2),C=>x(2)); U3:xnor2 port map(A=>a(3),B=>b(3),C=>x(3)); U4:and4 port ap(a=>x(0),b=>x(1),c=>x(2),d=>x(3),q=>equal);end struct;

  • processProcess [:] Process [()] []Begin

    End Process [];(Sensitivity list)

  • architecture m2 of examle isbegin

    A:Processa,bbegin c

  • 3.2.3 VHDL Procedure Function

  • PACKAGE IS[]END ;PACKAGE BODY IS[]END

  • (Function)Function Return Function Return IS Begin END Function

  • LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE hanshu IS -- FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -- RETURN STD_LOGIC_VECTOR ; FUNCTION func1 ( a,b,c : REAL ) -- RETURN REAL ; FUNCTION "*" ( a ,b : INTEGER ) -- RETURN INTEGER ;END ;PACKAGE BODY hanshu IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) -- RETURN STD_LOGIC_VECTOR IS BEGIN IF a > b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; --FUNCTIONEND; --PACKAGE BODY

  • LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.hanshu.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1

  • ProcedureProcedure Procedure IS Begin END Procedure

  • LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE hanshu IS -- procedure max( signal a,b: IN STD_LOGIC_VECTOR; signal c: out std_logic_vector)--END ;PACKAGE BODY hanshu IS procedure max( signal a,b: IN STD_LOGIC_VECTOR)-- signal c: out std_logic_vector) is BEGINc

  • LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.hanshu.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END;ARCHITECTURE bhv OF axamp IS BEGINmax(dat1,dat2,out1);max(dat3,dat4,out2);END;

  • INOUTINOUTIN()

  • VHDL

    ARCHITECTUREPROCESSFUNCTIONPROCEDURE3.3 VHDL

  • 3.3.1 VHDLProcessFunctionProcedureCASEIFLOOP

  • VHDL1

  • VHDLarchitecture abc of example issignal c :STD_LOGIC;beginPROCESS(a,b)beginc
  • VHDL2

    :=

  • VHDLarchitecture abc of example isbeginPROCESS(a,b)variable tmp:std_logic;begintmp:=a and b;out
  • VHDL3CASE

    Case Is WHEN =>; WHEN =>; WHEN OTHERS =>; End case;CASECASEOTHERS

  • architecture abc of example is signal sel:std_logic_vector(1 downto 0);beginsel f f f f null;end case;end process;end abc;others? VHDL

  • VHDL4IF1IF THEN END IF2IF THEN ELSE END IF3IF 1 THEN ELSIF 2 THEN ELSE END IFIF

  • architecture abc of example is signal sel:std_logic_vector(1 downto 0);beginsel
  • VHDL5LOOPFOR

    FOR IN LOOPEND LOOPLOOPLOOP

  • VHDL 8architecture abc of example isbeginPROCESS(a)variable tmp:std_logic;begintmp:=0;FOR i IN 0 to 7 LOOPtmp:=tmp XOR a(i);END LOOP;Y
  • VHDL5LOOPWHILE

    WHILE LOOPEND LOOP

  • VHDL 8architecture abc of example isbeginPROCESS(a)variable tmp:std_logic;begintmp:=0;i:=0;WHILE (i
  • 3.3.2 VHDLBLOCK

  • VHDL1PROCESS

    PROCESS12 []BEGINEND PROCESS

  • VHDLarchitecture abc of example issignal c :STD_LOGIC;beginJC1:PROCESS(a,b)begin c
  • Library ieee;Use ieee.std_logic_1164.all;Entity example isport(a,b:in std_logicc,d:out std_logic);End example;architecture m2 of examle isbegin

    Processa,bbegin

    c

  • architecture m2 of examle isbegin

    A:Processa,bbegin c

  • Library ieee;Use ieee.std_logic_1164.all;Entity example isport(a,b:in std_logicc,d:out std_logic);End example;architecture m2 of examle isbegin

    Processa,bvariable tmp1,tmp2:std_logic;begintmp1:=a and b;tmp2:=a or b;c

  • Process(sel,a,b)Beginf
  • 8Library ieee;Use ieee.std_logic_1164.all;Entity jojy is port(a:in std_logic_vector(0 to 7);q:out std_logic);End jojy;Architecture behave of jojy isBeginprocess(a)variable tmp:std_logic;begintmp:=0;for i in 0 to 7 loop tmp:= tmp xor a(i);end loop;q
  • VHDL2

  • VHDLarchitecture abc of example issignal c :STD_LOGIC;beginx
  • VHDL3

  • VHDL 8-3architecture abc of example isbeginout
  • VHDL4

    WITH SELECT

  • VHDL 41architecture abc of example isbeginsel
  • VHDL5BLOCK

    BLOCKBEGINEND BLOCK

  • VHDLarchitecture abc of example isbegin a1:BLOCK signal x:std_logic;beginx