1. 순차 논리 회로란?
순차논리회로는 논리 회로의 한 종류로, 이전 상태에 따라 다음 상태가 결정되는 회로이다. 즉, 이전의 입력과 출력 상태가 다음 입력과 출력 상태에 영향을 주는 논리회로를 말한다. 대부분 클락이나 리셋을 통해서 제어하고 초기화한다. 아래 코드를 보면서 어떤 느낌의 회로인지 알아보자.
2. 순차 회로 D-플립플롭 구현
다음은 클락이 상승하는 시점에 input값에 따라 register의 값을 변화시키는 D-플립플롭을 구현할 것이다. 이는 순차 논리 회로의 기본적 예시이다.
module d_ff(
input rst,
input clk,
input din,
output reg qout
);
always@(negedge rst, posedge clk)
begin
if (rst == 0)
qout <= 0;
else
qout <= din;
end
endmodule
위 코드를 이용하여 시뮬레이션을 돌려보았다. 리셋의 하강신호가 지나간 이후부터, 클락의 상승신호 시점에서의 din값에 따라 qout이 바뀌는 것을 볼 수 있다. 이와 같이 클럭의 신호가 발생하는 시점의 input값에 따라 결과가 바뀌는 회로를 순차회로라고 한다. 아래는 RTL 분석을 이용한 D-플립플롭 회로도이다.
3. 순차회로 8비트 카운터 구현
다음은 0부터 255까지 카운트할 수 있는 8비트 카운터를 구현해보자. 순차회로이므로 클락을 사용하여 클락이 상승할 때 마다 1씩 증가할 것이다.
module cnt8(
input rst,
input clk,
output reg [7:0] qout
);
always@(negedge rst, posedge clk)
begin
if(rst == 0)
qout <= 0;
else
qout <= qout + 1;
end
endmodule
위 코드를 통해 8비트 카운터를 구현해보았다. 시뮬레이션 상에서도 클럭이 상승할 때마다 qout의 값이 1씩 증가하는 것을 볼 수 있다. 만약 rst가 다시 0으로 내려온다면, 카운터는 0으로 초기화될 것이다. 아래는 8비트 카운터의 회로도이다.
'FPGA' 카테고리의 다른 글
[FPGA] 6. Basys3 두 개로 Encoder <--> Decoder 구현 / 7-SEG Decoder 구현 (0) | 2023.04.18 |
---|---|
[FPGA] 5. Basys3 사용해보기 (0) | 2023.04.18 |
[FPGA] 4. 대표적인 모델링 방법 (Data Flow/Gate Level/Behavioral Modeling) (0) | 2023.04.18 |
[FPGA] 2. Verilog의 조합 회로 (0) | 2023.04.17 |
[FPGA] 1. Verilog 기본과 문법(4/17) (0) | 2023.04.17 |