Q&A
인터럽트 컨트롤러 요청 처리와 처리 완료 구문 중 이해가 안되는 내용이 있습니다.
2번은 이해했습니다. // 새로운 인터럽트 요청 처리 interrupt_pending 위 구문이 같은 clk 상승 엣지일 때 실행되기 때문에 interrupt_pending[current_interrupt]를 0으로 clear하지 않으면 문제가 되겠네요.
- Likes
- 1
- Comments
- 2
- Viewcount
- 15
Q&A
2번은 이해했습니다. // 새로운 인터럽트 요청 처리 interrupt_pending 위 구문이 같은 clk 상승 엣지일 때 실행되기 때문에 interrupt_pending[current_interrupt]를 0으로 clear하지 않으면 문제가 되겠네요.
Q&A
안녕하세요. 맛비님. 제가 틀린 것일 수도 있지만 제 생각에는 myip_v1_0_S00_AXI.v 내 137번째 line assign S_AXI_RDATA = axi_rdata; 가 아니라 assign S_AXI_RDATA = reg_data_out; 위가 맞는 것 같습니다. 그래야 RVALID와 RREADY 핸드셰이크가 발생하기 전에 RDATA가 메모리에서 읽어온 값으로 세팅될 것 같아요. 현재 코드는 핸드셰이크가 발생함과 동시에 메모리에서 읽어온 값으로 RDATA를 업데이트하고 있는 것으로 이해됩니다. 시뮬레이션으로는 문제 없는 것처럼 보이는데, 실제 구현했을 때는 문제가 발생할 수 있을거라 생각됩니다... 코드 변경 후 시뮬레이션 했을 때 문제 없음을 확인했습니다. 검토 부탁드립니다.
Q&A
답변 감사합니다. 만약 드레인 전압(Vd) 이 빠르게 변한다면 커패시터 충전 전류는 i = C ⋅ dV/dt 라 Cgd, Cgs에 전하가 축적되어 MOSFET Self Turn-on이 될 수 있다고 이해했습니다. 그런데 하단 스위치가 빠르게 ON이되어 스위칭 노드가 GND 근처로 떨어지면 Vd도 같이 변하는지에 대해 이해하지 못했습니다. 상단 MOSFET의 드레인엔 모터에 공급되는 전압을 인가할텐데 왜 드레인 전압이 변하는건가요?
Q&A
답변 감사합니다.
Q&A
아...죄송합니다. 다시 코드를 보니 목적지 포트가 80일 때만 출력하게 되어있네요.
Q&A
답변 감사합니다. 코드에서는 FIFO에 ARLEN만 넣어줘서 의문이 생겼는데 이제야 좀 이해가 가는거 같아요. 메모리도 AXI4 I/F를 사용하기 때문에 MOR 지원이 되니까 AR hand shake가 발생하면 FIFO에 다음 읽어올 burst len만 넣어주는 거 같네요. 맞을까요? 근데 추가로 궁금한 점이 생기는데요. 같은 질문이긴 하지만 컨트롤러를 통해 DMA 설정을 만약 0x20000000번지에서 128 byte read (1) 0x2000c000번지에서 128 byte read (2) 이것도 MOR이 될까요? (1)의 작업이 실행 중이라면 Module FSM의 상태가 S_RUN일텐데 이 때 (2) 작업에 대한 DMA 설정이 r_real_base_addr과 r_num_total_stream_hs가 사용자가 입력한 값으로 업데이트가 되지 않을 것 같아서요. matbi_rdma.v, code line 272-280, code line 326-334에 코드를 참고했습니다.
Q&A
32장-2부 AXI4-Lite I/F - 실습편 12분 40초 쯤에 언급한 내용입니다. AWADDR과 WDATA 둘 다 input인 것 같은데 WDATA가 output이라는 말이 잘 이해가 안되네요. AWADDR과 마찬가지로 WDATA도 핸드쉐이크 이후에 변경 가능성 때문에 래치를 하는게 맞지 않나라는 생각입니다. state RESET은 아래 그림을 말한겁니다. 저는 WRRESET의 상태가 왜 필요한지 잘 모르겠습니다. 확인 부탁 드립니다. 감사합니다.
Q&A
잘못 이해하고 있던 것 같습니다. 저는 combinational logic인 ready 신호에만 F/F을 연결하면 안되나 싶었습니다. 그런데 이러면 ready 신호는 F/F 때문에 1 cycle 딜레이가 될거고 결과적으로 이러면 m_ready가 되지 않았는데 딜레이된 ready 신호 때문에 데이터가 전송되는 불상사가 발생할 것 같네요.
Q&A
아 m_ready가 0이어도 내부 동작을 멈출 이유가 없네요... 생각이 짧았습니다.
Q&A
감사합니다. 그런데 의존하는 대상이 바뀌어도 기존 코드에 영향이 없으려면 추상클래스를 의존하고 있어야 의미가 있을 것 같은데 맞을까요? 아래의 코드처럼 MessageSender라는 추상클래스에 의존하도록 하고 생성자나 메소드로 SmsSender나 AlimtalkSender를 인자를 받도록 해야 의존하는 대상이 변경되어도 코드 수정이 없을 것 같아서요. 처음 예시에서 SomeService가 SmsSender를 가지고 있고 의존 주입으로 생성자나 메소드로 SmsSender를 초기화한다 하면 요구사항이 변경되어 AlimtalkSender로 변경됬을 때 결국 코드가 수정되어야 하니까요.. 제가 이해하고 있는게 맞나요? class SomeService { //private AlimtalkSender sender = new AlimtalkSender(); // sender = sender; } void doSome() { ... // DB 연동 등 작업 sender.send(to, msg); } }