일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 슈퍼컴퓨터클러스터
- 싸움땅
- 수영대회결승전
- 왕실의기사대결
- 소프티어
- 이진탐색
- 토끼와 경주
- dfs
- DenseDepth
- 조합
- 코드트리
- ISER
- 백준
- 나무박멸
- 구현
- ros
- 루돌프의반란
- Calibration
- 삼성기출
- 포탑부수기
- 마이크로프로세서
- ICER
- 3Dreconstruction
- 순서대로방문하기
- BFS
- 시뮬레이션
- 코드트리빵
- DP
- ARM
- 마법의숲탐색
Archives
- Today
- Total
from palette import colorful_colors
[verilog] d-flipflop 구현 본문
ff.v 파일
//positive edge FF의 예시
module flipflop1 (d, clk, q);
input d, clk;
output reg q;
always @ (posedge clk) //클럭이 rise edge일때 동작
begin //always@(negedge clk)으로 적는다면 falling edge일때 동작
q <= d;
end
endmodule
//posedge F/F, sync reset (reset signal 추가)
module flipflop2 (d, clk, rst, q);
input d, clk, rst;
output reg q;
always @ (posedge clk) //클럭이 올라가는 순간에 변하겠다는 뜻
begin
if(!rst) begin //reset이 0일때 if문 실행
q = 0;
end
else begin //위의 if문과 순서 바뀌면 안된다. rst이 우선순위가 먼저 되어야 하기 때문.
q <= d;
end
end
endmodule
//posedge F/F, async reset
//sync는 clock에 따라서 동작, async는 특정값 인가될때 값이 0또는 1이 된다.
module flipflop3 (d, clk, rst, q);
input d, clk, rst;
output reg q;
always @ (posedge clk, negedge rst) //()안에 한쪽을 edge로 받았으면 다른쪽도 edge로 받아야 한다는 뜻
begin
if(!rst) begin //rst이 falling 할 때, reset이 0일때 실행한다는 뜻
q = 0;
end
else begin
q <= d;
end
end
endmodule
//preset -> d와 상관없이 q는 1
//load -> 1이면 FF 동작, 0이면 q가 가지고 있던것 그대로 출력
//posedge F/F, sync(syncronal) preset
module flipflop4 (d, clk, prst, q);
input d, clk, prst;
output reg q;
always @ (posedge clk) //클럭이 올라가는 순간에 변하겠다는 뜻
begin
if(prst) begin
q = 1;
end
else begin
q <= d;
end
end
endmodule
ff_tb.v 파일
//testbench에서 테스트해보기.
`timescale 1ns/1ns
module ff_tb;
reg d, clk, rst;
wire q;
flipflop3 u1 (d, clk, rst, q);
initial begin
d = 0; clk = 0; rst = 0;
#6 rst = 1;
#100 $finish;
end
always begin
#4 clk = ~clk;
end
always begin
#5 d = $random;
end
initial begin
$dumpfile("output.vcd");
$dumpvars(0);
end
'EE 학부과목 > verilog' 카테고리의 다른 글
[verilog] counter 구현 (0) | 2023.03.13 |
---|---|
[verilog] 16bit ALU구현 (0) | 2023.03.13 |
[verilog] 1:4 DEMUX 구현 (디멀티플렉서, Demultiplexer) (0) | 2023.03.13 |
[verilog] 4:1 MUX 구현 (멀티플렉서, multiplexer) (0) | 2023.03.13 |
[verilog] Full Adder, 4bit Adder 구현 (2) | 2023.03.13 |