본문 바로가기

VERILOG

(20)
Setup time, Hold Time, Violation, Slack ⏰ Setup Time과 Hold Time: 디지털 회로 동작의 기본 원리디지털 회로에서 Flip-Flop은 클럭 신호에 맞춰 데이터를 저장하는 중요한 역할을 합니다. 이때 Flip-Flop이 안정적으로 데이터를 캡처하기 위해서는 입력 데이터가 특정 시간 동안 유지되어야 하는데, 이 시간을 각각 Setup Time과 Hold Time이라고 합니다.Setup Time (셋업 시간): 클럭 신호의 활성화 엣지 이전에 입력 데이터가 안정적으로 유지되어야 하는 최소 시간입니다. 마치 사진을 찍기 전에 카메라를 안정시키는 시간과 비슷하다고 생각하시면 됩니다.Hold Time (홀드 시간): 클럭 신호의 활성화 엣지 이후에 입력 데이터가 안정적으로 유지되어야 하는 최소 시간입니다. 사진을 찍고 나서 카메라가 흔들리..
Smart ZYNQ보드 PS 측의 EMIO 확장 이더넷(ethernet) 네트워크 포트 기능 구현 엔지니어링 17G 네트워크 모듈 예비 테스트(PS EMIO 기준)  Smart ZYNQ보드(XC7Z020CLG484-1)  ZYNQ 네트워크 기능은 4가지 방식으로 구현 가능하나의 PS 측 MIO 기능으로 이더넷 포트를 직접 확장두 번째 PS 끝은 EMIO를 통해 이더넷 포트를 PL 포트에 매핑합니다.3개의 PL 포트의 하드웨어 이더넷 기능은 AXI를 통해 PS 측에서 호출됩니다.4개의 PL 터미널은 로직을 사용하여 이더넷 기능을 실행합니다(PS 터미널 참여가 필요하지 않음)여기서 네트워크 포트가 PL 측에 연결되어 있기 때문에 이론적으로 2, 3, 4를 구현할 수 있습니다. 두 번째와 세 번째 방법은 실제로 세 번째 방법이 더 많은 논리적 리소스를 차지한다는 점을 제외하고는 유사한 효과가 있습니다. F..
Serial통신, Uart, RS232, RS422, RS485, I2C, SPI, TCP, UDP 통신 방식에 대한 정리 Serial통신, Uart, RS232, RS422, RS485, I2C, SPI, TCP, UDP 통신에 대해서 정리해보겠습니다. 우선 Serial(직렬)인터페이스과 Parallel(병렬)인터페이스의 차이점 부터 알아보겠습니다. 그림과 같이 병렬 인터페이스는 각 선당 1비트 씩 8비트를 보낼 때 8개의 선을 사용하여 한번에 데이터를 보내주기 때문에 전송속도가 빠르다는 장점이 있습니다. 직렬 인터페이스는 한 선에 8비트를 보냄으로 전송시간이 길다는 단점이 있습니다. 그리고 병렬 통신은 보통 CPU, HDD, FDD와 VIDEO 카드에 주로 사용을 하며 전송속도는 빠르지만 채널 간 간섭이 존재하고 근거리에 적합합니다. 직렬 통신은 구현이 쉽고 멀리 전송이 가능하고 기존의 통신선로(전화선)를 쉽게 활용할 수..
Rotary Encoder(RSI 503) 및 MAX33076E(수신기) VERILOG 동작 ENCODER는 전기모터나 엔진의 회전각도 또는 회전속도를 측정할 때 사용되는 대표적인 센서입니다.  회전할 때 마다 펄스가 발생합니다. 즉, 펄스 수를 셈으로써 축의 각도를 검출할 수 있습니다. 앱솔루트식 로터리 인코더는 몇 가닥의 신호선에 의하여 축의 절대위치를 검출할 수 있습니다.  RSI503 엔코더를 동작하여 VIVADO를 통해 회전하는 펄스마다 카운트를 세어주는 테스트를 해보려고 합니다. ENCODER의 동작을 이해해보겠습니다.  RSI503은 1024PPR(Perse per revolution)"1ppr"은 "1 pulse per revolution"의 약자입니다. 이는 회전하는 기계 또는 장치에서 한 회전당 발생하는 펄스의 수를 나타냅니다."4체배"..
DMA(Direct Memory Access) Loop test DMA의 루프테스트 란 테스트를 통해 DMA가 메모리 간 데이터 전송을 올바르게 수행하는지, 루프 전송이 효율적으로 이루어지는지 등을 확인할 수 있습니다. 이는 DMA가 많은 데이터를 빠르게 전송하는 시스템에서 중요한 기능이므로 효과적인 동작을 보장하기 위해 수행됩니다. DMA 모듈은세 종류의 버스. "AXI4-Lite"는 레지스터를 구성하는 데 사용됩니다. "AXI4 메모리 맵"은 메모리와 상호 작용하는 데 사용됩니다.  "AXI4 메모리 맵 읽기" 및 "AXI4 메모리 맵" 쓰기'는 별도로 분리되어 있는데, 이를 "M_AXI_MM2S"와 "M_AXI_S2MM"이라고 합니다. "AXI4 Stream" 인터페이스는 주변기기를 읽고 쓰는 데 사용됩니다. "AXI4 스트림 마스터" (MM2S)"는 주변 장치..
Hook script file 에러 시 해결 방법 set_property BITSTREAM.GENERAL.UNCONSTRAINEDPINS Allow [current_design] set_property SEVERITY {Warning} [get_drc_checks UCIO-1] set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
ZCU102-G + AD7606C18 Simultaneous Sampling ADC 8ch 18Bit -4 parallel 마지막 글입니다. 이번 글에서는 ad7606_test top모듈을 만들어보고 디버깅을 해보겠습니다 `timescale 1ns/1ps ////////////////////////////////////////////////////////////////////////////////// // Module Name: ad706_test ////////////////////////////////////////////////////////////////////////////////// module ad7606_test( input CLK_74_25_P, input CLK_74_25_N, // 50MHz 클럭 input rst_n, // 리셋 신호 input [15:0] ad_data, // ad7606 데이터 입력 ..
ZCU102-G + AD7606C18 Simultaneous Sampling ADC 8ch 18Bit -3 parallel ADC데이터를 받아 UART 전송하기 위한 모듈입니다. `timescale 1ns / 1ps // 시뮬레이션 스케일 설정 //이 모듈은 ADC 데이터와 채널 정보를 UART 전송 가능한 ASCII 문자로 변환하는 역할을 합니다. //uart_ad는 UART를 통해 전송할 ASCII 문자를 저장하는 배열입니다. //모듈은 UART 전송 프로세스를 제어하기 위한 상태 머신(uart_stat 및 uart_cnt)을 사용합니다. //각 채널에 대한 ASCII 문자는 uart_ad에 저장되며, 모듈은 UART 인터페이스를 통해 이 문자들을 하나씩 전송합니다. //모듈에는 UART 전송을 제어하기 위한 일정한 대기 기간이 있습니다. module uart( input clk50, // 50MHz 클럭 입력 input..