LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK, RST, EN, D: INSTD_LOGIC ; Q : OUTSTD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK,Q1, RST, EN) BEGIN IF RST=‘1’ THEN Q1<=‘0’; ELSIF CLK'EVENTAND CLK = '1‘ THEN IF EN=‘1’ THEN Q1 <= D; ENDIF; ENDIF; ENDPROCESS ; Q <= Q1 ; END bhv; --说明:若将IF RST=‘1’ THEN Q1<=‘0’ 写在检测上升沿外面就是异步复位,若写在里面则是同步复位
--赋值语句 ARCHITECTURE curt OF bc1 IS SIGNAL s1, e, f, g, h : STD_LOGIC ; BEGIN output1 <= a AND b ; output2 <= c + d ; g <= e OR f ; h <= e XOR f ; s1 <= g ; ENDARCHITECTURE curt; --条件赋值语句 ARCHITECTURE behv OF mux IS BEGIN z <= a WHEN p1 = '1'ELSE b WHEN p2 = '1'ELSE c ; END; --选择信号赋值语句 WITH 选择表达式 SELECT 赋值目标信号 <= 表达式 WHEN 选择值 表达式 WHEN 选择值 ... 表达式 WHEN 选择值;
instruction <= c & b & a ; WITH instruction SELECT dataout <= data1 AND data2 WHEN"000" , data1 OR data2 WHEN"001" , data1 NAND data2 WHEN"010" , data1 NOR data2 WHEN"011" , data1 XOR data2 WHEN"100" , data1 XNOR data2 WHEN"101" , 'Z'WHENOTHERS ; -- 元件例化语句
COMPONENT 元件名 IS GENERIC (类属表); -- 元件定义语句 PORT (端口名表); ENDCOMPONENT 文件名;
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CONTROL IS PORT ( clk,reset : INSTD_LOGIC; inputs : INSTD_LOGIC_VECTOR (0TO1); red,green,yellow : OUTSTD_LOGIC ); END CONTROL; ARCHITECTURE behv OF CONTROL IS TYPE FSM_ST IS (s0, s1, s2);--数据类型定义,状态符号化 SIGNAL current_state, next_state: FSM_ST; BEGIN REG: PROCESS (reset,clk) --主控时序进程 BEGIN IF reset = ‘1’ THEN current_state <= s0; ELSIF clk='1'AND clk'EVENTTHEN current_state <= next_state; ENDIF; ENDPROCESS;
COM:PROCESS(current_state, inputs) --主控组合进程 BEGIN CASE current_state IS WHEN s0 => red='1';green='0';yellow='0'; IF state_inputs = "00"THEN next_state<=s0; ELSE next_state<=s1; ENDIF; WHEN s1 => red='0';green='1';yellow='0'; IF state_inputs = "01"THEN next_state<=s1; ELSE next_state<=s2; ENDIF; WHEN s2 => red='0';green='0';yellow='1'; IF state_inputs = "10"THEN next_state <= s0; ELSE next_state <= s3; ENDIF; WHENOTHERS => next_state <= s0; ENDcase; ENDPROCESS; END behv;