반응형

강의 11

[디지털 로직 설계] - #8. 설계한 로직은 어떻게 FPGA에서 작동하는가?

이번 글에서는 우리가 설계한 로직이 어떻게 FPGA에서 작동하는지에 대해 이야기하려고 합니다.최초의 FPGA 디바이스, XC2064. (출처: https://semiwiki.com/fpga/290990-reverse-engineering-the-first-fpga-chip-xilinx-xc2064/) 여러분들은 이미 FPGA가 무엇인지 아주 조금은 알고 계실 겁니다. 어쩌면 학교 수업 시간에 혹은 다른 기회로 FPGA 개발보드를 써 보신 분들도 계실 것 같습니다. 간단히 설명하자면, FPGA는 "다양한 디지털 회로를 탑재할 수 있는 재사용 가능한 칩"입니다. 우리가 만든 회로를 FPGA에 "프로그램"해서 마치 실제 칩을 만든 것처럼 쓸 수 있습니다. 또 얼마든지 다른 디자인으로 바꿔 넣을 수도 있습니다...

강의 2024.06.09

[디지털 로직 설계] - #7. 우리는 어떤 목적으로, 왜 truth table을 작성하는가?

학교 수업에서 여러분이 어떤 목적으로 truth table을 작성하고 활용했는지 기억을 한 번 되살려 봅시다. 아마 처음에는 완성된 로직을 보고 이에 대한 truth table을 작성하는 문제부터 접하셨을 겁니다. 반대로, 미리 작성된 truth table을 보고 논리식 또는 회로를 완성하는 문제도 풀어보셨을 겁니다. 나중에는 truth table을 활용해 논리식 또는 회로를 좀 더 단순하게 만들어 보라는 문제도 풀어보셨을 겁니다. ('카르노 맵' 기억하시죠?) 수업 시간에 배운 truth table의 활용 방법 https://www.youtube.com/watch?v=0iQJsKVpSUY  (꼭 보실 필요는 없습니다만... 그래도 혹시나 궁금하시다면!) 수업에서 배운 truth table의 활용 목적은..

강의 2024.05.21

[디지털 로직 설계] - #6. Truth Table 및 Look-Up Table

앞서 3회에 걸쳐 combinational logic의 대표적인 유형 세 가지를 소개해드렸습니다. 이번에는 로직 설계의 방법에 대해 이야기해볼까 합니다.  로직 블럭을 설계하는 방법은 크게 두 가지로 나눌 수 있습니다.동작의 규칙성을 파악해 구조화한 다음 이를 수식/글/그림 등으로 표현하는 방법. 해당 로직 블럭이 의도된 동작을 할 수 있도록, 블럭의 내부 구조를 만드는 방법.어떤 신호에 어떤 반응을 보이는지를 빠짐없이 명시하는 방법. 즉, 외부에서 관찰 가능한 정보만으로 해당 로직 블럭을 정의하는 방법.각 설계 방법에 대한 아래 예시를 보시면 두 방법의 차이가 바로 느껴질 겁니다.  지금까지는 첫 번째 방법을 써서 로직을 만들고 설명했습니다. 디지털 로직 설계를 배우면서 가장 먼저 접하게 되는, 정석적..

강의 2024.05.15

[디지털 로직 설계] - #5. 흐름제어

이번 글에서는 Combinational logic의 세 번째 유형, '흐름제어' 로직에 대해 이야기합니다. 이 유형의 로직은 앞의 두 유형과 쓰임새가 조금 다릅니다. 이름에서 알 수 있듯이, '연산'이 아니라 '제어'죠. 입력 신호를 어디로 전달할 것인지 결정해 줍니다. 즉, 전달 경로를 선택하는(제어하는) 로직입니다. 우리가 설계한 디자인을 철도 시스템에 비유해 볼까요. 열차는 '신호'이고 선로는 '노드'라 할 수 있습니다. 처음부터 끝까지 선로가 일자로 쭉 이어져 있다면, 운용하기가 정말 쉬울 겁니다. 선로를 제어할 필요도 없고, 열차는 선로 위로만 달릴 것이니 앞 뒤 간격만 잘 띄워주면 사고 날 일도 없죠. 한바퀴 돌아서 제자리로 연결되는 경우도 마찬가지입니다. 선로가 갈라지거나 합쳐지는 형태라면 ..

강의 2024.05.07

[디지털 로직 설계] - #4. 산술연산

Combinational logic의 두 번째 유형, 산술연산 로직에 대해 다뤄보겠습니다. '산술연산' 로직은 덧셈이나 뺄셈 같이 산술적인 계산을 하는 로직을 가리킵니다. 숫자를 입력받아 숫자를 출력하는 로직입니다. 가장 대표적인 예로는 half adder와 full adder가 있습니다.두 adder의 차이점은 'carry 입력'(위 그림에서는 Ci 포트)의 유무에 있습니다. 1-bit full adder는 입력 포트로 받을 수 있는 최대값이 1에 불과하기 때문에 그다지 실용적이지 않습니다. 이걸로는 2+3 같은 계산조차 할 수 없으니까요. 이제 입력포트 A, B의 폭을 3비트로 늘려봅시다. 3비트짜리 두 값을 받아서 더하고 그 결과를 출력해야 합니다. 이 로직은 어떻게 만들 수 있을까요? A, B 포..

강의 2024.04.30

[디지털 로직 설계] - #3. 논리연산

Combinational logic의 첫 번째 유형, '논리연산'에 대해 알아보겠습니다. '논리연산' 유형의 로직은 어떤 입력에 대해 그것이 참인지 거짓인지 판별해줍니다. 앞서 소개했던 기초 논리 소자들도 그 자체로 논리연산 로직이죠. 입력 및 출력 값을 표현할 때, 참(true)/거짓(false) 대신에 숫자 1(true) 또는 0(false)으로 표현하기도 합니다. 여기, 좀 더 복잡한 로직의 예를 가져왔습니다. 3-input AND 게이트와 2-input XOR 게이트입니다. 3-input AND 연산 결과가 참이려면, 입력값이 모두 참이어야 합니다. 3개 입력값에 대해 2-input AND 연산을 순차적으로 적용하면 되겠네요. 위 그림과 같이 (2-input) AND 게이트를 2개를 조합해 만들 ..

강의 2024.04.16

[디지털 로직 설계] - #2. Combinational Logic

combinational logic은, 앞서 언급한 기초 논리 소자들을 "조합"해서 만들 수 있는 회로를 가리킵니다.  지금부터는 이 유형의 디지털 로직을 기능적 측면에서 분류해 하나씩 설명할까 합니다. combinational logic의 유형 세 가지:논리연산산술연산흐름제어이제 하나씩 살펴봅시다.목차 (연재 순서)0. 강의 개요1. 기초 논리 소자 (Basic Logic Elements)2. Combinational Logic    1) 논리연산 -- 3-input AND, 2-input XOR    2) 산술연산 -- Half Adder, Full Adder    3) 흐름제어 -- Mux, Demux3. Truth Table 및 Look-Up Table    1) 우리는 어떤 목적으로, 왜 tru..

