• 카테고리

    질문 & 답변
  • 세부 분야

    반도체

  • 해결 여부

    해결됨

F/F BRAM delay 질문

24.03.28 15:55 작성 24.03.28 16:18 수정 조회수 106

2

안녕하세요 HDL 32 장 1부 4분 30초쯤에 설명에 대한 표현이 헷갈리는 부분이 있어 질문을 올립니다.

이전 시즌 1의 20장에서 BRAM 을 설명하실때 BRAM 을 설계할때 F/F 을 사용하므로 1cycle delay 가 있다고 하셨습니다.

그렇다면 마찬가로 우리가 axi4-lite 의 register 는 flip flop 으로 구성되어있으므로 바로 준비가 되는것이 아닌 1cycle delay 가 있어야 하는 것 아닌가요?

 

다시 말해

BRAM 의 write, BRAM 의 read 그리고 AXI4-lite read 모두 flip flop 으로 구성 되어있으므로 address 가 들어오면 다음 posedge clk (1cycle delay) 에서 data 를 보내는것 (세가지 각각 we == 1, we ==0, AR HS == 1 인경우) 아닌가요?

답변 1

답변을 작성해보세요.

1

안녕하세요 🙂

먼저 Season1 의 20 장에서 BRAM 은 F/F 이 아닙니다. 물리적인 BRAM 이 존재합니다. (FPGA 시간에 다룹니다.)

전달 드린 memory code 는 모델링 코드입니다.

Xilinx 에서는 이 modeling code 를 인지해서 물리적인 BRAM 에 mapping 시켜줍니다.

이 물리적인 BRAM 내부에는 1 cycle delay 가 존재하고, modeling code 로 모사되어 있습니다.

그 점을 먼저 아시면 좋겠어요.

====================

그렇다면 마찬가로 우리가 axi4-lite 의 register 는 flip flop 으로 구성되어있으므로 바로 준비가 되는것이 아닌 1cycle delay 가 있어야 하는 것 아닌가요?

다시 말해

BRAM 의 write, BRAM 의 read 그리고 AXI4-lite read 모두 flip flop 으로 구성 되어있으므로 address 가 들어오면 다음 posedge clk (1cycle delay) 에서 data 를 보내는것 (세가지 각각 we == 1, we ==0, AR HS == 1 인경우) 아닌가요?

이거는 F/F 이 맞습니다. 왜 위에꺼는 BRAM 이고, 이거는 F/F 인지는..

학교에서 디지털 회로 설계 시간에 배우는 내용이고요. 혹시 처음 들으신다면 디지털 회로 설계 이론에 대해서 공부를 해보시면 좋을 것 같아요. (해당강의는 8년차 수준을 목표로 해서.. 꼭 알고 계셨으면 좋겠습니다. 디지털 회로의 이론 지식 없이 Verilog 를 설계하는건 회로설계의 10% 도 못하는 거라고 생각해요)

저보다 교수님이 더 잘 가르칠 수 있는 내용이라 강의에서 다루지는 않고요. (알고있다고 가정)

Verilog HDL 문법책인데요. (저랑 아무 관련없습니다) 회로설계엔지니어를 위한 입문서로 추천합니다.

1독 하시면 도움이 되실꺼에요.

https://search.shopping.naver.com/book/catalog/35307420470?cat_id=50010921&frm=PBOKPRO&query=%EB%94%94%EC%A7%80%ED%84%B8+%EC%84%A4%EA%B3%84&NaPm=ct%3Dlubc8l34%7Cci%3D78522cb67e73874cc34569419b9cb408f1a26d5e%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3D7b133f3d4552dd7cac027812d94f25a2c9518c97

 

따라서 코드 그 자체로 이해하시면 됩니다. 1cycle delay 가 없이 설계 되었다면, 그게 맞는거에요.

 

확인 부탁드려요 🙂

이중경님의 프로필

이중경

질문자

2024.03.29

안녕하세요,

긴 답변에 감사하다는 말씀 전합니다.

먼저 제가 잘못알고 있었던 부분에 대해서는 알게되었습니다. 강의에서 BRAM이 사실상 FPGA 안에서 SRAM 대신에 사용하는것이라고 하여 SRAM이 물리적으로 F/F 으로 구성되어있으므로 당연히 BRAM 도 물리적으로 F/F 으로 구성되어있는줄 알았습니다.하지만 아니라는 것을 답변을 통해 바르게 알게되었습니다. 감사합니다.

또한 주신 code 가 modeling code 로써 FPGA 안에 만들어져있는 BRAM 으로 연셜시켜주는 역할을 하는것이라는 것으로 바르게 알게 되었습니다.

 

하지만 아직까지 의문점이 남아 이렇게 답글을 남깁니다.

BRAM은 특징이 1 cycle delay 가 되는것이고 AXI4-lite 의 register 는 F/F 으로 구성되므로 이것도 1cycle delay 가 되는 것으로 이해하고 있는데 강의에서 말씀하신 AXI4-lite의 slave는 BRAM과는 다르게 register 가 F/F 으로 구성되어있으므로 딜레이 없이 바로 data를 띄울 준비가 된다 부분이 잘 이해가 가지 않습니다.

안녕하세요 🙂

BRAM 에서 read 를 하려면, "valid 한 data" 가 들어가 있다고 가정하면, address 와 we 신호를 주면 되겠죠. address 와 we 신호를 준 이후 1cycle 뒤에 "valid 한 data" 를 사용할 수 있습니다. (물론 BRAM 도 address 와 we 를 준 타이밍에 data 가 나옵니다. 하지만 현업에서 설계하시면 Timing 이슈로 인하여 바로 사용하지 않고, 그 data 를 F/F 에 저장하는 것이 일반적입니다. 그래서 1 cycle 뒤가 "valid 한 data" 사용시점이라고 생각해요)

 

F/F 은 "valid 한 data" 가 들어있다고 가정하면, "valid 한 data" 가 준비 되어있던 시점 에서 바로 data 를 사용할 수 있습니다.

AXI4-Lite 에서는 F/F 에 저장을 했죠. BRAM 의 read 와 F/F 의 read 의 1cycle 차이를 기본으로 해서 설명을 드렸습니다.

 

즐공하세요 🙂