是的,在一个process中不能检测两个上升沿变化
可以用一个中间变量记录上一次的值就可以了,例如:
if(clk11='0' AND clk1='1') then --检测上升沿
clk11<=clk1;
你试试下面这样成不成:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY pulsesd IS
PORT ( CLK1: IN STD_LOGIC;
CLK2: IN STD_LOGIC;
CLK3: OUT STD_LOGIC);
END ENTITY ;
ARCHITECTURE ONE OF pulsesd IS
SIGNAL A: STD_LOGIC := '0';
BEGIN
PROCESS (CLK1,CLK2)
BEGIN
IF RISING_EDGE(CLK1) THEN
IF CLK2='1' AND CLK2'LAST_VALUE='0' THEN
A <= NOT A;
END IF;
END IF;
END PROCESS;
CLK3 <= A;
END ONE;