1. 문제 및 설명
A. 1입력 1출력 직렬 2의 보수기의 무어 상태 머신을 설계하시오.
- 출력(z): 입력된 숫자에 대한 2의 보수를 출력합니다.
- 입력(x): 숫자의 최하위 비트부터 시작하여 클락 주기마다 한 비트씩 입력됩니다.
- 동작 제어: 리셋 신호가 해제되면 변환을 시작하고, 리셋 신호가 활성화 되면 동작을 멈춥니다.
2. 요구사항
A. 1입력 1출력 직렬 2의 보수기의 무어 상태 머신을 설계하시오.
- 데이터 길이: 이 머신의 임의의 길이를 가지 입력 숫자를 처리할 수 있어야 합니다.
- 리셋: 비동기 리셋 기능이 필요합니다.
3. 문제 풀이
A. 2의 보수
- 컴퓨터가 음수를 표현하고 계산하기 위해 사용하는 방식
- 계산법
- 1. 비트 반전
- 2. '1' 더하기
- ex): +3 (이진수): 0011
- 1단계 (비트 반전): 1100
- 2단계 (1 더하기): 1101 (← 이것이 컴퓨터가 인식하는 -3입니다!)
- ex): +3 (이진수): 0011
B. State
- A: 첫 '1' 입력 전 '0' 은 입력을 그대로 출력
- B: 입력 첫 '1' 은 입력을 그대로 출력
- C: 첫 입력 '1' 후에는 입력 반전하여 출력(입력: 0)
- D: 첫 입력 '1' 후에는 입력 반전하여 출력(입력: 1)

4. 모듈 정의
module top_module (
input clk,
input areset,
input x,
output z
);
5. 답
module top_module (
input clk,
input areset,
input x,
output z
);
parameter A = 2'b00, B = 2'b01, C= 2'b10, D = 2'b11;
reg [1:0] state, next_state;
always@(*)
begin
case(state)
A: next_state = x?B:A;
B: next_state = x?D:C;
C: next_state = x?D:C;
D: next_state = x?D:C;
endcase
end
assign z = (state == B|state == C);
always@(posedge clk, posedge areset)
begin
if(areset)
begin
state <= A;
end
else
begin
state <= next_state;
end
end
endmodule
'Verilog > HDLbits' 카테고리의 다른 글
| [HDLBits] Exams/2014 q3fsm (0) | 2026.05.17 |
|---|---|
| [HDLBits] Exams/ece241 2014 q5b (0) | 2026.05.10 |
| [HDLBits] Exams/ece241 2013 q8 (0) | 2026.05.10 |
| HDLbits[HDLBits] Fsm hdlc (0) | 2026.05.10 |
| [HDLBits] Fsm serialdp (0) | 2026.05.06 |