강의 2024.04.16

[디지털 로직 설계] - #1. 기초 논리 소자 (Basic Logic Elements)

Boolean Algebra에서 다루는 논리식은 모두 AND, OR, NOT, 이렇게 세 가지 기본 연산자들의 조합으로 이루어집니다. 디지털 로직에서도 "로직 게이트"라고 불리는 부품 또는 소자가 있습니다. 예를 들어, 아래 그림과 같이 AND, OR, NOT 게이트를 꼽을 수 있습니다. 그 외에 (XOR, NAND 등) 더 많은 유형의 게이트가 있지만, 저는 처음 언급한 3개만 따로 묶어서 '기초 논리 소자'라고 부릅니다. 이 소자들은 Boolean Algebra의 기본 연산자와 일대일로 대응됩니다. (이름도 똑같고 기능도 똑같습니다.)  이들은 디지털 로직을 구성하는 가장 기본적인 요소입니다. Boolean Algebra의 논리 연산이 그렇듯, 디지털 로직 역시 제아무리 복잡해도 결국 이 세 가지 소..

강의 2024.04.09

[디지털 로직 설계] - #0. 강의 개요

여러분은 아마 실물 칩(FPGA나 ASIC)의 회로를 어떻게 만들 수 있는지에 관심이 많을 겁니다. 하지만 제아무리 뛰어난 엔지니어라 해도, 그런 '회로(circuit)'를 아무런 준비 과정 없이 곧바로 만들어낼 수는 없습니다. 눈에 보이고 실제로 작동하는 회로를 만들어내는 일은 생각보다 훨씬 어렵고, 시간도 많이 걸리고, 배워야 할 것도 많습니다. 그래도 "개발 과정은 보통 이렇다"고 간단하게 말할 수는 있겠죠. 저는 아래와 같이 세 단계로 요약하겠습니다.단계 1: 만들고자 하는 대상을 '정의'하기,단계 2: '설계' 작업을 통해 대상을 구체화하기,단계 3: 구체화한 대상을 실물로 '구현'하기. 이번 강의 시리즈, "디지털 로직 설계"에서는 이 중 두 번째 단계인 '설계'를 중점적으로 다뤄보려고 합니다..

강의 2024.04.02

[기본] 타이머와 카운터에 관하여

이번 글은 (링크)"그려보는 베릴로그"의 (링크) "#프로젝트" 강의 관련 자료 입니다. 타이머/카운터 로직 설계 타이머와 카운터는 어떻게 활용하느냐 정도의 차이가 있을 뿐, 기본적으로는 동일한 로직입니다. 타이머 또는 카운터라는 이름은 해당 로직의 활용 목적에 따라 붙여집니다. 시간을 재는 목적으로 활용한다면 타이머, 어떤 신호의 입력 횟수를 세는 목적으로 활용한다면 카운터라고 부릅니다. 엄밀히 따지자면 그렇다는 말이지, 실제로는 이러한 명칭 구분에 그다지 의미를 두지 않고 섞어 쓰는 경우도 흔합니다. 타이머와 카운터의 차이는 ‘수를 세는 대상이 무엇인가’에 있습니다. 타이머는 동작하는 동안의 클럭 수를 셉니다. 즉, 별도의 입력 포트가 필요 없습니다. 반면에 카운터는 (클럭이 아닌) 특정 신호가 몇 ..

강의 2024.01.07
반응형