해결된 질문
작성
·
357
1
안녕하세요 맛비님. Lab12 를 강의를 듣고, 혼자서 코드를 수정하며 진행중에 있는데 몇가지 질문이 있습니다! (코드 질문은 아닙니다ㅎㅎ)
해당 lab 의 목적은 AXI4-Lite 인터페이스를 이용해서 레지스터에 접근하고, 레지스터의 내용을 통해 BRAM 에 access 하는 과정으로 알고 있습니다.
그렇다면 설계하신 myip_v1_0_S00_AXI 모듈 외부에서 AXI4-Lite 를 이용해 0x08 혹은 0x0C 레지스터에 접근하고 해당 레지스터의 output 을 이용해 BRAM 으로 접근하는것이 맞는 동작이 아닐까 싶어서요!
AXI4-Lite -> Register -> BRAM 으로 이루어져야 할 것 같은데 현재는 AXI4-Lite ->Register, BRAM 동시접근 형태로 되어 있는 것 같아서 여쭤보고 싶습니다.
(예전에 들었을 때 모듈 외부에서 들어오는 신호들은 F/F 으로 한번 latch 해서 사용하는게 타이밍적으로 안전하다... 라는 말도 들었던 것 같아서 그렇습니다...ㅎㅎ)
R 채널의 rresp 는 따로 delay 를 주지는 않으신 것으로 봤는데... 현재 코드상에서는 모두 OKAY 를 주기 때문에 따로 문제될 것 같지는 않지만 delay 를 주는게 맞겠죠...?
R 채널을 통해 Read 를 수행하실 때 0x0C 에 접근하여 BRAM 내부 데이터를 읽어오는 부분 때문에 무조건적으로 rvalid 에 1cycle delay 를 주신 것을 확인하였습니다. 그런데 만약 0x08 번지같이 BRAM 에 access 하지 않는 address 를 읽어온다면 굳이 rvalid 에 1cycle delay 를 줄 필요가 없겠죠? 해당 부분은 BRAM access 하는 address 이거나, 아닌 케이스로 나누어서 따로 rvalid 를 assign 하면 될까요?
답변 1
1
안녕하세요 :)
AXI4-Lite -> Register -> BRAM 으로 이루어져야 할 것 같은데 현재는 AXI4-Lite ->Register, BRAM 동시접근 형태로 되어 있는 것 같아서 여쭤보고 싶습니다.
(예전에 들었을 때 모듈 외부에서 들어오는 신호들은 F/F 으로 한번 latch 해서 사용하는게 타이밍적으로 안전하다... 라는 말도 들었던 것 같아서 그렇습니다...ㅎㅎ)
-> 네, 알고계신 방법도 맞아요. 정답은 없습니다. 타이밍적으로 문제가 된다면, F/F 으로 치셔야해요.
위 내용의 답변과 동일한 형태인데.. 정답은 없습니다. 현재 상태가 Timing met 을 잘 하고 있어서요. 문제가 된다면 latching 하시면 되겠습니다.
타이밍 관련해서는 코드를 봐야겠지만, 말씀하신대로 cycle sync 에 문제가 없다면 바꾸셔도 됩니다.
추상적으로 답변을 드렸는데요.
결론은
설계자가 결정하면 됩니다.
(1 cycle 딜레이 되고 area 를 소비해서 Timing met 관점에서 바라볼지 등등을 직접 판단하는 거에요.)
이는 주어진 상황에 따라 다르며,
현 예제의 설계자는 저이기에, 현재 드린 예제는 모두 정상동작하고 문제가 없다 판단됩니다.
재민님이 판단하기에 문제가 되시면 수정하세요. 그것 또한 값진 경험이고 공부입니다.
즐공하세요 :)