일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 설치
- 데이터 해저드
- AMBA
- 컨벌루션 연산
- CUDA
- 대구 반도체 설계기업 특화
- Design DNN Accelerator
- gpgpu-sim
- DNN Accelerator
- pyverilog 설치 오류
- Pyverilog 튜토리얼
- makefile
- DNN 가속기
- Pyverilog 실행
- Data HAzard
- systolic array
- linux makefile 작성
- Pyvrilog tutorial
- pytest-pythonpath 설치 오류
- CDC
- 클럭 게이팅
- pygraphviz 설치 오류
- 이진수 곱셈 알고리즘
- Makefile compile
- CLOCK GATING
- 딥러닝 가속기
- linux c 컴파일
- gcc 컴파일
- 남산업힐
- linux c++ 컴파일
- Today
- Total
오늘은 맑음
module 사이의 데이터 전달 방법 본문
verilog를 사용하여 module을 설계할 때 고려해야 할 점 중 하나가 각자 다른 모듈을 설계할 때 서로 데이터를 전달하는 방식에 있다. verilog는 software적인 개념인 모든 함수가 sequential하게 동작하는 것과는 다르게 모든 module이 clock이라는 매개체를 통해 동시에 동작하기 때문에 design할 때 고려해 주어야 할 것이 많다.
특히 서로 다른 모듈에서 data를 전달할 때 쉽게 두 가지 방식으로 데이터를 전달할 수 있다.
1. 어떠한 동작을 수행한 후 데이터를 그냥 출력시킨다.
2. hand shake신호를 사용하여 동작이 종료되었음을 알림 ex) axi bus
1번을 택하는 경우 내가 설계한 모듈의 데이터를 받는 모듈을 설계하는 다음 사람에게 정보를 알려줘야 한다. 몇 사이클만에 내 모듈의 동작이 종료되는지 알려주지 않으면 다음 모듈의 설계자는 정확한 데이터를 받아들일 수 없다.
2번을 택하는 경우 어떠한 동작이 종료되었을 때 다음 모듈에게 데이터를 보낼 수 있다는 신호를 전달 후 데이터를 전달하는 방식이다. 이 경우 안전하게 정확한 데이터를 전달할 수 있다. 하지만 신호를 추가해주게 됨으로써 소스를 더 사용하게 된다.
강사님께 들은건데 보통 1번을 택하며 이유는 귀찮아서...라는 답변을 들었다
추가) 2021-04-18
1번의 특성이 필요한 곳이 있고 2번의 특성이 필요한 곳이 있다.
1번의 경우 입력 데이터가 끊임없이 들어오는 경우를 예로 들 수 있다.
데이터가 처음부터 끝까지 끊임없이 들어오는 경우 출력되는 데이터도 한 번 나가기 시작하면 입력 데이터가 끊기기 전까지 계속 출력되기 때문에 hand shake 신호가 필요 없다.
예를 들면 Display 신호 등이 있다.
2번의 경우 데이터를 확실하게 받았음을 확인해야 하는 곳에서 주로 사용한다.
예를 들면 CDC가 있다.
'Digital logic' 카테고리의 다른 글
Metastability/Metastable state (0) | 2019.12.04 |
---|---|
fpga와 asic설계시 유의사항 (0) | 2019.12.01 |
verilog hdl 설계시 주의할 점(1) (0) | 2019.11.30 |
Timing analysis (2) | 2019.11.30 |
full adder/전가산기 (0) | 2019.03.15 |