21.07.23 10:58 작성
·
673
2
항상 FPGA가 어떻게 하드웨어 가속에 도움이 될까 궁금 했는데 정말 피가 되고 살이 되는 귀중한 강의 였습니다.
코드작성에 r_valid 신호는 왜 쓰인 건가요? 그냥 인풋에 같이 동기화 되서 작동하는 그냥 잉여의 FF 체인 처럼 보이는데, 이름이 valid 인것 보면 중요한 검증 로직인 것 같기고 하구요.
현업에서도 이런식으로 많이 쓰이나요?
좋은 강의 항상 감사합니다.
답변 5
1
0
답변감사합니다
추가질문 남깁니다.
설명에서는 타이밍을 잡아주기위해 valid가 1일때만 value값이 나오게 했다고 이해를 했습니다.
코드를 보면 valid와 value가 어디 코드에서 엮여있는지 궁금합니다.
tb 파일 54~55줄을 보면 그냥 따로 valid를 1로 선언해주고 value값은 루프가 돌때마다 바뀌는걸로 해주셧는데 걍 따로 값을 지정해준거 아닌가요?
valid=1일때 value값을 줄려면 if(i_vaild)같은 것이 있어야되는것 아닌가요???
2 .reset을 negative로 주시는 이유가 뭐죠? positive에는이미 clk이 할당되있어서그런가요?
2022. 02. 04. 15:14
1. i_value = i;
i 값을 value 로 사용했어요. 이거면 답은 충분해 보이는데...
이 이상 설명을 못하겠어요. (코드에 있는그대로..)
2. 좋은 질문입니다.
설계자가 positive edge reset, negative edge reset 사용 여부를 결정할 수 있구요. 저는 negative edge reset 을 사용한 것 뿐입니다. (으잉?)
상황에 맞게 사용하자가 저의 답이구요.
- positive edge 사용시 유리한 예 (Xilinx FPGA)
Active-high recommended
If possible, always use active-high resets (as active-low resets require an inversion adding a LUT in the path) when using Xilinx FPGAs.
- negative edge 사용시 유리한 예 (ASIC)
플립플롭을 설계시, 기본적으로 셀 설계자가 negative edge 로 설계를 하게 됩니다.
0
2022. 02. 04. 14:00
안녕하세요. 성은님 :)
1, valid가 없어도 입력이 없으면 어차피 아웃풋이 안나올것이고, 입력이있어야 아웃풋이 나올텐데 딜레이때문에 생길수있는 오차를 방지하고자 valid를 넣어주는건가요??
"입력이 없으면" 이란 뜻을 어떻게 해석하면 좋을까요?
0, 1 , x, z 중 어떤거..?
즉, 입력은 저 4개의 type 중 하나가 들어오게 됩니다.
입력이 없는 상황은 HW 에서 존재하지 않아요.
단지 유효한 입력을 알려주기 위해서 "valid 신호가 1 일때" 라는 약속을 하였습니다.
"딜레이때문에 생길수있는 오차를 방지하고자 valid를 넣어주는건가요??"
말씀하신게 맞아요. HW 는 Sync 를 맞추는 일이 굉장히 중요합니다.
2. 공부를 하는데 있어 제공해준 파일이 아닌 새롭게 파일을 작성하여 시뮬을 돌려보고싶은데 어떻게 진행하면 될까요?
다음 링크 참고해보세요.
즐공하세요 :)
0
2021. 07. 23. 11:13
Valid 는 유효한 Data 임을 밝히기 위해서 사용합니다.
Valid 없이, Data 만 보내면, 이 Data 가 유효한 시점을 모르겠죠?
그럼 오동작을 합니다. Valid I/F 라고 현업에서 부르고 있어요.
현업에서 필요한 부분에 사용합니다. :)
2022. 02. 04. 15:54
clk = neg 일때 valid=1, value=i 를 해버리면 그냥 valid따로 value r개별적으로 따로 나오는것아닌가요?
네 하지만, 두 신호는 동일한 timing 이죠? 중간에 delay 요소가 없음으로.
if(valid)
value=i
이렇게 해도 동작은 할 것 같아요.
valid = 1 이 이미 위에 존재하니까..
편하신대로 하시는걸로......