inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

I2C SCL_Synched, SDA_Synched 질문

미해결

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

안녕하세요 코드를 보다 의문점이 들어서 질문 드립니다. input으로 들어오는 SCL 을 그대로 사용하는게 아니라 3단 F/F을 통해 slave 쪽의 clk에 맞춰서 SCL_posedge, SCL_negedge를 사용함으로써 동기화를 하여 Slave의 메인 clk에 맞춰 데이터를 채갈 수 있도록 하는 것은 이해했습니다! 근데 SCL_posedge 및 SCL_negedge 의 경우 '안정화 된' [2:1] 세번째, 두번째 F/F의 결과를 보고 posedge 및 negedge를 출력하기에 SCL은 안정화 된 값을 가지는 것을 이해하엿으나 SDA_synched의 경우 [2:0] 총 3개의 F/F 에 대해 AND 를 취한 결과를 사용하고 있습니다. 이렇게 하게 되면 만약 최악의 경우 SCL_posedge가 '1'이 되었을때 data_in 에다가 SDA_synched의 값을 넣어야 하는데 SCL_posedge가 1이됨과 동시에 SDA_syncehd[2], SDA_syncehd[1] 이 모두 1이고 SDA_synched[0] 이 0에서 1로 바뀌는 중이라면 결국 data_in에 무엇을 저장해야 할 지 몰라서 meta stable 한 상태에 빠질것이라고 생각됩니다. 이를 방지하려면, wire SDA_synched = SDASynch[2] & SDASynch[1] 로 선언해서 사용해야 하는 것 아닌가요?? 감사합니다.

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
rnjstns0721 댓글 1 좋아요 0 조회수 121

8-interrupt 질문

미해결

Verilog ZYNQ Program 1 (Zynq mini 7020)

궁금한게 있습니다. 교안에서 axi_gpio0를 all Input으로 설정하고 GPIO Width를 1로 설정했습니다. 그리고 .xdc 역시 스위치 M20, 하나만 지정해서 입력을 넣구요. 그러면 6-4예제와 같이 k2버튼을 눌러서 로직이겠죠. 그런데 교안 156P를 보면 "K 1 버튼을 누르면 D0 가 Toggling 되고 K 2 버튼을 누르면 D1~D4 On, 떼면 O ff 됩니다 또한 터미널 창에 메시지가 나타납니다" 라고 되어있습니다. 어떻게 xdc와 system에서 입력 하나만을 설정했는데 K1버튼이 동작 로직에 추가되는거죠? vitis 소스코드 상에서는 IntGpioFlag가 k1버튼에 해당하는 로직 변수인거 같은데 이해가 안가서 질문드립니다.

  • verilog-hdl
  • fpga
  • vivado
  • zynq
anstjdqls55 댓글 2 좋아요 0 조회수 121

P127~129 교안내용

미해결

Verilog ZYNQ Program 1 (Zynq mini 7020)

