이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

16. Verilog HDL의 산술 연산과 Incomplete Specification

  • 2020.05.23 15:25
  • 학부 수업/디지털시스템
반응형

Verilog의 정수 산술 연산

Verilog에서 정수의 산술 연산을 아주 쉽게 할 수 있다. 아래는 32비트 2진수의 덧셈 연산을 수행하는 모듈이다.

module add32 (a, b, sum);
	input [31:0] a, b;
    output [31:0] sum;
    assign sum = a + b;
endmodule

Carry를 갖는 덧셈

아래는 carry in과 carry out이 있는 32비트 가산기이다.

module add32_carry (a, b, cin, sum, cout);
	input [31:0] a,b;
    input cin;
    output [31:0] sum;
    output cout;
    assign {cout, sum} = a+b+cin; //overflow를 cout에 담는다.
endmodule

Verilog의 Boolean 연산

Bitwise 연산

비트 벡터에서 각 비트에 대한 연산을 수행한다.

~(4'b0101) = {~0,~1,~0,~1} = 4'b1010
4'b0101 & 4'b0011 = 4'b0001
~a NOT
a&b AND
a|b OR
a^b XOR
a~^b XNOR

논리 연산

참 혹은 거짓의 1비트 결과를 출력한다.

!(4'b0101) = ~1 = 1'b0
!a NOT
a && b AND
a || b OR

Reduction 연산

입력 벡터의 각 비트를 하나의 입력으로 간주하여 연산한다.

&(4'b0101) = 0&1&0&1 = 1'b0
&a AND
~& NAND
| OR
~| NOR
^ XOR

Incomplete Specification

Don't Care condition을 다룰 때 조심해야한다. 3to1 MUX를 예로 들어보자.
Select 신호가 각각 1, 2, 3 일 때는 각 입력에 맞게 출력해주면 된다. 그러나, Select가 4일 때는 어떻게 해야할까?

module maybe_mux_3to1 (a, b, c, sel, out);
	input [1:0] sel;
    input a,b,c;
    output out;
    reg out;
    
    always @ (a or b or c or sel)
    begin
    	case (sel)
          2'b00: out = a;
          2'b01: out = b;
          2'b10: out = c;
   		endcase
     end
endmodule

위 코드에서 sel이 11일 경우, out에는 이전에 저장된 값이 그대로 남아있게 된다. 이를 해결하기 위해 out에 기본값을 넣어줄 수 있다.

out = 1'bx;
case (sel)
~~
endcase
case(sel)
	2'b00: out = a;
    ~~
    default: out = 1'bx;
endcase

 

반응형

'학부 수업 > 디지털시스템' 카테고리의 다른 글

18. 3 상태 버퍼 (Tristate Buffer)  (0) 2020.05.24
17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)  (0) 2020.05.23
15. Verilog HDL을 이용한 7-seg display Decoder 구현  (0) 2020.05.23
14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)  (0) 2020.05.22
13. 멀티플렉서와 디멀티플렉서 (Multiplexer and Demultiplexer)  (0) 2020.05.16

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 18. 3 상태 버퍼 (Tristate Buffer)

    18. 3 상태 버퍼 (Tristate Buffer)

    2020.05.24
  • 17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)

    17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)

    2020.05.23
  • 15. Verilog HDL을 이용한 7-seg display Decoder 구현

    15. Verilog HDL을 이용한 7-seg display Decoder 구현

    2020.05.23
  • 14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)

    14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)

    2020.05.22
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바