[Verilog프로그래밍] 동기식 counter

1. [Verilog프로그래밍] 동기식 counter.hwp
2. [Verilog프로그래밍] 동기식 counter.pdf
[Verilog프로그래밍] 동기식 counter
1. 목적
지금까지 배운 Verilog에 대한 지식을 활용하여 여러 가지 순차회로를 설계함
2. 기초지식
- 여러 가지 순차회로에 대한 동작 이해
레지스터
레지스터는 n-bit 데이터를 저장하는 기억소자이다. 클럭에 동기가 되어 이루어지며 제어신호로 비동기 제어 신호인 reset, 동기 신호인 load가 있는데 동작은 이러하다
reset load CLK Qi
0 x x 0
1 0 ↑ Qi
1 1 ↑ Di
카운터
매 클럭마다 정해진 손서에 따라서 상태값이 변하는 레지스터를 말한다. 클럭에 따라 변하면 동기식 카운터 그렇지 않으면 비 동기식 카운터라고 한다.
이번 숙제의 경우 아래의 동작을 해야한다.
reset load enable 동작
1 x x reset (출력 0)
0 1 x parallel load
0 0 1 count (증가)
0 0 0 변화없음
parallel load는 병렬 로드로 기존 값에 상관 없이 data값을 그대로 출력하는 것을 말하고 count는 주어진 진수에 맞추어 reset0이고 load0 enable1일 때 증가한다.
제어신도 모두가 0일 때는 변화 없다.
- 동기 제어신호와 비동기 제어신호에 대한 이해
보통은 clock이 상승에지이냐 하강에지이냐에 따라서 출력값들이 영향을 받도록 설계를 한다. 컨트롤이 편하기 때문이다. 카운터를 예로들어 설명하겠다. 카운터의 모든 상태가 클럭에 따라서만 변하면 이것은 동기식 카운터 그렇지 않으면 비 동기식 카운터라고 한다. 여기서 나오는 비동기 제어신호는 clock의 영향을 받지 않고 또 다른 제어신호가 상태에 영향을 준다는 것을 의미한다.
[차이]
clock이 상승에지일 때 값이 변한다고 가정하자(always @(posedge clock)).
always @(posedge clock) begin
....