본문 바로가기

language/Verilog25

[systemverilog] enum 사용법 열거된 값의 집합을 정의하는 enum은 가질 수 있는 값을 알려주는 변수입니다. 1. 사용법 enum {RED, YELLOW, GREEN} light; // int type RED = 0, YELLOW = 1, GREEN = 2 위에서 light라는 값은 0, 1, 2라는 값을 RED, YELLOW, GREEN 이라는 표현을 통해 가질 수 있습니다. 다른 값을 할당을 하지는 못합니다 아래와 같이 default 값을 선언해줄수도 있습니다. enum {RED=3, YELLOW=9, GREEN} light; // int type RED = 3, YELLOW = 9, GREEN = 10 여기서 주의 할점은 default로 선언되지 않은 값은 이전값의 1을 더해주는 방식으로 할당이 되는데 아래와 같이 숫자가 중복.. 2021. 2. 2.
[verilog] >>, >>>, <<, <<< 연산자 verilog에서 사용하는 shift 연산자는 크게 >>, >>, >> 2; //c == 5'b11101 d = a >>, 2021. 1. 31.
[verilog] generate 사용하기 RTL 설계하다보면 동일 block을 여러번 instance 할 경우가 생깁니다 이때 1~2개만 추가하는거면 모르겠지만 수십개를 추가하기에는 너무 효율이 좋지않아 gererate라는 keyword를 사용하여 설계를 한다고 합니다(저도 최근 공부하면서 알게됬네요) 참고한 사이트는 아래와 같습니다 www.chipverify.com/verilog/verilog-generate-block Verilog generate block A generate block allows to multiply module instances or perform conditional instantiation of any module. It provides the ability for the design to be built base.. 2021. 1. 31.
[systemverilog] automatic keyword 예전 블로그에서 automatic이 뭔지 몰라 정리를 했었던 적이 있습니다 blog.naver.com/ddacksal/222029970829 [Day 49] systemverilog 공부 - 8 (automatic, static, initialize, datatype) 새로 산 책에 제목에 있는 부분들이 정리가 어느정도는 되어있어서​나중에 다시 봤을때를 위해 정리를 해... blog.naver.com 이번에 다시 정리하면서 머리속에 넣어두려고 합니다. 해당 keyworkd는 verilog에서도 있었던 것 같은데, 정확히 찾아볼 시간이 없어서 우선 어떻게 사용하는지 정리를 합니다 일반적으로 verilog나 systemverilog에서 그냥 task를 사용하면 default static속성을 가지고 있습니다.. 2021. 1. 31.
[systemverilog] task 와 function task와 function은 코드 반복을 줄이기 위해서 verilog, systemverilog에서 사용되는 keyword 들 입니다. 동일한 동작이 많은 프로젝트에서는 task, function을 사용하면 코드가 간결해집니다 두가지 keyword의 차이점에 대해서 알아보겠습니다. 1. Task Task는 정의된 모듈안에서 언제든치 호출이 가능한 서브루틴 keyword 입니다. Task가 정의되어 있지 않은 파일에서 Task를 호출 할 수도 있습니다. 사용하는 방법은 module 선언하는 것과 같이 task와 endtask로 감싸서 사용합니다. 특징은 아래와 같습니다 시간 지연과 관련된 기능들을 포함 시킬 수 있다.(ex. # delay, posedge clk, negedge clk 등) input, o.. 2021. 1. 31.
[verilog] $signed casting logic count 기존에 사용해봤던 $signed 동작이 얼마나 chip에 많은 영향을 미치는지 확인해봅시다 해당 포스트는 FPGA 기반으로 한거라 정확하지는 않지만 이렇구나 정도만 알고있으면 될 것 같습니다. 우선 단순 +/- 연산을 아래와 같이 case1, case2로 나누어서 설계합니다.(주석은 무시....) case1은 부호를 따로 처리하는 unsigned 형식으로 설계, case2는 부호를 한번에 처리하는 signed로 설계했습니다 이걸 아래와 같이 한번에 돌리기 위해 이렇게 설계해서 돌리면 아래와 같은 FPGA 결과를 보여주는데요 signed로 casting 한게 더 좋게 보입니다. 하지만 현재 적용중인 code에서 연산 bit를 10bit씩 늘려주면 아래와 같이 바뀌는데요 이 결과를 보면 어떤게 무조건 적게 .. 2021. 1. 26.