ifelse, 삼항연산자에 대해서 질문 있습니다.
425
작성한 질문수 7
자료를 보다 궁금한 점이 생겨 질문 남깁니다.
작성해주신 코드를 보면 삼항연산자를 많이 사용하시는 것 같습니다.
자료를 공부하면서 좋은 방법이라고 생각해서 저도 많이 사용하고 있습니다.
근데 공부하다가 삼항연산자나 ifelse구문을 많이 사용한 후 합성하게 되면
MUX로 설계되어 delay가 많아지는 문제가 생긴다는 글을 보게 되었습니다.
위의 문제가 맞다면 아래 두가지 내용이 궁금합니다.
ifelse, 삼항연산자를 사용할 때 주의할 점
삼항연산자를 사용하지 않는 설계 방법
답변 1
0
안녕하세요.
RTL 설계는 대부분의 코드가 아래와 같이 구현됩니다.
연산 - Mux - Flip/Flop - 연산 - Mux - Flip/Flop - 연산 - Mux - Flip/Flop ~
Mux를 if-else문이나, 3항 연산자나, case문으로 구현하지만, 합성을 하면 동일하게 변환됩니다.
mux를 사용하면 delay가 많아진다는 것은 다른 이야기 입니다.
즉 Digital Logic에서 중요한 것은 Clock의 동기에 맞게 설계하는 것이고,
위에서 Flip/Flop과 Flip/Flop 사이에 있는 "연산 - Mux"가 1-clock 안에 구현이 되어야 합니다.
"연산 - Mux"가 구현할 내용이 많아서 1-clock 안에 동작하지 않으면 Timing 오류가 발생합니다.
이러한 경우는 "연산-Mux"를 2개나 3개로 나누어서 그 중간에 Flip/Flop을 추가해서 Timing 오류가 발생하지 않도록 구현해야 합니다.
제 코드는 주로 3항 연산자로 이루어져 있습니다. 저의 오랜 경험에 의하면 3항 연산자를 사용할 때 코드가 보기에도 좋고 간단히 몇줄로 처리할 수 있습니다. 3항 연산자가 처음에는 낯설고 코드 분석도 어려운 부분이 있을 수 있지만, 습관이 되면 참 편리한 것 같습니다.
감사합니다 ~!!
[HDL 32장-2부] 참고 링크 관련
1
35
2
강의 만료일 연장 신청
0
32
2
기초예제 파일 불러오기 문의
0
25
2
Zybo 환경에서 PL RTL UART 보드 검증 방법
0
30
2
Verilog 코딩 스타일
0
119
2
xilinx 권고와 차이
0
248
2
강의자료
0
115
1
open hardware manager에서 보드 인식 못하는 문제
0
343
2
RAM ip를 이용하여 FIFO 기능을 구현할 수도 있나요?
0
327
1
SPI MASTER 질문
0
248
1
SPI master testbench 질문
0
327
1
자사 개발보드 관련
0
357
2
안녕하세요. IP Packaging 관련 질문 있습니다.
0
317
1
안녕하세요. verilog 활용 관련 문의드립니다.
0
342
1
안녕하세요 fpga_intro_v16 192p에 질문있습니다!
0
335
1
안녕하세요 SLVAE 컨트롤러에 대한 질문이 있습니다
0
371
1
안녕하세요 I2C Register 모듈에 대해서 질문이있습니다.
0
416
1
SPI에서 Master 내의 miso 값 update 과정에서 질문있습니다.
1
878
1
안녕하세요 i2c master 부분에 관련하여 질문있습니다.
0
612
1
SPI Master 부분 질문입니다.
1
612
3
I2C Master 모듈관련 질문입니다.
0
1182
1
memory configuration
0
841
1
UART, SPI구현
0
657
1
SPI와 I2C의 차이
2
1981
1





