2012-06-29 4 views
1

저는 Verilog과 CPLD를 처음 사용합니다. 나는 LED를 켜는 코드를 작성했는데 이제는 깜박 거리게하고 싶다.깜박이는 LED가 CPLD로 표시

module LEDON(LED);  

    output LED; 

    reg LED; 

    always 
    begin 
     LED=1'b1; 
    end 
endmodule 

LED를 켜고 끌 수있는 지연을 어떻게 추가합니까? 나는 그 때를 읽었습니다. 플립 플롭을 사용하여 클럭 속도를 늦춰야 만하지만, 이것이 무엇을 의미하는지는 확실하지 않습니다.

답변

4

클록 주파수를 늦출 필요가 없습니다. 당신이 원하는 것은 많은 클럭주기 후에 LED를 토글하는 카운터를 만드는 것입니다. 당신은 1MHz의 클럭을 가지고 있고, 당신이 초에 한 번씩지도를 전환하려면

후 기본적으로이 그냥 무료로 실행중인 카운터이

reg [31:0] count; 
reg  led_state; 
wire count_max = 32'd1_000_000; 


assign count_nxt = (count >= count_max) ? 32'd0 : count + 32'd1; 
assign led_state_nxt = (count == count_max) ? ~led_state : led_state; 

always @(posedge clk) 
begin 
    count <= count_nxt; 
    led_state <= led_state_nxt; 
end 

그런 짓을, 모든 시간은 특정 안타 값으로 설정하면 led_state를 토글하고 자체를 재설정합니다.

원하는 깜박임 속도 및 클록 주파수에 따라 count_max 값을 조정해야합니다.

+0

정확히 깜박이는 빈도에 대해 걱정할 필요가없는 경우 카운터의 상위 비트 중 하나를 사용하여 LED를 구동하고 비교를 수행 할 수 있습니다. –

관련 문제