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

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
01소스에서 다시 시작

이 글에서 순서대로 다시 확인하는 학습 포인트입니다.

02세 상태로 101 찾기

이 글에서 순서대로 다시 확인하는 학습 포인트입니다.

0301010101 따라가기

이 글에서 순서대로 다시 확인하는 학습 포인트입니다.

04MUX를 독립형으로 쓰기

이 글에서 순서대로 다시 확인하는 학습 포인트입니다.

이 글의 목차에서 자동으로 만든 개념 흐름도입니다.

소스에서 다시 시작

이번에는 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을 내린 뒤 01010101을 20 ns 간격으로 넣는다. 상태표대로 종이에 따라가면 네 번째, 여섯 번째, 여덟 번째 입력에서 101이 완성된다. 이 계산은 코드의 전이 규칙을 손으로 확인한 것이며, 이번 정리에서 GHDL이나 Vivado simulation을 다시 돌리지는 않았다.

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

MUX를 독립형으로 쓰기

원래 mux_8to1.vhddec_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 원본을 다시 찾으면 구조형 구현과 출력을 비교할 예정이다.

사용한 자료

논문 첫 페이지 미리보기