방금 VHDL로 시작했는데 정확히 어떻게 프로세스가 작동하는지 이해하는 데 문제가 있습니다. 다음은 간단한 발진기의 예이다VHDL의 단순 발진기
timer_1Hz: process(clk) is
variable timer : integer := 0;
constant period : integer := 50E6;
begin
--if rising_edge(clk) then
timer := (timer+1) rem period;
if (timer=0) then
led <= not led;
end if;
--end if;
end process timer_1Hz;
CLK 50 MHz의 주파수를 가지는 입력 (클록) 신호이고, 50 %의 듀티 사이클. 나는 그것을 이해
은 이제 프로세스 timer_1Hz
는 그 1
에서 0
에 0
에서 1
로의 전환, 또는 여부에 관계없이 clk
신호의 변화에 트리거됩니다.
테스트가 주석 처리되었으므로 위의 예에서 주파수가 0.5 Hz
인 LED를 플래싱 할 것으로 예상됩니다. 다른 말로하면, 신체가 상승 및 하강 에지에서 단일 클록주기에 두 번 트리거 될 것으로 예상했습니다. 그러나 이는 작동하지 않는 것처럼 보입니다. 즉, LED가 절대로 켜지지 않습니다.
rising_edge
테스트를 포함하면 예상했던대로 LED가 1Hz 주파수로 깜박입니다.
예기치 않은 경우에 누락 된 부분을 설명해 주실 수 있습니까?
FPGA 레지스터는 모두 상승 및 하강 에지에 트리거 할 수 없습니다. 하나의 가장자리 만 사용해야합니다. – JHBonarius