개발 편의성을 위한 소소한 Tips/04 질의 응답 정리

[Verilog HDL Q/A. 008] vaild신호 Concatenation문법 질문

반응형

들어가기 전에...  Syntax 먼저 숙지하기 

답변은 먼저 Concatenation 문법을 이해했다 가정합니다. (해당 링크 글을 이해 후 다음 글을 봐주세요.)

https://www.chipverify.com/verilog/verilog-concatenation

 

Q1

r_valid 값을 제가 시뮬레이션에 추가해서 따라가보면서 확인했습니다.

그 결과 000 001 011 111 로 변경되는 것을 확인했습니다.

0(2)0(1)0(0) 비트수 별로 번호를 매겼을 때 이렇게 표현되고 {r_valid[1:0], i_valid}는 0(1)0(0) 이 두비트에 i_valid가 추가된다고 생각하면 되나요??

 

A1

Shift Register 를 확인하시면 될 것 같아요.

다 읽어보진 마시고, 아!  라고 생각나시면 그만 보셔도 됩니다.

https://ko.wikipedia.org/wiki/%EC%8B%9C%ED%94%84%ED%8A%B8_%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0

Verilog HDL 설계 tip 같은 겁니다. 저는 자주 써요.

 

Q2

좋은 자료 감사드립니다.

궁금증이 해결되지 못해 죄송합니다.

{r_vaild[1:0], i_vaild} 구문은 concatenation 연산이라고 생각되는데

예를 들어 {4'b1010, 2'b01}라고 하면 결과가 6'b101001이 되는게 아닌가요??

r_varid = 3'd0 = 3'b000 , i_valid = 1 

이게 맞다면 {r_vaild[1:0], i_vaild} 는 r_valid 는 2비트, i_valid 는 1비트(? 잘모르겠습니다.) 

001 이라고 봐도 될까요?

 

A2

{r_vaild[1:0], i_vaild} 구문은 concatenation 연산이라고 생각되는데

예를 들어 {4'b1010, 2'b01}라고 하면 결과가 6'b101001이 되는게 아닌가요??

맞아요! concatenation 의 뭉친 bit 를 어떻게 assign 하고 있나요?!!!

그림을 그려보시면 더욱 좋아요. HW 입니다. 공부하시는 과정이시기에 꼭 이해하시기를 바랄께요. 

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

shift register 이구요.

보통 shift reg 를 이렇게 구현하겠네요.

두 coding style 의 결과가 같습니다.

 

지금은 r_valid 가 3 bits 인데, 만약에 이게 10................000 bits 라면?

Concatenation 을 이용한 Shift F/F 설계방법 중 하나입니다. 

현업에서 자주사용해요.

 

즐공하세요 :)

반응형