1. 문제 및 설명
A. 입력 s와 w을 가지는 FSM을 설계하시오
- FSM은 리셋 상태인 A에서 시작한다.
- 상태 A에서는 s를 감시한다.
- s=0이면 상태 A를 유지한다.
- s=1이면 상태 B로 전이한다.
B. 상태 B에 진입한 이후 FSM은 입력 w를 3개의 클록 동안 검사한다.
- 검사한 3개의 클록 중 정학히 2번 w=1이 나타나면 다음 클록 사이클에서 출력 z=1을 출력 한다.
- 그 외의 경우에는 z=0을 출력한다.
C. FSM은 한 번의 판별이 끝난 뒤에도 계속해서 다음 클록 구간에 대해 동일한 동작을 반복 수행한다.
D. 입력 s는 상태 A에서만 사용된다
2. 요구사항
A. 입력 w를 3클록 단위로 검사하는 FSM을 설계하시오
- 각 클록 동안 입력된 w 값 중 2개의 1이 존재하면 다음 클록에서 출력 z=1, 그렇지 않으면 z=0
- 그 외의 경우에는 z=0을 출력한다.
B. 상태 수는 가능한 최소 개수로 설계해야한다.
3. 문제 풀이
A. State
- C, D: 첫 번째 w input state
- E, F, G: 두 번째 w input state
- H, I: 세 번째 w input state

4. 모듈 정의
module top_module (
input clk,
input reset, // Synchronous reset
input s,
input w,
output z
);
5. 답
module top_module (
input clk,module top_module (
input clk,
input reset, // Synchronous reset
input s,
input w,
output z
);
parameter A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7, I = 8;
reg [3:0] state, next_state;
assign z = (state == H);
always@(*)
begin
case(state)
A: next_state = s?B:A;
B: next_state = w?C:D;
C: next_state = w?E:F;
D: next_state = w?F:G;
E: next_state = w?I:H;
F: next_state = w?H:I;
G: next_state = I;
H: next_state = w?C:D;
I: next_state = w?C:D;
endcase
end
always@(posedge clk)
begin
if(reset)
begin
state <= A;
end
else
begin
state <= next_state;
end
end
endmodule
'Verilog > HDLbits' 카테고리의 다른 글
| [HDLBits] Exams/2014 q3c (0) | 2026.05.17 |
|---|---|
| [HDLBits] Exams/2014 q3bfsm (0) | 2026.05.17 |
| [HDLBits] Exams/ece241 2014 q5b (0) | 2026.05.10 |
| [HDLBits] Exams/ece241 2014 q5a (0) | 2026.05.10 |
| [HDLBits] Exams/ece241 2013 q8 (0) | 2026.05.10 |