티스토리 뷰
외부 기능
0->1->0 펄스를 세는 기능을 함.
액티브엣지 시점에서
외부 포트
input source
output cnt
동작
1. source가 1이면 internal_cnt가 1이 할당됨.
2. source가 0이되면 internal_cnt가 1인지 확인하고 그렇다면 cnt값을 1만큼 증가시킴. 그리고 다음 펄스를 위해 internal_cnt를 0으로 초기화시킴.
// Code your design here
module pulse_counter(
input source,
output reg [3:0] cnt,
input clk,
input rstn
);
reg internal_cnt;
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
internal_cnt = 0;
cnt = 0;
end
else begin
if (source == 1) begin
internal_cnt = 1;
end
else begin
if (internal_cnt == 1) begin
cnt = cnt+1;
internal_cnt = 0;
end
else begin
cnt = cnt;
internal_cnt = 0;
end
end
end
end
endmodule
// Code your testbench here
// or browse Examples
module tb_top;
reg clk;
reg source;
wire [3:0] cnt;
reg rstn
initial begin
clk = 1;
forever begin
#10 clk = ~clk;
end
end
// Instantiate device under test
pulse_counter u1(.source(source),
.cnt(cnt),
.clk(clk),
.rstn(rstn));
initial begin
rstn = 1;
#1 rstn = 0;
#1 rstn = 1;
end
endmodule
- Total
- Today
- Yesterday
- 건이의 특제 떡국 끓이기
- 백트래킹
- 재귀함수
- Push
- BOJ
- gem5
- 스택
- 영어 어휘
- 완전탐색
- 영화
- 이분법
- 큐
- 구조체
- 알고리즘
- 백준
- 정렬
- 메이플스토리
- recursive
- 너비우선탐색
- 취미
- C언어
- C++
- 이진탐색
- Git
- Verilog
- 베릴로그
- 구현
- backtracking
- BFS
- 애니메이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |