728x90

 0. [verilog] 



 1. 풀이


분주기(prescaler)란 들어온 주기 신호를 다른 주기로 변환시켜주는 장치이다.

아래는 1/10로 clk을 변환하는 분주기의 코드이다.


+) 추가내용

실제로 수행을 해보니 1/10주기를 만들기 위해서는 if(i==5)를 통해 검사를 수행했어야 했다.

up pulse가 5번 들어오는 경우에 1/10주기 출력을 반전을 시켜주어야 1/10 분주기가 완성이 되는 것이었다.


따라서 아래에 있는 분주기는 1/20 주기의 출력을 가지는 분주기이다.



 2. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module prescaler(clk,reset,next_clk);
input clk,reset;
output reg next_clk;
 
integer i;
 
always @(negedge reset, posedge clk) begin
    if(~reset) begin
        i = 0;
        next_clk = 0;
    end
    else begin
        i = i+1;
        if(i==10begin
            i = 0;
            next_clk = next_clk+1;
        end
    end
end
 
endmodule
cs

 3. 참고




질문이나 지적 있으시면 댓글로 남겨주세요~

도움 되셨으면 하트 꾹!


+ Recent posts