게시글
질문&답변
SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.
안녕하세요, 답변 남겨드립니다.버전마다 원인이 다를수있어서 아래 방법들 한번 시도해보시겠어요?1. 시뮬레이션 시작 전 설정상단 메뉴에서 Simulate → Start Simulation... 선택창이 열리면 상단 탭 중 Optimization 탭으로 이동다음 항목을 설정Enable optimization은 그대로 둠Debug / Access 항목을 All 또는 Full Visibility 로 변경(버전에 따라 “Debug: All”, “Signal Visibility: Full” 등으로 표시됨)설정을 마친 후 OK → Run 클릭이렇게 하면 내부 메모리(mem)가 최적화로 숨겨지지 않고 표시됩니다.2. Memory List에서 인스턴스 선택시뮬레이션이 실행된 상태에서 상단 메뉴 View → Memory 선택→ “Memory List” 창이 나타납니다.“Memory List” 창에서 /tb_sram/u_sram_8 인스턴스를 클릭3. Objects 창 확인Objects 창의 상단 Scope 드롭다운이 /tb_sram/u_sram_8 로 되어 있는지 확인(다른 스코프로 되어 있으면 mem이 보이지 않음)이제 Objects 창에서 mem 신호가 표시되어야 합니다.4. 웨이브폼에 추가mem 신호가 보이면Objects 창에서 mem 항목을 마우스로 드래그해서 Wave 창에 놓습니다.이후 시뮬레이션을 실행하면 강의처럼 내부 메모리 내용이 웨이브폼에 표시됩니다.5. 그래도 안 보일 때다시 Simulate → Start Simulation... 열고Optimization → Access: All 로 되어 있는지 재확인설정 후 Restart 또는 시뮬레이션 재실행
- 0
- 2
- 21
질문&답변
전자캐드기능사는 어떤가요?
안녕하세요, 답변 남겨드립니다.전자캐드기능사는 회로설계나 PCB 설계 입문자에게는 유용할 수 있지만, 실제 회로설계 또는 하드웨어 엔지니어로의 취업에는 제한적인 영향을 미칩니다. 해당 자격증은 주로 OrCAD 기반의 회로도 작성 및 PCB 기본 설계 과정을 다루며, 실무보다는 ‘기초 설계 도구 활용 능력’을 검증하는 성격이 강합니다. 즉, 산업 현장에서 요구하는 Mixed-signal PCB 설계, 전력·신호 무결성 분석, EMC 대응, 고속 디지털 설계 같은 고급 기술 역량과는 직접적인 연관이 적습니다.PCB HW설계 실무 강의에서도 다루듯이, 실제 취업에서 중요한 것은 Power Budget 작성, Pin Mapping, Layer Stack-up, Return Path 및 Analog/Digital GND 분리, BOM 및 Gerber 파일 산출 등 ‘완전한 설계 Flow’를 경험해보는 것입니다. 전자캐드기능사에서는 단순한 회로 입력과 배선만 다루기 때문에, 현업 수준의 설계 역량을 평가하기에는 부족합니다.실무에서는 오히려 OrCAD, Altium Designer, Cadence Allegro, Mentor PADS 등 상용 툴을 활용한 프로젝트 포트폴리오가 더 높은 가치를 가집니다. 예를 들어, STM32F103 기반 Mixed-signal 보드를 설계하면서 Ethernet PHY, ADC, DAC, LDO 등을 통합하고 Signal Return Path를 검증한 결과물을 제출하면, 기업에서는 이를 정량적 기술역량으로 평가합니다. 특히 Layer Stack-up 규칙(예: 4 Layer 기준 Top/GND/Power/Bottom 구조)이나 EMI 대책 설계 등을 포함하면 자격증보다 훨씬 높은 평가를 받을 수 있습니다.실제 현업에서 전자캐드기능사를 준비하는 사례는 많지 않습니다. 실무자보다는 학생이나 초보자가 설계 흐름을 익히기 위한 ‘입문용 인증’으로 준비하는 경우가 대부분입니다. 따라서 이 자격증은 “기초 전자캐드 도구를 다룰 줄 안다”는 보조적인 어필 수단일 뿐이며, 이를 기반으로 STM32 기반 보드 설계 프로젝트나 Power & Signal Flow 설계 과제 경험을 병행하시면 훨씬 실질적인 경쟁력을 확보하실 수 있습니다.
- 0
- 2
- 29
질문&답변
Debugging pin 글로벌 라벨에 대한 질문 있습니다.
안녕하세요, 답변 남겨드립니다.질문하신 내용은 STM32F103의 디버깅 핀(JTAG/SWD 관련 신호)을 schematic에 설계할 때, 글로벌 라벨 명을 JTMS_F407, NTRST_F407처럼 명명한 근거가 무엇이냐는 부분으로 이해됩니다.먼저, STM32F103의 데이터시트를 보면 각 포트 핀(PB14, PB13, PB12 등)은 “main function” 열에 단순히 GPIO명(PB14, PB13 등)으로만 표시되어 있습니다. 그러나 실제로 이 핀들은 “alternate function(AF)”으로서 특정 디버깅 기능을 수행할 수 있습니다. 예를 들어 STM32F103의 PB3~PB4, PA13~PA15 등은 JTAG/SWD 포트로 설정될 수 있으며, 데이터시트보다는 STM32F103 Reference Manual (RM0008) 및 ST의 Debug Interface application note (AN2606)에서 해당 핀들의 디버깅 기능이 정의되어 있습니다.JTMS_F407, NTRST_F407 등의 라벨을 붙인 이유는, STM32F407과 STM32F103 모두 ST의 Cortex-M 시리즈 MCU로서, 디버깅 인터페이스(JTAG/SWD)가 공통적으로 존재하기 때문입니다. 즉, 기능 명(JTMS, JTCK, JTDI, JTDO, NTRST)은 Cortex-M CoreSight 표준 인터페이스 규격(ARM Debug Interface v5 Architecture, ADIv5)에 기반하여 동일하게 사용됩니다. 따라서 설계 시 pin 라벨을 “PB14”로만 두기보다는, 핀의 기능 역할을 명시적으로 표현하기 위해 글로벌 라벨로 “JTMS”, “JTCK”, “NTRST” 등의 명칭을 추가하는 것이 하드웨어 설계상 더 명확합니다.예를 들어, STM32F103의 디버깅 핀 매핑은 다음과 같이 설정됩니다.JTMS/SWDIO → PA13JTCK/SWCLK → PA14JTDI → PA15JTDO → PB3NTRST → PB4따라서 schematic에서 “PB14, PB13, PB12”에 JTMS_F407 등의 이름을 부여한 것은 단순히 STM32F103의 기능을 따른 것이 아니라, STM32 시리즈 간 호환성과 디버깅 신호의 의미적 일관성을 유지하기 위한 설계 관례입니다. 실제 PCB 설계 시, 동일한 디버깅 커넥터(예: 2x5 10pin ARM JTAG Header)를 여러 MCU 제품군에 공통적으로 사용할 수 있게 되며, 이는 재사용성 및 설계 효율을 높입니다.요약하자면, 데이터시트에 “PB14”라고만 표기되어 있어도, Reference Manual과 ARM Debug Interface 스펙을 근거로 “JTMS”, “JTCK” 등의 기능명이 존재하고, 설계자는 이를 schematic 상에서 명시적으로 표현하여 디버그 인터페이스의 연결 관계를 명확히 하기 위해 글로벌 라벨을 부여한 것입니다.실무적으로는, 같은 회로보드에서 STM32F1, F4, F7 등의 시리즈를 교체하더라도 JTAG 핀의 역할은 동일하므로, 이러한 라벨링 방식은 하드웨어 디버깅 포트를 설계할 때의 표준화된 접근입니다.
- 0
- 2
- 23
질문&답변
현재 stm32 Mixed-signal 보드 설계 수강중인데요??
안녕하세요, 답변 남겨드립니다.제가 직접 임베디드 강의를 기획하지는 않아서,무료로 들으실 수 있는 강의 좋은게 있어서 추천드립니다.https://inf.run/NuX4o
- 0
- 1
- 22
질문&답변
PLL과 X크리스탈(xtal) 차이
안녕하세요, 답변 남겨드립니다.STM32와 같은 MCU 기반 회로에서 PLL(Phase-Locked Loop)과 크리스탈(Quartz Crystal, Xtal)은 모두 클럭을 생성하거나 안정화시키는 역할을 하지만, 그 동작 원리와 회로 내 역할은 다르며, 항상 동시에 쓰이지는 않습니다.크리스탈은 물리적으로 진동하는 석영 결정체로, 전압을 가하면 특정 고유 주파수로 매우 안정적으로 진동합니다. MCU 내부의 오실레이터 블록에 크리스탈을 연결하면, MCU는 이를 기준 주파수(reference clock)로 사용합니다. 예를 들어, 8 MHz 크리스탈을 연결하면 MCU는 내부 회로에서 그 주파수를 매우 정밀한 기준 클럭으로 사용하게 됩니다. 크리스탈의 장점은 주파수 안정성이 높고, 온도나 전압 변화에 따른 드리프트가 작다는 점입니다. 대신, 주파수를 크게 변경하거나 배수로 증폭하는 데는 적합하지 않습니다.반면 PLL은 전자적으로 입력된 기준 클럭을 기준으로 위상을 고정시키면서 원하는 배수나 분주로 클럭을 변환해주는 회로입니다. PLL의 출력 주파수는 입력 주파수 * N / M (N: 곱셈 계수, M: 분주 계수) 형태로 계산되며, 예를 들어 8 MHz 크리스탈을 입력으로 하고 PLL 배수기를 9로 설정하면 72 MHz의 시스템 클럭을 얻을 수 있습니다. PLL은 클럭 신호를 고속화하거나 여러 주파수를 동시에 생성할 때 매우 유용하며, STM32 내부에서는 CPU, USB, ADC 등 블록별로 다른 클럭 도메인을 만들기 위해 사용됩니다.현업의 설계 예시로 보면, MCU의 시스템 클럭을 72 MHz로 동작시키기 위해 외부 8 MHz 크리스탈(Xtal)을 기준으로 PLL 블록을 통해 ×9배 증폭하여 사용하는 구성이 일반적입니다. 즉, Xtal은 ‘기준’ 클럭을 제공하고, PLL은 ‘변환’ 및 ‘분배’를 담당합니다. 하지만 모든 MCU 설계에서 반드시 두 블록을 함께 사용하는 것은 아닙니다. 저전력 애플리케이션이나 보드 공간이 제한된 설계에서는 내부 RC 오실레이터(예: HSI, High Speed Internal RC)를 기준으로 PLL을 동작시키거나, 반대로 PLL을 사용하지 않고 Xtal만으로 구동하기도 합니다.정리하자면, PLL과 크리스탈은 클럭 생성 체계의 서로 다른 단계에 속합니다. Xtal은 매우 안정적인 기준 클럭 소스이고, PLL은 그 기준을 다양한 속도로 변환·분배하는 회로입니다. 따라서 두 블록은 자주 함께 쓰이지만, 회로의 용도와 성능 요구(예: USB 동작 48 MHz, ADC 샘플링 정확도, 저전력 모드 등)에 따라 단독으로 쓰이는 경우도 충분히 있습니다.예를 들어 산업용 모터 제어 보드의 경우, 8 MHz 크리스탈을 기반으로 PLL을 통해 72 MHz 시스템 클럭과 36 MHz ADC 클럭을 동시에 생성해 안정성과 정밀도를 모두 확보합니다. 반면 IoT 센서 노드처럼 저전력 중심 설계에서는 내부 RC 오실레이터만으로 구동하고 PLL을 끄는 방식으로 소비전력을 약 20~30% 절감하기도 합니다.따라서 요약하면, PLL과 Xtal은 동시에 쓰이는 경우가 많지만, 서로 대체 가능한 관계는 아니며, 회로의 목적과 정확도, 전력 요건에 따라 선택적으로 사용됩니다.
- 0
- 1
- 21
질문&답변
이더넷 고속 신호 아트웍 문의 건
안녕하세요, 답변 남겨드립니다.이더넷 고속 신호 아트웍 관련 내용은 현재 「PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트」 강의 내에서도 Ethernet PHY 블록의 레이아웃(섹션 8, 강의 67)에서 일부 다루고 있으나, 임피던스 매칭이나 종단 처리, 전송선로에서의 반사 및 스큐·지터 등의 고속 신호(Signal Integrity) 관점의 심화된 내용은 추가 보충 계획 중에 있습니다.다만, 인프런 카페 이벤트를 통해 제공되는 「KiCAD를 활용한 DDR4 DIMM(OpenDIMM) 설계 마스터 가이드」 자료에는 고속 인터페이스(DDR4) 기반의 임피던스 매칭, Stub 처리, 라인 길이 보정 및 차동쌍 라우팅 규칙 등 이더넷에도 동일하게 적용 가능한 고속 신호 처리 원리가 포함되어 있습니다. 이 자료를 통해 우선적으로 고속 신호의 PCB 설계 관점(예: Zo = √(L/C), 반사계수 Γ = (Zl - Zo)/(Zl + Zo))을 학습하실 수 있으며, 실제 Ethernet differential pair 라우팅 시에도 동일한 개념을 적용할 수 있습니다.또한 현재 기획 중인 차기 프로젝트인 「DDR4 검증용 보드 설계 강의」에서는 DDR4 신호 무결성(SI) 중심의 전송선로 모델링, 리턴 패스, Crosstalk 및 Length matching까지 포함하여 보다 정량적인 설계 기준을 다룰 예정입니다. 이 과정에서도 이더넷 고속신호 아트웍 가이드라인과 동일한 SI 접근법이 적용될 예정이므로, 추후 수강하시면 도움이 되실 것입니다.따라서, 우선 인프런 카페 이벤트에 참여하셔서 OpenDIMM 설계 마스터 가이드를 받아보시길 권장드립니다. 이 자료로부터 임피던스 매칭 및 라우팅 처리 개념을 선행 학습하시면, 향후 예정된 강의에서 이더넷을 포함한 다양한 고속신호 설계 내용을 보다 체계적으로 이해하실 수 있을 것입니다.
- 0
- 2
- 27
질문&답변
active load differential amp 설계
안녕하세요, 답변 남겨드립니다.회로 가장 아래쪽에 VSS를 안붙여서 전류가 빠져나갈데가 없어서 높아지는 것이니 확인해보시기 바랍니다.
- 0
- 2
- 20
질문&답변
Motor Driver Schematic 질문
안녕하세요, 답변 남겨드립니다.네, 맞습니다. 실제로 자세히 비교해보면 두 회로 모두 SP와 SN 단자 사이에 전류 검출 저항(Rsense)이 존재하는 동일한 동작 원리를 갖습니다. 데이터시트나 애플리케이션 회로에서는 Rsense가 명확히 “SP–SN 사이에 위치”하는 형태로 도식화되어 있지만, 어떤 회로도에서는 기호 표현상 SP와 SN이 바로 이어진 것처럼 보이기도 합니다. 그러나 실질적으로는 Low-side MOSFET 소스 노드와 GND 사이에 저항이 존재하고, 그 양단이 SP와 SN으로 연결되어 있기 때문에 동일한 기능을 수행합니다.이런 착시는 주로 회로도 심볼 배치나 그라운드 심볼 처리 방식 때문입니다. 예를 들어 SN이 GND 심볼로 직접 내려가 있는 것처럼 보이더라도, 실제 Net 이름이 Rsense 하단 노드(GND_SENSE 등)로 따로 지정되어 있다면, 내부적으로 SP–Rsense–SN 구조가 유지됩니다. 즉, 전류 루프 상에서는 완전히 동일한 경로입니다.따라서 현재 회로가 Rsense를 통해 Low-side 전류 검출이 이루어지고, 그 양단이 SP/SN으로 연결되어 있다면, 기능적으로 전혀 문제가 없는 정상적인 설계로 보셔도 됩니다. 이런 경우에는 오히려 데이터시트의 단순화된 블록 표현이 오해를 불러일으킬 수 있습니다.혹시 nFAULT나 SNSOUT의 Pull-up 관련 회로를 함께 확인하신다면, 그것들은 Open-drain 출력이므로 외부 풀업 저항(보통 10kΩ 내외)을 추가해야 하며, MCU 입력핀 전압 레벨(VIO, 보통 3.3V 또는 5V)에 맞춰 풀업 전원을 연결해 주셔야 합니다. 예를 들어 nFAULT → 10kΩ → 3.3V, SNSOUT → 10kΩ → 3.3V 형태로 설계하시면 MCU 인터페이스 레벨과 정확히 매칭됩니다.
- 0
- 2
- 20
질문&답변
AHB, APB 차이 질문입니다!
안녕하세요, 답변 남겨드립니다.핵심은 “속도가 느리다”라는 표현이 단순히 클록 주파수만을 의미하지 않고, “버스의 구조적 특성과 접근 방식에 따른 실질적인 데이터 전송 효율”을 의미한다는 점입니다.AMBA(Advanced Microcontroller Bus Architecture) 계열 버스는 계층적으로 구성되어 있으며, 일반적으로 AHB → APB 순으로 하위 레벨 버스로 확장됩니다. AHB는 주로 CPU, DMA, 메모리(예: Flash, SRAM)처럼 대용량 데이터를 빠르게 주고받아야 하는 블록을 연결하는 고속 버스입니다. 반면 APB는 GPIO, UART, SPI, I2C, Timer 등 저속 주변 장치와의 제어 신호 전달용으로 설계되어 있습니다.이제 ‘AHB가 느리다’는 표현이 나온 이유를 기술적으로 풀어보겠습니다. AHB는 파이프라인 구조와 버스트 전송(burst transfer)을 지원하지만, 이러한 고기능 구조로 인해 주소 단계(Address Phase)와 데이터 단계(Data Phase)가 분리되어 있고, 마스터 간의 중재(Arbitration)나 슬레이브 응답(Ready/Wait signal)에 따른 지연이 발생할 수 있습니다. 즉, 실제 단일 트랜잭션(예: 한 번의 Read/Write 요청)에 대해 초기 오버헤드가 존재합니다. 반면 APB는 단일 싸이클 기반의 매우 단순한 프로토콜을 가지며, Address → Enable → Data 단계로 끝나기 때문에 구조적으로 단순하고 latency가 짧습니다. 따라서 “단일 접근 기준으로는” APB가 빠르게 느껴질 수 있습니다.예를 들어 STM32F4 시리즈에서 AHB는 CPU(ARM Cortex-M4)와 SRAM, Flash를 연결하고, 그 아래 APB1, APB2 버스가 존재합니다. AHB 클록이 168 MHz로 동작하고 APB1이 42 MHz, APB2가 84 MHz로 동작하더라도, 단일 레지스터 접근 시 AHB는 내부적으로 여러 신호 핸드셰이크를 거치기 때문에 몇 사이클이 소모될 수 있습니다. 반면 APB는 단순히 Peripheral Register에 직접 접근하기 때문에 오히려 “단일 명령 실행 시간”만 보면 빠르게 반응할 수 있습니다. 그러나 AHB는 연속된 대량 데이터 전송에서 버스트 모드(예: 8-beat, 16-beat 전송)를 지원하므로, 실제 데이터 전송 효율(Throughput)은 APB보다 압도적으로 높습니다.정리하자면,AHB는 고속 대역폭을 위한 구조이지만 파이프라인·중재 오버헤드 때문에 단일 접근 지연(latency)은 클 수 있습니다.APB는 단순 제어용 버스로 구조가 간단해 latency가 짧지만, 대량 데이터 전송에는 부적합합니다.실제 MCU 내에서는 AHB 클록이 더 높지만, 주변장치 접근 시 APB 브리지 단을 거치므로 체감 속도는 APB가 더 단순하게 동작하는 것처럼 보일 수 있습니다.따라서 “AHB가 느리다”는 표현은 클록 속도나 전송 대역폭이 아니라, 단일 접근의 효율과 구조적 단순성을 비교한 문맥에서 나온 표현으로 이해하시면 됩니다.
- 0
- 2
- 38
질문&답변
DataMem 스펙 질문
안녕하세요, 답변 남겨드립니다.말씀하신것처럼 의도가 헷갈릴수있어서 몇가지 관점들을 설명드려볼게요.지금 보신 선언은 reg [31:0] mem [127:0]; 이라서 32비트짜리 공간이 128개 있는 셈입니다. 그런데 실제로는 주소를 6비트(Address[5:0])만 쓰고 있어서 0번부터 63번까지만 접근이 됩니다. 즉, 전체 중 절반(64개)만 쓰고 나머지 64개는 실제로는 아무 역할도 하지 않습니다.그럼 왜 굳이 128개로 선언했을까 하는 부분인데, 보통 두 가지 이유가 있습니다. 하나는 나중에 주소를 7비트(Address[6:0])로 확장해서 128개 다 쓰려고 미리 크게 잡아둔 경우이고, 또 하나는 원래 설계 스펙이 128이었는데 실제 구현은 64까지만 쓰도록 변경되면서 코드가 정리되지 않은 경우입니다.이렇게 “선언된 크기”와 “실제로 쓰는 크기”가 다르면 몇 가지 불편함이 생깁니다. 예를 들어 합성 도구가 자동으로 최적화를 하면 사용하지 않는 64개는 버려주기도 하지만, 경우에 따라서는 버리지 못하고 그대로 회로 자원이 낭비될 수도 있습니다. FPGA 같은 데서는 64워드만 쓰면 2,048비트 메모리가 필요한데, 128로 선언해두면 4,096비트짜리 메모리 블록이 잡혀버려서 2배를 차지하는 경우도 생깁니다. 또, 시뮬레이션에서는 쓰이지 않는 공간이 초기화되지 않고 X(알 수 없는 값) 상태로 남아 있어서, 혹시 잘못된 주소로 접근하면 디버깅이 어려워질 수 있습니다.그래서 실제로는 선언 크기와 사용하는 크기를 일치시켜 주는 게 가장 깔끔합니다. 즉, 지금처럼 64개만 쓸 거라면 reg [31:0] mem [63:0]; 으로 줄이고, 혹시 128개를 쓰고 싶다면 주소를 7비트로 바꾸고 초기화도 128개 전체를 돌도록 수정하는 것이 좋습니다.정리하면, 현재 코드에서는 64개만 쓰니까 128로 선언한 건 사실상 의미가 없고, 그냥 크기를 줄여서 맞추는 게 더 안전하고 효율적입니다. 혹시 나중에 확장을 염두에 둔 거라면 그때 가서 주소폭을 넓히고 선언 크기를 늘리는 방식이 일반적으로 권장됩니다.
- 0
- 1
- 24