일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pyverilog 설치 오류
- DNN 가속기
- Pyverilog 설치
- DNN Accelerator
- pytest-pythonpath 설치 오류
- CUDA
- CDC
- 남산업힐
- makefile
- CLOCK GATING
- gcc 컴파일
- 컨벌루션 연산
- linux c++ 컴파일
- Pyvrilog tutorial
- 대구 반도체 설계기업 특화
- gpgpu-sim
- pygraphviz 설치 오류
- 데이터 해저드
- linux c 컴파일
- AMBA
- 클럭 게이팅
- systolic array
- linux makefile 작성
- Data HAzard
- 이진수 곱셈 알고리즘
- 딥러닝 가속기
- Makefile compile
- Pyverilog 실행
- Pyverilog 튜토리얼
- Design DNN Accelerator
- Today
- Total
오늘은 맑음
verilog 문법(4) and/or 비트연산자, 논리연산자 본문
verilog 뿐만 아니라 c/c++에서도 모두 비트연산자와 산술연산자가 있습니다.
논리 연산자는 두 값의 참과 거짓을 반환하고, 비트 연산자는 두 개의 값의 비트를 연산한 결과를 반환합니다.
비트연산자와 논리연산자의 비교
verilog에서 simulation을 통해 결과를 한번 알아보겠습니다.
입력 신호는 아래와 같습니다.
- in_data1 : 4비트의 입력
- in_data2 : 4비트의 입력
출력 신호는 아래와 같습니다.
- out_logical_and : in_data1 && in_data2
- out_logical_or : in_data1 || in_data2
- out_bit_and : in_data1 & in_data2
- out_bit_or : in_data1 | in_data2
시뮬레이션 결과는 다음과 같습니다.
입력 데이터의 변화에 따른 각각 출력 신호의 변화를 살펴보겠습니다.
처음 in_data1과 in_data2가 모두 4'b0000으로 입력 되었을 때는 모든 출력이 0으로 나오는 것을 보실 수 있습니다.
다음 20ns에서 in_data1이 4'b0001로 스위칭 되었을 때는 out_logical_and는 그래도 0을 유지하지만, out_logical_or는 in_data1에 값이 전달되었으므로 참을 출력하는 것을 볼 수 있습니다. 그리고 out_bit_and는 0을, out_bit_or는 0001과 0000의 or연산 결과인 4'b0001을 출력합니다.
이 후 40ns, 60ns의 결과를 보게 되면 비트연산자와 논리 연산자의 차이를 보실 수 있습니다.
비트 연산자 응용
입력으로 4비트의 데이터 a가 들어온다고 가정했을 때, 각 비트를 체크하는 방법에 대해 알아보겠습니다.
1. a의 비트가 모두 1일 때 참을 출력
2. a의 비트 중 하나라도 1이 들어오면 참을 출력
위의 두 가지 상황을 체크하기 위해서는 다음과 같이 표현할 수 있습니다.
1. assign out_bit_and = a[0] & a[1] & a[2] & a[3]; 혹은 assign out_bit_and = &a;
2. assign out_bit_or = a[0] | a[1] | a[2] | a[3]; 혹은 assign out_bit_or = |a;
1번은 모든 비트를 &연산했을 때의 결과를 출력합니다. 즉, 모든 비트가 1일때만 참을 출력합니다.
2번은 모든 비트를 |연산했을 때의 결과를 출력합니다. 즉, 어떤 하나의 비트가 1로 변하면 참을 출력합니다.
'Digital logic' 카테고리의 다른 글
Combinational feedback loop란 (3) | 2021.05.09 |
---|---|
Clock Skew(클록 스큐) (0) | 2021.05.03 |
verilog 문법(3) part select (0) | 2021.04.24 |
Dual port register와 Single port register (2) | 2021.04.22 |
verilog hdl 설계시 주의할 점(2) (2) | 2021.04.21 |