6-4내용 교안에서 함수 IntcInitFunction, InterruptSystemSetup에 대해서 정의를 안해줘서 코드가 안돌아갑니다. 그리고 KeyIntrHandler 함수에서 if (keyVal == 0)으로 주면 버튼을 눌러야 off처리 되고 때면 on처리가 됩니다. 제 생각에는 if (keyVal)로 해야 교안 방향처럼 버튼을 누르면 on이 되고 떼면 off가 되는 로직이 되는거 같습니다. 맞나요? 총 코드는 아래와 같이 작성했습니다. 그러니까 잘 동작하네요:) #include <stdio.h> #include "platform.h" #include "xparameters.h" #include "xscugic.h" #include "xil_exception.h" #include "xgpio.h" #include <unistd.h> #define INTC_DEVICE_ID XPAR_PS7_SCUGIC_0_DEVICE_ID #define KEY_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID #define LED_DEVICE_ID XPAR_AXI_GPIO_1_DEVICE_ID #define INTC_GPIO_INTERRUPT_ID XPAR_FABRIC_AXI_GPIO_0_IP2INTC_IRPT_INTR #define KEY_INT_MASK XGPIO_IR_CH1_MASK XGpio LEDInst; XGpio KEYInst; XScuGic INTCInst; u32 KeyIntRisingFlag = 0; u32 KeyIntFallingFlag = 0; static void KeyIntrHandler(void * InstancePtr); static int IntcInitFunction(u16 DeviceId, XGpio * GpioInstancePtr); static int InterruptSystemSetup(XScuGic * XScuGicInstancePtr); int main() { init_platform(); int status; status = XGpio_Initialize(&KEYInst, KEY_DEVICE_ID); // initial KEY if(status != XST_SUCCESS) return XST_FAILURE; status = XGpio_Initialize(&LEDInst, LED_DEVICE_ID); // initial LED if(status != XST_SUCCESS)return XST_FAILURE; XGpio_SetDataDirection(&KEYInst, 1, 0xFF); XGpio_SetDataDirection(&LEDInst, 1, 0); // set LED IO direction as out XGpio_DiscreteWrite(&LEDInst, 1, 0x00);// at initial, all LED turn off printf(">>Press PL KEY1, and check the PL LED1 \n"); status = IntcInitFunction(INTC_DEVICE_ID, &KEYInst); if(status != XST_SUCCESS)return XST_FAILURE; while (1) { if (KeyIntFallingFlag == 1) { KeyIntFallingFlag = 0; printf(" - interrupt falling occur, led on \r\n"); XGpio_DiscreteWrite(&LEDInst, 1, 0xFF); } if (KeyIntRisingFlag == 1) { KeyIntRisingFlag = 0; printf(" - interrupt rising occur, led off \r\n"); XGpio_DiscreteWrite(&LEDInst, 1, 0); } } cleanup_platform(); return 0; } static void KeyIntrHandler(void * InstancePtr) { u8 keyVal; usleep(10000); // 0.1s sleep, to debounce, in common, the meta-state will sustain no more than 20ms keyVal = XGpio_DiscreteRead(&KEYInst, 1) & 0x0f; if (keyval) KeyIntFallingFlag = 1; else KeyIntRisingFlag = 1; XGpio_InterruptClear(&KEYInst, KEY_INT_MASK); XGpio_InterruptEnable(&KEYInst, KEY_INT_MASK); // Enable GPIO interrupts } static int IntcInitFunction(u16 DeviceId, XGpio * GpioInstancePtr) { XScuGic_Config * IntcConfig; int status; // Interrupt controller initialization IntcConfig = XScuGic_LookupConfig(DeviceId); status = XScuGic_CfgInitialize(&INTCInst, IntcConfig, IntcConfig->CpuBaseAddress); if(status != XST_SUCCESS)return XST_FAILURE; // Call interrupt setup function status = InterruptSystemSetup(&INTCInst); if(status != XST_SUCCESS) return XST_FAILURE; // Register GPIO interrupt handler status = XScuGic_Connect(&INTCInst, INTC_GPIO_INTERRUPT_ID, (Xil_ExceptionHandler)KeyIntrHandler, (void*)GpioInstancePtr); if(status != XST_SUCCESS)return XST_FAILURE; // Enable GPIO interrupts XGpio_InterruptEnable(GpioInstancePtr, 1); XGpio_InterruptGlobalEnable(GpioInstancePtr); // Enable GPIO interrupts in the controller XScuGic_Enable(&INTCInst, INTC_GPIO_INTERRUPT_ID); return XST_SUCCESS; } //---------------------------------------------------------------------------- // Interrupt system setup //---------------------------------------------------------------------------- static int InterruptSystemSetup(XScuGic * XScuGicInstancePtr) { // Register GIC interrupt handler Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler, XScuGicInstancePtr); Xil_ExceptionEnable(); return XST_SUCCESS; }

  • verilog-hdl
  • fpga
  • vivado
  • zynq
anstjdqls55 댓글 1 좋아요 0 조회수 106

mobaxterm 완전 삭제법

미해결

설계독학's Verilog 마스터 Season 1 (실전 코딩 테스트 문제로 완성하는 디지털 설계 엔지니어의 커리어 도약)

