Verilog기초(7) - 기본 연산자

최보열·2022년 9월 24일
0

Verilog기초

목록 보기
7/12
post-thumbnail

지난 시간 Verilog로 회로를 처음 기술해보고 simulation까지 해보았습니다. 아직 testbench에 대한 내용을 다루지 않았지만 해당 내용을 제외하고는 해당 시리즈에서 모든 과정이 동일할 것입니다.

  • Editor(저희는 vscode)에서 verilog라는 언어로 회로를 기술하고,
  • Modelsim에서 project를 생성한 이후에 시뮬레이션 할 코드와 testbench코드를 추가합니다.
  • 이후에 Simulation을 돌려서 생성된 waveform을 확인합니다.

해당 과정을 기반으로 앞으로 논리회로에서 알아본 여러 combination, sequential logic들 그리고 이런 작은 module들을 연결하여 거대한 회로를 다뤄볼 예정입니다.

그에 앞서 지난 과정을 복습하기 위해서 이번 글을 준비했습니다. 이번 글에서는 지난번에 설계한 not gate를 제외하고 나머지인 AND, OR, NAND, NOR, XOR, XNOR gate를 만들어보면서 verilog에 있는 operator에 대해 조금 익숙해지는 과정을 가지려고 합니다.

Verilog도 다른 SW언어들과 마찬가지로 여러 operator를 제공합니다. 특히나 C based language임으로 C와 동일하게 사용하는 것들도 많이 있습니다. 일단은 bit끼리 연산하는 operator를 알아봅시다.

위 사진에 많은 operator가 있고 아래의 REF에 사이트로 들어가면 훨씬 많은 Operator가 존재합니다. 하지만 오늘 만들 basic gate에는 사실상 4가지만 알고 있으면 됩니다.

  • ! : NOT 연산자
  • & : AND 연산자
  • | : OR 연산자
  • ^ : XOR 연산자

이 이상의 연산자는 예를들어 NAND와 같은 경우에 '!+&'처럼 나머지 연산자를 사용하여 만들어낼 수 있습니다. 그러면 아래의 코드를 각각 작성해봅시다. 먼저 and gate입니다. 파일은 and_gate.v로 하시면 될거 같습니다.

코드를 작성하라 때 기술하는 부분에 c언어와 마찬가지로 세미콜론(;)이 적혀야 된다는 점을 기억해주세요. Testbench는 아래와 같습니다. 파일명은 TB_and_gate.v로 작성해주세요. 이번 것은 사진으로 첨부하였는데 일부로 testbench형태에 미리 익숙해지시라고 그런겁니다. 무슨 의미인지 몰라도 일단은 따라서 작성해봅시다.

그다음은 not gate와 동일합니다. modelsim에 추가하고 waveform을 관찰해보세요. A와 B의 값이 어떤 경우에 F인 결과값이 어떤지 관찰해보시고, AND gate의 동작이 맞는지 점검하시면 됩니다. 이것처럼 나머지 OR, NAND, NOR, XOR, XNOR 등을 작성하면 되겠죠? OR은 건너 넘어가고 NAND를 살펴봅시다.

NAND는 AND연산의 결과물에 NOT연산에 적용되는 것을 알고계실 겁니다. 그렇기에 해당 코드처럼 A와 B의 AND연산을 괄호()로 감싸주고 그곳에 not연산(~)을 취한 것을 알 수 있습니다. not연산이 ~과 ! 2가지가 있는데 일단은 동일하게 사용하셔도 무방합니다.

첨부파일로 나머지 모든 연산에 대한 verilog코드와 testbench코드를 첨부해드릴테니 한번 본인 생각을 점검해보고 싶으신 분들은 확인해보시기 바랍니다.

너무 간단한가요? 하지만 이런 회로들이 합쳐져서 저희가 지금 사용하고 있는 스마트폰, 컴퓨터의 두뇌라 불리는 CPU, 그리고 화면을 출력하는데 도움을 주는 GPU, 여러 AI어플을 활용하게 AI연산을 도와주는 NPU 등을 이루게 됩니다. REF에 CPU, GPU, NPU가 무엇인지 잘 정리해둔 블로그 링크를 걸어둘테니 저 용어들이 무엇을 뜻하는지 잘 모르신다면 한번 읽어보길 추천드립니다.

다음 시간에는 wire에 대한 얘기를 조금 하자고 합니다. 그리고 HDL이 SW와 다른 점도 말씀드릴 예정입니다.

첨부

https://github.com/gju06051/Verilog_study_public
공유할 마땅한 방법을 몰라서 github로 공유해드립니다. 사용할줄 모르시는 분은 가운데 파란색으로 CODE라는 버튼을 누르시고, Download ZIP을 이용해서 받으시면 됩니다.

REF.

profile
Computer Architecture 엔지니어 지망생 from SKKU

0개의 댓글