본문 바로가기

VERILOG

(20)
Setup time, Hold Time, Violation, Slack Setup Time & Hold TimeSetup time은 Flip Flop이 정상적으로 데이터를 캡처하기 위해 clock edge 이전에 input data value가 유지되어야 하는 시간이고,Hold time은 Flip Flop이 정상적으로 데이터를 캡처하기 위해 clock edge 이후로 input data value가 유지되어야 하는 시간이다.  위 파형을 기준으로 Data가 FF의 input이고, posedge 방식의 FF라고 가정하자.그러면 위 파형에서 clock이 0->1 이 되는 순간 Data를 캡처하여 output으로 내보내게 된다.이때 "Setup Violation" 케이스와 같이 clock edge를 기준으로 setup 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 스트림 마스터" (MM2..
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..