24.07.26 15:25 작성
·
53
1
맛비님 안녕하세요.
강의 시청 후 여러가지 코드를 만져보며 동작 시켜보고 있습니다.
이번에는 20~22장에 걸쳐 다뤄진 FC Core를 unsigned 연산이 아닌, signed 연산을 해보자 하여, FC core에 기술된 HDL 코드의 Type을 signed로 바꾸었고, 넣어주는 data 또한 signed bit를 위해 bit 범위에서 맞는 값들을 넣었습니다. (Random하게 generation 하지는 않았고, txt file 값을 수정하여 집어넣었습니다.)
그렇게 하였을때, 21장처럼 test bench 기술하여 동작 하였을땐 C값과 동일하게 나오지만, 이상하게 Vitis에서 fpga에 올렸을때는 음수 값이 인식이 안되는것을 알게 되었습니다.
fpga에 올릴때는 fpga에 sd카드를 장착하고, 읽게 하였습니다.
Core와 Data mover를 하는것과 별개로 FPGA에 올릴려면 별도의 AXI를 사용하게 되고, 그에 따라 AXI Code에도 signed type을 인식할 수 있는 별다른 조치가 필요한지 궁금하여 이렇게 질문 남기게 되었습니다.
항상 좋은 강의해주셔서 감사합니다.
답변 1
0
2024. 07. 27. 14:51
안녕하세요 🙂
개인 코드는 디버깅이 어려워서, 생각나는 것만 답변드릴께요.
제 생각으로는 Simulation 에는 문제가 없는데, FPGA 에서 문제가 발생한다면...
Vitis 에서 test 하시는 값을 그대로 Simulation 에서 Test 를 하지 못하셨을 가능성이 있어보여요.
아니면 음수값을 인식하기 위해서 data 를 읽는 과정 중간에 unsigned 로 인식하는 과정이 섞여있을 가능성도 있어보입니다.
즐공하세요 🙂
2024. 07. 31. 21:54
bit 수가 증가하면, error 는 오히려 감소할 것 같아요. 많은 bit 로 값을 표현할 수 있으니까요.
강의에서 8bit 를 사용한 이유는, 그나마, 의미있는 값을 만들어낼 수 있는 단위라고 생각했어요. 32bit 하나에 4개 data 를 포함하는 것도 그렇고요.
즐공하세요 🙂
2024. 07. 29. 19:08
답변 감사합니다. 맛비님 ㅎㅎ
아무래도 unsigned 으로 인식되는 부분이 있는것 같아 코드 손 보면서 디버깅하는 과정을 거치고 있습니다. 감사합니다!
혹시나, 맛비님께서 8bit system으로 하셨지만 이것을 16bit 더 나아가 32bit system으로 변환하여 사용하는게 뭔가 더 정확한 예측이 가능하다고 생각되는데 8bit으로 하신 이유가 따로 있으실까요? 아니면 설계상 16bit나 32bit system은 오류가 있는걸까요!