跨时钟的信号一定要做同步处理,请问同步处理是下面哪种?
signal SynPulseIN1 : std_logic;
signal SynPulseIN2 : std_logic;
signal SynPulseIN3 : std_logic;
SynPulse:process
begin
WAIT UNTIL CLK100M ='1';
SynPulseIN1 <= PulseIN;
SynPulseIN2 <= SynPulseIN1;
SynPulseIN3 <= SynPulseIN2;
end process SynPulse;
还是这种:
SynPulse:process
Variable SynPulseIN1 : std_logic;
Variable SynPulseIN2 : std_logic;
Variable SynPulseIN3 : std_logic;
begin
WAIT UNTIL CLK100M ='1';
SynPulseIN1 <= PulseIN;
SynPulseIN2 <= SynPulseIN1;
SynPulseIN3 <= SynPulseIN2;
end process SynPulse;
我觉得第二种应该根本都对,因为变量没有延时;但第一种对吗,我打了三拍,这时候PulseIN这个外来的跨时钟信号应该是同步了吧,我就可以用它去计数或干点别的就行了,是吗?
|