분류 전체보기 100

베릴로그 문법 (4) always 구문

- always 구문 설명always 구문은 initial 구문과 마찬가지로 reg에 값을 할당할 때 사용합니다. 다음 예시를 실행해볼까요?module top(); parameter period_clk = 10; reg clk; initial clk = 1'b0; reg resetn; initial resetn = 1'b0; always #(period_clk*0.5) clk = ~clk; initial begin #(period_clk); resetn = 1'b1; end initial begin #500 $display("//////////////"); $display("//sim_finish//"); $display("/////////////..

베릴로그 문법 (3) 인스턴스와 계층 구조

- 인스턴스인스턴스화는 이미 완성된 모듈을 가져오는 것을 말합니다. 어떤 경우에 인스턴스화를 할까요?? 1. testbench이전 글에서 testbench는 시뮬레이션을 하기 위한 환경이라고 말씀을 드렸습니다. 시뮬레이션을 하는 이유는 DUT(Device Under Test)의 기능을 확인하거나 검증하기 위해서 합니다. 그러기 위해서는 testbench에 DUT를 가져와야겠죠?? 이럴 때 모듈을 인스턴스화합니다. 2. 구조 설계아래 그림은 UART라고 하는 통신 IP의 block diagram 예시입니다.  UART 모듈 내부에 기능별로 여러 component들이 있죠?? 이러한 구조를 계층 구조(hierarchy)라고 합니다. 하나의 모듈의 위의 component를 모두 구현할 수 있지만, 이럴 경우 ..

베릴로그 문법 (2) initial 구문과 testbench, 절차 할당과 연속 할당

- initial 구문initial 구문은 주로 testbench(시뮬레이션을 위한 환경이라고 보시면 됩니다)에서 시뮬레이션을 위해 사용하는 구문으로, 논리 회로 합성에 사용되지 않습니다. initial 구문 안에는 절차형 할당들이 들어가며, 때문에 reg 값 할당을 작성해 주면 됩니다.한 initial 구문 안에서 작성된 절차형 할당은 문장의 순서에 따라 시뮬레이션이 진행됩니다. 이게 무슨 의미인지는 예시를 보면서 이해해 봅시다. - Testbench 작성지난 글에서 top.v를 작성했었습니다.module top (); //reg 선언 reg a; //1. reg control initial begin a = 1; #100 a = 0; #100 a = 1; e..

베릴로그 문법 (1) 기본 구성

이 글에서는 verilog 기본 문법을 살펴보겠습니다. 먼저 알아야 할 것은 한 문장의 끝은 세미콜론(;)으로 마무리해야 한다는 겁니다. - Verilog 기본 문법module module_name (port_list); //선언 reg reg_name; wire wire_name; parameter parameter_name; //회로 설명 part 인스턴스화 always 문 initial 문 function, task 정의 assign 문 endmodule 하나하나 알아볼까요? 1. 모듈 선언module: 기본 설계 단위입니다. module - endmodule, 한 파일에 여러 개의 module이 들어갈 수 있지만 한 개의 module만 작성하는 것을 추천합니다.po..

베릴로그 개요와 시뮬레이션 환경 세팅

- HDL(Hardware Description Language) 이란?HDL은 기본적인 소자에서 실제 반도체 chip에 이르기까지 디지털 시스템의 설계와 검증에 사용되는 하드웨어 기술 언어로, 회로의 기능과 timing에 대해 기술할 수 있습니다. 소프트웨어 설계 언어가 아니라 하드웨어 설계 언어이기 때문에 일반적인 컴퓨팅 언어와 차이가 있습니다. - HDL을 사용하는 이유그렇다면 왜 반도체는 설계도가 아닌 HDL로 설계하는 걸까요? 회로도 예시를 가져와봤습니다. 여러 component와 and gate도 보이는데요, 요즘의 칩은 과거에 비해 성능이 월등히 좋습니다. 그렇기 때문에 기본적으로 억대의 트랜지스터로 이루어져 있습니다. 이걸 일일이 그리는 것은 불가능하겠죠?? 예전에는 논리 게이트를 일일이 ..

[공지] verilog 과외 합니다!! (실무 2년차)

