2
내 테스트 벤치의 신호에 지연을 걸고 싶습니다. 문제는 수백 클럭 사이클이 필요하므로 수백 개의 중간 신호를 사용하고 싶지 않다는 것입니다.VHDL 테스트 벤치에서 신호 지연
이것은 시뮬레이션 용도로만 사용되었으므로 지연 가능성을 코드와 함께 추가 할 수있는 방법이 있습니까 (WAIT 또는 AFTER).
내 테스트 벤치의 신호에 지연을 걸고 싶습니다. 문제는 수백 클럭 사이클이 필요하므로 수백 개의 중간 신호를 사용하고 싶지 않다는 것입니다.VHDL 테스트 벤치에서 신호 지연
이것은 시뮬레이션 용도로만 사용되었으므로 지연 가능성을 코드와 함께 추가 할 수있는 방법이 있습니까 (WAIT 또는 AFTER).
transport
지연을 사용하려는 것 같습니다. 당신이 지연 할당을 만들면 기본적으로,이는 '관성'지연 모델을 사용합니다 : 귀하의 신호가 한 번에 100 ns의보다 더 전환하는 경우,이 예제와 함께, 그러나
my_sig_delayed <= my_sig after 100 ns;
를, 당신의 my_sig_delayed
신호를 따르지 않습니다 그것은 당신이 기대할 수있는대로. transport
지연을 사용하면 '지연 선'을 복제합니다.
my_sig_delayed <= transport my_sig after 100 ns;
좀 더 자세한 설명이
http://www.gmvhdl.com/delay.htm
대안은 당신이 필요로하는 지연 어떤 길이의 시프트 레지스터를 사용하는 것입니다보십시오
signal delay_line : std_logic_vector(255 downto 0) := (others => '0');
을 .. .
process (clk)
begin
if (rising_edge(clk)) then
delay_line <= delay_line(delay_line'left-1 downto 0) & my_sig;
end if;
end process;
my_sig_delayed <= delay_line(delay_line'left);
감사합니다. r 설명. 실제로 나는 내게 더 명백한 첫 번째 방법을 시도했지만, 내 신호주기가 지연보다 작으므로 작동하지 못했습니다. 다른 방법이 없다면 두 번째 옵션을 사용합니다. –
@ A.Kieffer 위의 두 번째 코드 줄에 'transport' 키워드를 사용하면 작동합니다. –
죄송합니다. 처음에는 그 점을 이해하지 못했습니다. 나는'수송'을 시도하고 잘 작동합니다. 감사합니다 @ scarry_jeff! –