VHDL__硬件描述语言ztt.ppt
文本预览下载声明
entity half_adder is port(a,b:in bit; s,c:bit); end half_adder; architecture dataflow of half_adder is begin s=a xor b; c=a and b; end dataflow; 底层设计可以放在另外的文件中或者与顶层设计放在同一个文件中。 VHDL的时序描述 电路的时钟控制 上升沿:clk’EVENT AND clk=‘1’ 下降沿:clk’EVENT AND clk=‘0’ PROCESS(时钟信号名[,其它敏感信号]) BEGIN IF 时钟边沿表达式 THEN {语句;} END IF; END PROCESS; PROCESS BEGIN WAIT ON 时钟信号名 UNTIL 时钟边沿表达式 {语句;} END PROCESS; 触发器:D型 D Q CP Q --************************ Library IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; --************************ ENTITY D_FLIP IS PORT( CP,D :IN STD_LOGIC; Q :OUT STD_LOGIC ); END D_FLIP; ARCHITECTURE A OF D_FLIP IS BEGIN PROCESS(CP) BEGIN IF CP’EVENT AND CP=‘1’ THEN Q=D; END IF; END PROCESS; END A; PROCESS(时钟信号名) BEGIN IF 时钟边沿表达式 AND 复位置位条件表达式 THEN [复位/置位语句;] ELSE [其它执行语句;] END IF; END PROCESS; 复位/置位方式 同步1 同步2 PROCESS BEGIN WAIT ON 时钟信号名 UNTIL 时钟边沿表达式 IF 复位/置位条件表达式 THEN [复位/置位语句;] ELSE [其它执行语句;] END IF; END PROCESS; 异步 PROCESS(时钟信号,复位/置位信号) BEGIN IF 复位/置位条件表达式 THEN [复位/置位语句;] ELSIF 时钟边沿表达式 THEN [其它执行语句;] END IF; END PROCESS; 试设计一个(3 bit )的可逆计数器COUNTER3BIT.VHD Library IEEE; USE IEEE.STD_LOGIC-1164.ALL USE IEEE.STD_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --****************** ENTITY CH6_2_3b IS PORT( CP,DIR :IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) --counter ); End ch6_2_3b; Architecture a of ch6_2_3b IS SIGNAL QN:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN process(cp) begin if cp’event and cp=‘1’ then if dir=‘0’ then QN=QN+1; else QN=QN-1; END if; END if end process; Q=QN; END A; 例5.18 Moore型电路的描述 S1/01 S2/10 S4/00 S3/11 1 1 0 0 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity moore is port(clk,datain,re
显示全部