안녕하세요, 베린이입니다.   퇴사하고 새로운 도전을 앞두고 있습니다. 휴식 기간 동안 1:1 verilog 과외를 해보려고 하는데요, 이론적인 부분보다는 실무적인 관점에서 지도를 하려고 합니다. (대학교 과제를 도와드리는게 아닙니다 ㅠㅠ) 1. 베릴로그 기본 문법 (아시면 넘어가겠습니다)2. AMBA APB bus 설명3. APB interface 설계4. APB interface를 활용한 간단한 IP 설계5. testbench에서 IP 운용  6월부터 시작하려고 하는데, 관심 있으신 분은 편하게 연락 주세요.   메일: strong2066@gmail.com오픈 카카오톡: https://open.kakao.com/o/suwUiasg  비용: 하루에 4만원  장소: 서울 구로구 사는데 협의 가능합니다.

etc. 2024.05.17

[FPGA] ROM code load

- FPGA 합성 할 때 ROM에 부트로더 load 하기 컴퓨터나 SoC는 ROM이 있어서 부팅할 시에 ROM에 내장된 부트로더를 불러와 실행해야 합니다. 그러면 FPGA 합성할 때는 이러한 부트로더를 어떻게 메모리에 넣을 수 있을까요? 그건 Block Memory Generator 설정에서 할 수 있습니다. 실행할 부트로더를 아래 그림과 같이 'Other options'에서 넣어줄 수 있습니다. ROM으로 사용할 block memory에서 해당 부트로더 파일을 load하고 bit 합성하면 FPGA 보드에 bit를 다운받자마자 정해진 프로그램이 실행됩니다.

Ch1 Seminar/FPGA 2024.04.19

[FPGA] Block memory 사용 방법

FPGA 합성 시에는 clock wiz(DCM)와 마찬가지로 memory도 vivado에서 생성하여 bit를 생성합니다. - Block memory 생성 방법 먼저 Vivado 창의 가장 왼쪽의 Project manager에서 IP Catalog를 선택합니다. IP Catalog를 선택하면 다음과 같은 창이 나오는데 memory를 검색하고 Block Memory Generator를 선택합니다. 그러면 다음과 같은 창이 나옵니다. 자, 이제 어떤 값을 어떻게 수정해야 할까요?? 그걸 알기 위해서는 우선 일반적인 상황에서 메모리 인스턴스가 어떻게 되어있는지 알아야 합니다. input wire clk ; input wire data0_cs ; input wire [10:0] data0_addr ; input ..

Ch1 Seminar/FPGA 2024.04.19

[FPGA] VCU118 power check

- 이슈 발생 VCU118 보드에 FMC 보드를 달아서 FPGA test를 하는데 JTAG 연결이 안 되더라구요;;; 왜 그런가 알아보니까 FMC 보드에 들어가는 전원 소스에 이상이 생겼더라구요 ㅠㅠ 회로도를 보니까 어떤 부품에 이상이 생긴 건지도 알 수 있었습니다. FPGA 보드를 다루는 엔지니어는 보드의 data sheet와 회로도를 끼고 살아야 하겠더라구요;; - SCUI를 통해 보드 전원 체크 모든 보드가 다 그런 건 아닌데 xilinx 홈페이지에서 보드의 상태를 알 수 있는 프로그램을 지원하기도 합니다. https://www.xilinx.com/products/boards-and-kits/vcu118.html#resources 위의 링크에서 System Controller Tutorial을 다운..

Ch1 Seminar/FPGA 2024.01.29

LIN overview (5) LIN 검증 (with PLIN)

- LIN 검증 환경 세팅 이제 LIN 검증의 마지막 파트입니다. 지금까지는 제가 설계한 LIN controller끼리 연결해서 data transfer test를 진행했는데요, 다른 LIN controller랑 연결을 해봐야겠죠?? 저는 PEAK 사의 PCAN USB PRO FD(이하 PLIN)으로 LIN 검증을 진행했습니다. PLIN이 있어도 제어 프로그램이 있어야 하겠죠?? PEAK 홈페이지에서 설치 파일을 다운로드할 수 있습니다. https://www.peak-system.com/PCAN-USB-Pro-FD.366.0.html?&L=1 해당 파일을 다운로드하고 설치를 진행하는 과정에서 LIN device driver 옵션을 반드시 설정해야 LIN 제어 프로그램을 사용할 수 있습니다. PLIN을 P..

Ch1 Seminar/IP 2024.01.25