전공공부 · 컨트롤로직설계

Mealy 101 검출기와 8-to-1 MUX 소스 다시 읽기

2026-08-01 · 수정 2026-08-01 · Hyeongrok Ryu

저장된 VHDL에서 overlapping 101 상태전이와 decoder 기반 MUX 구조를 다시 따라간 기록.

Series
VHDL 디지털논리 기초 · 7
유형 / 난이도
study-note · beginner
Tools
VHDL, Vivado

소스에서 다시 시작

이번에는 2024년에 저장한 mealy.vhd, mealy_tb.vhd, mux_8to1.vhd를 차례로 읽었다. Vivado가 만든 cache와 실행 파일보다 직접 작성한 entity, architecture, testbench 입력을 먼저 봤다.

왼쪽은 st0, st1, st2로 구성한 Mealy 101 검출기이고 오른쪽은 3-bit 선택값에 따른 8-to-1 MUX 입력표
왼쪽 패널은 overlapping 101 검출기, 오른쪽 패널은 같은 선택 논리를 독립형 MUX로 다시 적은 모습이다.

세 상태로 101 찾기

상태 이름은 단순했다. st0는 아직 유효한 앞부분이 없고, st1은 마지막 입력이 1이며, st2는 마지막 두 입력이 10인 상태다. st2에서 1을 받으면 101이 완성되어 dout이 1이 된다. 동시에 st1로 돌아가므로 마지막 1을 다음 패턴의 첫 1로 다시 쓸 수 있다.

현재 상태입력 0입력 1출력 1 조건
st0st0st1-
st1st2st1-
st2st2st1입력 1
상태표를 만들자 overlap 처리가 st2 → st1 전이에 들어 있다는 점이 보였다.

01010101 따라가기

저장된 testbench 입력은 reset 해제 후 20 ns 간격의 01010101이다. 상태표의 전이 규칙에 따른 101 검출 위치는 네 번째·여섯 번째·여덟 번째 입력이다. 결과 유형: 소스 기반 수계산.

01010101 입력과 st0, st1, st2 상태, dout pulse가 표시된 저장 파형
당시 저장한 파형에서 입력과 상태 전이를 함께 따라갔다.

MUX를 독립형으로 쓰기

원래 mux_8to1.vhd는 dec_3to8 component와 AND/OR 조합으로 8개 입력을 선택한다. 저장 묶음에서는 decoder의 VHDL 원본을 찾지 못했다. 그래서 같은 진리표를 공부할 때는 의존성이 없는 with select 형태로 다시 적어봤다.

with sel select
  y <= a when "000",
       b when "001",
       c when "010",
       d when "011",
       e when "100",
       f when "101",
       g when "110",
       h when others;
이 예시는 원래 archive를 고쳤다는 뜻이 아니라, 같은 선택 함수를 독립된 VHDL로 표현한 학습용 코드다.

다시 실행할 때 볼 것

다음 실행에서는 clock edge 직후의 present_state, 조합논리의 next_state, dout을 한 파형에 놓을 생각이다. MUX는 먼저 독립형 예제를 모든 선택값으로 확인한 뒤, decoder 원본을 다시 찾으면 구조형 구현과 출력을 비교할 예정이다.

사용한 자료

논문 첫 페이지 미리보기