들어가기 전에... 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 설계방법 중 하나입니다.
현업에서 자주사용해요.
즐공하세요 :)
'개발 편의성을 위한 소소한 Tips > 04 질의 응답 정리' 카테고리의 다른 글
[Verilog HDL Q/A. 010] always @ (*) 에 대해서.. (0) | 2021.10.26 |
---|---|
[Verilog HDL Q/A. 009] WSL 에서 Vivado 2021.1 GUI 설치 (0) | 2021.10.24 |
[FPGA Q/A. 008] FCLK_Reset 을 PS 에서 제어하기. (0) | 2021.09.21 |
[Verilog HDL Q/A. 007] ASIC 에서 합성가능한 Memory code? (0) | 2021.09.16 |
[Verilog HDL Q/A. 006] verilog 특성 관련 질문 (동작 관련) (0) | 2021.09.14 |