- Input Data 이상하게 읽혀지는 문제
- Output Pin의 Data를 Oscilloscope로 측정 시 Bus Data간 skew가 발생하는 문제
이러한 문제를 해결하기 위하여 아래의 Option을 적용시키면 해결 됩니다.
아래는 Vivado에서의 IOB Register 설정 방법입니다.
XDC file에 아래와 같이 기입하면 IO block에 있는 Register를 사용하게 됩니다.
set_property IOB TRUE [get_cells {u0/mData_reg}*]
set_property IOB TRUE [get_ports {DI*}]
set_property IOB TRUE [get_ports *]
아래의 그림과 같이 XDC에 IOB TRUE 적용 후 SLICE가 아닌 IOB Register에 적용되어진 것을 Implementation 후의 Device View에서 확인할 수 있습니다.
![]() |
클릭하면 큰 그림으로 볼 수 있습니다. |
위 Example Design의 Vivado 2015.4 parject file을 아래의 링크를 통하여 Download 받을 수 있습니다.
example_iob_ok
이러한 IOB Register 설정 방법은 가능한 Design과 적용이 되지 않는 Design이 있습니다.
아래의 그림은 TRUE IOB 적용이 가능한 Design의 Schematic View입니다.
![]() |
클릭하면 큰 그림으로 볼 수 있습니다. |
Source code 작성 시, 반드시 Register를 거쳐 direct로 output pin에 연결되는 경우와 Input pin에서 direct로 Register에 연결되는 design의 경우만 적용이 됩니다. 예를 들면, Register를 거쳐 중간에 조합회로(AND, OR gate 등등)를 지나 output pin에 연결되어질 경우에는 XDC file에 IOB TRUE를 기입하였어도 IO block에 있는 Register를 사용하지 못합니다.
설계된 Design이 이 경우에 해당되는지 설계자가 아닌 다른 사람이 확인할 수 있는 방법은 아래의 그림과 같이 Schematic view에서 간단하게 확인할 수 있습니다.
![]() |
클릭하면 큰 그림으로 볼 수 있습니다. |
example_iob_fail
지금까지 Data Bus의 Input 혹은 Output에 대한 Sync 정렬을 위하여 IOB Register 설정 방법을 알아보았습니다.
댓글 없음:
댓글 쓰기