매우 강력해진 팩토리오 2.0회로를 도입하여 한글 디스플레이에도 대격변이 일어났다



일단 v0.1 버전의 회로를 먼저 보자



뭐가 복잡 복잡하다



이번엔 v1.0을 보자






회로의 부피를 파격적으로 줄일 수 있었다!


처리량 : 1 글자 / 1 tick

지연시간 : 10 -> 5 tick(패턴 생성기 제외)



ROM


팩토1.1(디스플레이0.1)에서는 상수조합기에 신호를 20개까지만 설정할 수 있었는데

팩토2.0(디스플레이1.0)에서는 그런 제한이 사라졌기 때문에 엄청 많은 신호를 한곳에 우겨 넣을 수 있게 되었다

예전에는 ROM을 구현하기 위해서 신호 18개를 세팅한 상수 조합기를 172개나 필요로 했었는데

이제는 신호 256개를 세팅한 상수조합기가 단 16개만 있으면 해결이 된다


이 특성을 최대한 이용하기 위해서 ROM테이블 기록 방식도 아예 뒤엎어 버렸는데

예전에는 각 초성/중성/종성 별로 다른 상수조합기에 값을 기록하였다면

이번 버전에서는 각 '벌'별로 다른 상수조합기에 기록되도록 하였다


그리고 예전 버전에서는 하나의 신호가 특정 초성(또는 중성,종성)에 대하여 여러 픽셀의 정보를 기억하였다면

이번 버전에서는 하나의 신호가 특정 좌표에 대하여 여러 초성(또는 중성,종성)의 픽셀 정보를 기억한다.

신호가 256종류이기 때문에 16*16 비트맵을 나타낼 수 있고

하나의 신호는 32비트이기 때문에 초성19개, 중성21개, 종성28개의 비트맵을 다 기록하기에 부족하지 않다



'벌' 추출


예전에는 '벌' 추출을 위해서 대회까지 열어가면서 LUT를 구현하느라 어지러웠는데

이제는 조합기 자체에서 복잡한 조건문을 걸 수 있기 때문에 마찬가지로 회로를 초 압축할 수 있게 되었다






렌더링


ROM 저장방식을 바꿔버리면서 렌더링 회로도 아주 간결해졌다

예전엔 특정 글자의 폰트 정보를 적은 갯수에 신호에 담고 그걸 256종류의 신호로 분해시켜버리기 위해서 이런 회로가 필요했었는데

이번에는 애초에 256종류의 분해된 신호를 ROM에 담았기 때문에 관련 작업이 필요 없어졌다

특정 픽셀에 대한 정보를 얻고 싶으면 현재 나타내고 싶은 글자가 몇번인지만 알면

ROM값을 글자번호만큼 왼쪽으로 쉬프트하고, 그게 0보다 작은지 여부만 판단하면 된다.(비트 추출) 이걸 256종류 신호에 대해 병렬처리 한다

팩토리오에서 7세그먼트 디스플레이 만들기https://www.reddit.com/r/factorio/comments/93g03s/simplest_7segment_display_possible_09_displayed/에서 조합기 2개로 7세그먼트 디스플레이를gall.dcinside.com

대충 이거 응용함



패턴생성기


예전에는 비교조합기에서 Red Green 선택기능 따위는 없었기 때문에 신호 처리 과정에서 원하지 않는 신호가 출력 되는 일이 있었고

그걸 막기 위해 추가적인 회로가 필요했었는데

이제는 R G 선택하는게 생겨서 좀 더 깔끔해졌음





회로에 설명 달 수 있는거 꽤 열심히 설명 달아둠





초성만 띄워보기


초성을 무슨 1벌~8벌 중에 뭘 쓸지 골라주고, 어떤 초성을 띄울지 고르면 출력되는 모습

중성과 종성에 대해서도 똑같이 해주고 합쳐주면 한글자 띄우기 끝



청사진


https://factoriobin.com/post/84fy3d





이전보다 꽤나 간결해졌다 보니 청사진으로도 올릴만해보여서 같이 올림



회로2.0은 진짜 신이다