분류 전체보기 100

[FPGA] VIO를 사용한 pin test

FPGA 검증을 할 때 여러 디버깅 포인트가 있는데요, 최대한 변수를 줄이는 것이 좋습니다. 가장 먼저 해결할 수 있는 문제는 FPGA 보드의 핀이 정상적으로 작동하냐는 것입니다. 시뮬레이션에서는 문제가 없는데 FPGA test에서 문제가 발생하면 진짜 미치고 팔짝 뛰거든요;; 그러면 이것저것 의심하게 되는데 저 같은 경우는 핀 테스트를 가장 먼저 합니다. IO 핀에 core clock 같은 것을 연결해서 bit를 다운로드하자마자 핀 output이 토글 되도록 만듭니다. 그리고 오실로스코프로 찍어서 신호를 확인함으로써 IO 핀에 이상이 없음을 확인할 수 있습니다. 하지만 위의 방법은 FPGA 합성을 해야 하고 그동안 시간이 지체될 수밖에 없습니다. - vio(virtual input/output)를 사용..

Ch1 Seminar/FPGA 2024.01.24

EC-transistor에 대하여 - 1 작동 원리

제가 석사기간 중 진행했던 연구 중 하나는 EC-transistor(Electro Chemical transistor)였습니다. 정식 명칭이 따로 있는지는 모르겠지만, 저희 연구실에서는 이 이름으로 불렀어요;; RRAM과 마찬가지로 emerging device 중 하나이며, probe가 3개여서 3-terminal device라고도 불렸습니다. 그러면 EC-transistor에 대해 알아보겠습니다. - 구조 먼저 구조를 살펴볼까요?? RRAM과는 많이 다르죠?? EC-transistor는 일반적인 transistor와 마찬가지로 Gate, Source 그리고 Drain이 있습니다. 그러면 나머지 layer들에 대해 설명드리겠습니다. 1. Cathodic oxide Cathodic oxide는 source..

etc./연구 2024.01.22

[FPGA] DONT_TOUCH

- 문제 발생 System verilog 파일을 받아서 FPGA 합성을 돌리고 test를 진행했습니다. 그런데 자꾸 에러가 발생하는데 그 원인이 모듈 하나가 아예 빠진 것 같더라구요;; 그래서 Vivado에서 source 목록을 확인해 봤는데 source에는 제대로 import 된 모듈들이 Synthesis 후 netlist 목록에 없는 것을 확인했습니다. 무슨 이유인지 모르겠지만 합성과정에서 Vivado tool이 아예 날려버린 것 같더라구요;; - DONT_TOUCH로 해결 Vivado tool이 모듈을 날리지 못하게 처리하는 방법이 있습니다, 바로 DONT_TOUCH인데요, 아래 링크로 가시면 예제를 확인해보실 수 있습니다. https://docs.xilinx.com/r/en-US/ug901-viv..

Ch1 Seminar/FPGA 2024.01.16

[FPGA] DCM 사용 방법

반도체 설계에는 반드시 외부에서 들어오는 clock이 있습니다. 이는 FPGA 보드에 있는 external clock으로 사용할 수 있습니다. 하지만 이 클럭의 주파수가 유저가 원하는 값이 아닐 경우에는 원하는 주파수의 클럭을 만들 필요가 있습니다. 클럭 분주를 통해 낮은 주파수를 만들 수 있지만, 더 빠른 클럭이 필요한 경우에는 문제가 생깁니다. DCM(digital clock manager)은 Vivado에서 생성할 수 있는 clock generator로 유저가 원하는 주파수의 클럭을 생성할 수 있습니다. 그러면 DCM을 어떻게 만드는 것인지 알아보겠습니다. - DCM 생성 방법 먼저 Vivado 창의 가장 왼쪽의 Project manager에서 IP Catalog를 선택합니다. IP Catalog를..

Ch1 Seminar/FPGA 2024.01.15

[FPGA] 합성 시 발생하는 에러 - type

- logic type error 발생System verilog 파일을 받아서 FPGA 합성을 진행하려고 했습니다. System verilog는 확장자명이 .sv인데 저희 회사는 System verilog에 익숙지가 않아서 .v로 수정하고 작업을 진행했었어요. RTL 작업이 끝나서 FPGA 합성을 돌렸는데 다음과 같은 ERROR가 발생했습니다. [Synth 8-993] logic is an unknown type 그래서 뭔가 해서 찾아봤는데 logic type은 verilog에서 사용하지 않는 type이어서 System verilog로 확장자를 바꿔줘야 한다고 합니다. 그래서 .v를 원래 형태인 .sv로 수정하고 합성을 돌리니 에러가 사라졌습니다. - verilog 파일을 System verilog 파일..

Ch1 Seminar/FPGA 2024.01.08

[Python] 객체지향에 대하여 (2) 생성자와 클래스 변수/인스턴스 변수

- 생성자에 대하여 이전 글에서 grade라는 클래스를 선언했습니다, 코드를 다시 한번 확인해 볼까요? 2023.12.30 - [프로그래밍/Python] - [Python] 객체지향에 대하여 (1) 클래스와 객체 [Python] 객체지향에 대하여 (1) 클래스와 객체 - 객체지향 프로그래밍이란? OOP(Object Oriented Programming)라고도 하는 객체지향 프로그래밍이란 프로그래밍 방법론이라고 생각하시면 됩니다. 기존에는 데이터 선언하고 데이터를 처리하는 함수들 veriln-e.tistory.com class grade : #필드 name = "" score = 0 #메소드 def plus(self, num) : self.score = self.score + num return self...

[Python] 객체지향에 대하여 (1) 클래스와 객체

- 객체지향 프로그래밍이란? OOP(Object Oriented Programming)라고도 하는 객체지향 프로그래밍이란 프로그래밍 방법론이라고 생각하시면 됩니다. 기존에는 데이터 선언하고 데이터를 처리하는 함수들로 프로그램이 구성되었다면, 객체지향 프로그래밍에서는 프로그램을 객체(object)로 나누고 이 객체들의 상호작용으로 프로그램을 구성시킨 방법이라고 할 수 있습니다. 기존에는 함수를 선언하면 복사해서 재사용할 수 없지만, 객체지향 프로그래밍에서는 여러 번 복사해서 재사용할 수 있다는 장점이 있습니다. 여기서 객체는 데이터뿐만 아니라 데이터를 처리하는 함수인 메소드도 포함합니다. 즉, 객체는 데이터와 메소드의 집합이라고 보시면 됩니다. 객체지향 프로그래밍은 다음과 같은 장단점이 있습니다. 장점 코..

LIN overview (4) LIN 검증 (with transceiver)

제가 설계한 LIN controller IP를 SOC에 올려서 FPGA 합성을 하고 데이터 통신 test를 진행했습니다. 제가 설계한 LIN IP끼리 한 test는 2가지였는데요, 이 글에서는 진행한 test들에 대해 설명해보고자 합니다. - TEST without transceiver 먼저는 FPGA 보드 상에서 transceiver 없이 io 핀끼리 연결해서 test를 진행했습니다. 원래 LIN 통신은 1-wire 통신이지만 저희가 구매한 LIN transceiver는 보드와 연결되는 부분이 TX/RX로 나누어져 있어서 lin_out/lin_in과 lin_oe signal을 만들어서 설계를 하고 보드 핀에 할당했습니다. 그래서 test 환경을 그림으로 나타내면 다음과 같습니다. LIN IP를 2개 넣..

Ch1 Seminar/IP 2023.12.27