안녕하세요 🙂 [1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요. [2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂 [3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) mobaxterm을 지우고 다시 깔아도 제가 이전에 했던 세팅이 남아있어 다른 프로그램이 안 돌아가는 문제가 발생하는데, 아예 mobaxterm을 전체를 지우고 다시 깔았을 때, 제가 이전에 접속했던 서버 기록이 안 남게 하려면 어떻게 해야 하나요? 지금 local terminal도 접속이 안 되고, 계속 Mobaxterm X server:0.0이라는 black screen만 계속 뜹니다. 해결 방법 필요합니다.

  • verilog-hdl
  • system-verilog
venusdj1007 댓글 2 좋아요 1 조회수 343

미션 3 로그 결과 문의

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

안녕하세요 강의 수강 중 문의사항이 있어 문의드립니다. 미션3 진행 중 마지막 run을 통해 로그를 확인하였는데 [ENV] [GEN] [DRV] [MON] is started ... 가 아니라 [GEN]까지만 실행이 되고 종료 되는게 맞는지 궁금해서 문의드립니다. 저 pwrite도 is_write로 변경되어야 하는게 맞는지도 궁금합니다.

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
ipilot12345 댓글 2 좋아요 0 조회수 95

no data path질문

미해결

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

full_adder설계 테스트 벤치 설계, 시뮬레이션확인, sdc파일 입력 및 합성을하고 timing analyze를 확인해보는데 계속 no path라고 나옵니다.. 뭘 놓친건지 모르겠습니다. 강의 그대로했는데 뭐가 문제일까요 ㅠㅠ

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
지창훈 댓글 3 좋아요 0 조회수 144

SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.

해결됨

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

삼코치님 sram강의에서 waveform에서 inner 메모리를 보기위해서 modelsim에서 Memory List 부분에서 sram인스턴스 네임을 클릭하면 Objects 리스트에서 mem 시그널이 표시된다고 하셨는데 Memory List에서 클릭을 했는데 Objects 목록에서 mem 시그널이 안 뜨는데 어떻게 해야 하나요? 일단 저는 최신 quartus프로그램과 questa를 깔긴했는데 강의에서 처럼 quartus 20.1버전과 modelsim을 깔아서 다시 시뮬레이션을 돌려봐도 mem 시그널이 안보입니다.

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
전자취준맨 댓글 2 좋아요 0 조회수 145

영상이 이상합니다.

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

영상에서 자꾸 operate라고 소리가 나네요..

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
김민재 댓글 1 좋아요 0 조회수 105

메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.

해결됨

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[1. 질문 챕터] : HDL19장 4분 50초 [2. 질문 내용] : 같은 메모리 크기라도 Width와 Depth를 다를 수 있다고 해당 강의를 보고 이해 했습니다. 갑자기 든 궁금증은 다음과 같습니다. 가령 넓고 얕은 메모리와 좁고 깊은 메모리 중 어떤 것을 선택하느냐에 따라, FPGA 내부의 라우팅 복잡도나 타이밍 마진, 전력 소모에 어떤 실질적인 차이가 발생하는지 궁금합니다.

  • verilog-hdl
  • bram
카퓌바라 댓글 2 좋아요 1 조회수 127

sv에서 class에 대한 질문입니다.

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

이 부분에서 class는 tb의 하위블록처럼 취급이 되는 것인가요? 아니면 일반 C++의 클래스처럼 생각하면 되는 것인가요?

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
김민재 댓글 1 좋아요 1 조회수 90

'fork-join_none'으로 시작된 백그라운드 스레드의 종료는 어떻게 관리되나요?

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

Q. 'fork-join_none'으로 시작된 백그라운드 스레드의 종료는 어떻게 관리되나요? 부모 스레드가 자식의 완료를 기다리지 않는다면, 자식 스레드가 완료된 후 발생하는 '좀비(Zombie)' 상태 나 자원 누수(Resource Leakage) 문제는 어떻게 방지되거나 처리되나요?

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
조재용 댓글 1 좋아요 0 조회수 102

SystemVerilog 내 program 이 top module 의 역할을 하는건가요?

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

섹션 2 SystemVerilog Testbench 구조 살펴보기 중 program 개념 설명에 질문이 있어 질문 드립니다 그림에서는 DUT <-> interface <-> program 으로 구성이 되어 있는데 Verilog Testbench 구조와 비교를 해보게 된다면 program 의 역할은 Verilog 의 top module 의 역할이라고 볼 수 있을까요? 아니면, top module 이 DUT, interace, program 을 모두 감싸는 wrapper 역할을 하고, program 은 tb 안의 oop component 들을 감싸는 top hierarchy 역할을 하는건가요? 가끔 SystemVerilog 예제들을 보면 program 을 사용 않고 module 을 top hierarchy 로 쓰는 경우가 왕왕 있는데, program 사용시 TB 와 Design 사이의 상호작용에서 race condition 제거는 이제 실제 제조 과정(SDC?) 에서 야기될 수 있는 문제를 방지해주는건가요? 궁금한게 많네요ㅜㅜ 답변 감사합니다! 강의 잘 듣고 있습니다!

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
원숭이 알러지 바나나 댓글 2 좋아요 2 조회수 166

디스코드 멤버쉽 등업 관련 문제

해결됨

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[2. 질문 내용] : 강의를 구매한지 1주일이 지났으나 아직 멤버쉽 등업이안되었습니다. [3. 시도했던 내용, 그렇게 생각하는 이유] : 10월2일 경에 해당강의와 FPGA강의를 구매하고 form을 작성했으나 아직 등업이 되지 않았습니다.

  • verilog-hdl
  • fpga
  • 임베디드
카퓌바라 댓글 2 좋아요 1 조회수 104

active load differential amp 설계

해결됨

회로설계 입문자를 위한 디지털, 아날로그 설계와 실무 Project

삼코치님 따라서 설계를 했는데 값이 이상하게 나왔습니다. 삼코치님께서 약 500mv정도 나왔는데 저는 이상하게 900v정도 나옵니다

  • verilog-hdl
  • fpga
  • circuit
  • amp
손광준 댓글 2 좋아요 0 조회수 97

DataMem 스펙 질문

해결됨

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

안녕하세요 학습 중에 코드를 보고 궁금증이 생겨 질문 드립니다. DataMem spec을 보면 mem 이 4byte짜리로 총 128개로 구성되어 있는데, always 문을 보면 mem[0] ~ mem[63] 까지의 공간을 사용하는 것으로 보입니다. 나머지 mem[64] ~ mem[127] 까지는 사용이 안되는거 같은데, 그러면 굳이 reg [31:0] mem [127:0] 으로 선언한 이유가 있을까요?? 뭔가 제가 파악하지 못한 의도가 있는것인지 궁금하여 질문드립니다!! 감사합니다.

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
rnjstns0721 댓글 1 좋아요 0 조회수 83

강의문의

해결됨

Basic SystemVerilog Testbench ( 회로설계 검증 )

강의 정말 잘 수강중에 있습니다~ UVM강의는 언제쯤 나올까요 기대됩니다! 그리고 추후 basic과정 말고도 중급, 고급 과정도 나올까요?

  • verilog-hdl
  • system-verilog
  • verification
  • system-verilog-dpi
모란 댓글 1 좋아요 1 조회수 125

Hamming Code 질문

해결됨

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

encoder의 경우, output이 [1:21]로 서술되어 있습니다. 근데 tb를 보면 output인 encoded_message가 [21:1] 로 선언되었는데, 이렇게 선언하게 되면 encoded_message 에 들어오는 값은 B[21:1] 로 매칭되서 들어오게 되는건가요? 아니면 tb 코드에서 [21:1]로 잘못 선언한 것인지 궁금합니다! 감사합니다.

  • 컴퓨터-구조
  • verilog-hdl
  • fpga
  • 임베디드
  • amba
rnjstns0721 댓글 1 좋아요 0 조회수 100

Zybo z7에서 실습을 진행할 수 있나요?

미해결

Verilog ZYNQ Program 1 (Zynq mini 7020)

만약 할 수 없다면 돌아가게 하려면 어떤 작업을 해야하나요?

  • verilog-hdl
  • fpga
  • vivado
  • zynq
이동현 댓글 2 좋아요 0 조회수 138

155ns 타이밍 이슈에 관한 궁금증(?)

미해결

설계독학's Verilog 마스터 Season 1 (실전 코딩 테스트 문제로 완성하는 디지털 설계 엔지니어의 커리어 도약)

안녕하세요 🙂 [1. 질문 챕터] : testbench 작성 - answer.txt 155ns~156ns 부분 [2. 질문 내용] : 155ns 부분에 원래 13이 찍혀야 하는 거 아닌가요?! 근데 시간은 1ns delay되어서 156ns로 찍혀있고 출력은 14(1110)으로 나와있는게 왜 그런지 궁금합니다. [3. 시도했던 내용, 그렇게 생각하는 이유] : 155시점에서 expected_count가 13일 때, if 조건문이 먼저 걸려서 #1 force에 걸려있는 지연 때문에 뒤에 있는 task 호출이 밀렸나? 생각이 들어서 task 호출을 if 조건보다 앞에 작성하고 다시 build를 돌려도 실행 결과는 #1 지연된 14가 출력되었습니다,,

  • verilog-hdl
  • system-verilog
어진 댓글 2 좋아요 1 조회수 112

build 오류

미해결

설계독학's Verilog 마스터 Season 1 (실전 코딩 테스트 문제로 완성하는 디지털 설계 엔지니어의 커리어 도약)

안녕하세요 🙂 [1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요. [2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂 [3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) ./build를 실행했는데 계속 아래와 같은 오류가 뜹니다.. start_gui Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using '10.255.255.254:0' as the value of the DISPLAY variable. at java.desktop/sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at java.desktop/sun.awt.X11GraphicsEnvironment$ 1.run (X11GraphicsEnvironment.java:105) at java.base/ java.security .AccessController.doPrivileged(AccessController.java:319) at java.desktop/sun.awt.X11GraphicsEnvironment.initStatic(X11GraphicsEnvironment.java:64) at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:59) at java.desktop/sun.awt.PlatformGraphicsInfo.createGE(PlatformGraphicsInfo.java:37) at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:93) at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:84) at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:106) at java.desktop/sun.awt.X11.XToolkit.<clinit>(XToolkit.java:225) at java.desktop/sun.awt.PlatformGraphicsInfo.createToolkit(PlatformGraphicsInfo.java:41) at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:595) at java.desktop/sun.swing.SwingUtilities2.getSystemMnemonicKeyMask(SwingUtilities2.java:2198) at java.desktop/javax.swing.plaf.basic.BasicLookAndFeel.initComponentDefaults(BasicLookAndFeel.java:1108) at java.desktop/javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:444) at java.desktop/javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:161) at java.desktop/javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1564) at java.desktop/javax.swing.UIManager.setLookAndFeel(UIManager.java:591) at java.desktop/javax.swing.UIManager.setLookAndFeel(UIManager.java:633) at java.desktop/javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1408) at java.desktop/javax.swing.UIManager.initialize(UIManager.java:1521) at java.desktop/javax.swing.UIManager.maybeInitialize(UIManager.java:1487) at java.desktop/javax.swing.UIManager.getDefaults(UIManager.java:713) at java.desktop/javax.swing.UIManager.put(UIManager.java:1042) at ui.PlanAhead.<clinit>(SourceFile:183) ERROR: [Common 17-70] Application Exception: JVM: Can't find class: ui/PlanAhead ERROR: [Common 17-211] Error loading jvm. source xsim.dir/tb_simple_bram_ctrl/xsim_script.tcl # set_param project.enableReportConfiguration 0 # load_feature core # current_fileset ERROR: [Project 1-848] Could not get a valid part for the project. Make sure you have the required part installed, use the get_parts command to see the list of valid parts.

  • verilog-hdl
  • system-verilog
venusdj1007 댓글 2 좋아요 1 조회수 135

인기 태그

인프런 TOP Writers

주간 인기글