지난 실습에 이어서 DE2-115 보드를 이용하여 클럭 분주기를 실습한다.
[Clock Divider]
[clk_gen.v]
clk_gen.v 에서 clk_1k 1kHz 로 분주하는 코드로 수정하고, Symbol clk_gen 을 업데이트한다.
더보기
/////----------------------------------------/////
module clk_gen(
/////----------------------------------------/////
input clk,
input rst_n,
input en,
output reg clk_2,
output reg clk_4,
output reg clk_1k
);
/////----------------------------------------/////
always @(posedge clk, negedge rst_n) begin
if (rst_n == 0) begin
clk_2 <= 1'b1;
end
else begin
if (en == 1) begin
clk_2 <= ~clk_2;
end
else begin
clk_2 <= 1'b1;
end
end
end
/////----------------------------------------/////
always @(posedge clk_2, negedge rst_n) begin
if (rst_n == 0) begin
clk_4 <= 1'b1;
end
else begin
if (en == 1) begin
clk_4 <= ~clk_4;
end
else begin
clk_4 <= 1'b1;
end
end
end
///// clock gen 1kHz
reg [16:0] cnt_1k;
/////----------------------------------------/////
always @(posedge clk, negedge rst_n) begin
if (rst_n == 0) begin
cnt_1k <= 17'd0;
clk_1k <= 1'b1;
end
else begin
if (en == 1) begin
if (cnt_1k == 17'd0) begin
cnt_1k <= 17'd24999;
clk_1k <= ~clk_1k;
end
else begin
cnt_1k <= cnt_1k - 1'b1;
end
end
else begin
cnt_1k <= 17'd0;
clk_1k <= 1'b1;
end
end
end
endmodule
DE2-115 보드의 System Clock 은 50 MHz 이므로 50,000,000 / 1,000 = 50,000 (50MHz / 1kHz = 50,000) 이다. cnt_1k = 25,000 마다 clk_1k ≪ ~clk_1k 반전하여 clk_1k 1kHz 를 출력한다.
[Block Diagram]
Block Diagram 과 Pin Planner을 수정한다.
[Pin Assign]
[Test Result]
이를 합성 후 출력결과 clk_1k 를 오실로스코프로 측정하면 1kHz 가 출력됨을 알 수 있다.
DE2-115 보드에서 제공하는 클럭 소스를 이용하여 원하는 주파수를 가지는 신호를 생성하고 측정하였다.
'원s > FPGA' 카테고리의 다른 글
[DE2-115] Lab.2-2: Counter (0) | 2020.05.16 |
---|---|
[DE2-115] Lab.2-1: Counter (0) | 2020.05.16 |
[DE2-115] Lab.1-1: Clock Divider (0) | 2020.04.18 |
[Quartus] Quartus II 10.0 Quick Start (0) | 2020.04.11 |