인프런 커뮤니티 질문&답변
Hamming Code 질문
해결된 질문
작성
·
62
0

encoder의 경우, output이 [1:21]로 서술되어 있습니다.

근데 tb를 보면 output인 encoded_message가 [21:1] 로 선언되었는데, 이렇게 선언하게 되면 encoded_message 에 들어오는 값은 B[21:1] 로 매칭되서 들어오게 되는건가요? 아니면 tb 코드에서 [21:1]로 잘못 선언한 것인지 궁금합니다! 감사합니다.
퀴즈
컴퓨터 메모리 계층 구조에서 SRAM과 DRAM의 일반적인 특성 비교로 옳은 것은 무엇일까요?
SRAM은 DRAM보다 느리지만 용량이 큽니다.
SRAM은 DRAM보다 빠르고 가격이 비쌉니다.
DRAM은 SRAM보다 트랜지스터 개수가 많아 더 복잡합니다.
DRAM은 SRAM보다 캐시 메모리에 더 많이 사용됩니다.
답변 1
0
안녕하세요, 답변 남겨드립니다.
이 부분은 제가 순서를 반대로 하긴 했네요ㅠ encoder 모듈의 output이 [1:21]로 선언되어 있다면, testbench에서도 동일하게 [1:21]로 선언하여 사용해야 합니다. 만약 testbench에서 [21:1]로 선언한다면, 비트 폭은 같더라도 인덱스 방향이 반대이므로 MSB와 LSB가 뒤집혀 매칭되게 됩니다. 이 경우 의도한 데이터와는 다르게 출력이 연결되어 시뮬레이션 결과가 올바르지 않게 나올 수 있습니다.
실무적으로는 이런 혼동을 피하기 위해 대부분 [N-1:0] 형태로 선언합니다. 예를 들어 21비트라면 [20:0]로 선언하는 것이 일반적입니다. 이렇게 하면 항상 0번 비트가 LSB, N-1번 비트가 MSB라는 암묵적인 약속이 적용되므로 협업 시에도 혼동을 줄일 수 있습니다.
따라서 이번 경우에는 testbench에서 [21:1]로 잘못 선언한 것이 맞고, encoder와 동일하게 [1:21]로 수정해야 합니다. 이후 설계 전체를 일관되게 작성하시는 것이 바람직합니다.





