← Documents Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Xilinx XADC and System Monitor

Series 7 XADC와 UltraScale System Monitor의 DRP/AXI 바인딩입니다.

Source pathDocumentation/devicetree/bindings/iio/adc/xilinx-xadc.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

xilinx-xadc.txt:1-141

세 frontend와 external mux channel 구성을 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Xilinx XADC device driver
2
3 This binding document describes the bindings for the Xilinx 7 Series XADC as well
4 as the UltraScale/UltraScale+ System Monitor.
5
6 The Xilinx XADC is an ADC that can be found in the Series 7 FPGAs from Xilinx.
7 The XADC has a DRP interface for communication. Currently two different
8 frontends for the DRP interface exist. One that is only available on the ZYNQ
9 family as a hardmacro in the SoC portion of the ZYNQ. The other one is available
10 on all series 7 platforms and is a softmacro with a AXI interface. This binding
11 document describes the bindings for both of them since the bindings are very
12 similar.
13
14 The Xilinx System Monitor is an ADC that is found in the UltraScale and
15 UltraScale+ FPGAs from Xilinx. The System Monitor provides a DRP interface for
16 communication. Xilinx provides a standard IP core that can be used to access the
17 System Monitor through an AXI interface in the FPGA fabric. This IP core is
18 called the Xilinx System Management Wizard. This document describes the bindings
19 for this IP.
20
21 Required properties:
22 - compatible: Should be one of
23 * "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device
24 configuration interface to interface to the XADC hardmacro.
25 * "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to
26 interface to the XADC hardmacro.
27 * "xlnx,system-management-wiz-1.3": When using the
28 Xilinx System Management Wizard fabric IP core to access the
29 UltraScale and UltraScale+ System Monitor.
30 - reg: Address and length of the register set for the device
31 - interrupts: Interrupt for the XADC control interface.
32 - clocks: When using the ZYNQ this must be the ZYNQ PCAP clock,
33 when using the axi-xadc or the axi-system-management-wizard this must be
34 the clock that provides the clock to the AXI bus interface of the core.
35
36 Optional properties:
37 - xlnx,external-mux:
38 * "none": No external multiplexer is used, this is the default
39 if the property is omitted.
40 * "single": External multiplexer mode is used with one
41 multiplexer.
42 * "dual": External multiplexer mode is used with two
43 multiplexers for simultaneous sampling.
44 - xlnx,external-mux-channel: Configures which pair of pins is used to
45 sample data in external mux mode.
46 Valid values for single external multiplexer mode are:
47 0: VP/VN
48 1: VAUXP[0]/VAUXN[0]
49 2: VAUXP[1]/VAUXN[1]
50 ...
51 16: VAUXP[15]/VAUXN[15]
52 Valid values for dual external multiplexer mode are:
53 1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8]
54 2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9]
55 ...
56 8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15]
57
58 This property needs to be present if the device is configured for
59 external multiplexer mode (either single or dual). If the device is
60 not using external multiplexer mode the property is ignored.
61 - xnlx,channels: List of external channels that are connected to the ADC
62 Required properties:
63 * #address-cells: Should be 1.
64 * #size-cells: Should be 0.
65
66 The child nodes of this node represent the external channels which are
67 connected to the ADC. If the property is no present no external
68 channels will be assumed to be connected.
69
70 Each child node represents one channel and has the following
71 properties:
72 Required properties:
73 * reg: Pair of pins the channel is connected to.
74 0: VP/VN
75 1: VAUXP[0]/VAUXN[0]
76 2: VAUXP[1]/VAUXN[1]
77 ...
78 16: VAUXP[15]/VAUXN[15]
79 Note each channel number should only be used at most
80 once.
81 Optional properties:
82 * xlnx,bipolar: If set the channel is used in bipolar
83 mode.
84
85
86 Examples:
87 xadc@f8007100 {
88 compatible = "xlnx,zynq-xadc-1.00.a";
89 reg = <0xf8007100 0x20>;
90 interrupts = <0 7 4>;
91 interrupt-parent = <&gic>;
92 clocks = <&pcap_clk>;
93
94 xlnx,channels {
95 #address-cells = <1>;
96 #size-cells = <0>;
97 channel@0 {
98 reg = <0>;
99 };
100 channel@1 {
101 reg = <1>;
102 };
103 channel@8 {
104 reg = <8>;
105 };
106 };
107 };
108
109 xadc@43200000 {
110 compatible = "xlnx,axi-xadc-1.00.a";
111 reg = <0x43200000 0x1000>;
112 interrupts = <0 53 4>;
113 interrupt-parent = <&gic>;
114 clocks = <&fpga1_clk>;
115
116 xlnx,channels {
117 #address-cells = <1>;
118 #size-cells = <0>;
119 channel@0 {
120 reg = <0>;
121 xlnx,bipolar;
122 };
123 };
124 };
125
126 adc@80000000 {
127 compatible = "xlnx,system-management-wiz-1.3";
128 reg = <0x80000000 0x1000>;
129 interrupts = <0 81 4>;
130 interrupt-parent = <&gic>;
131 clocks = <&fpga1_clk>;
132
133 xlnx,channels {
134 #address-cells = <1>;
135 #size-cells = <0>;
136 channel@0 {
137 reg = <0>;
138 xlnx,bipolar;
139 };
140 };
141 };
142

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

XADC/System Monitor frontend와 필수 속성

1-35

이 문서는 Xilinx 7 Series XADC와 UltraScale/UltraScale+ System Monitor의 binding을 설명합니다. XADC는 Xilinx Series 7 FPGA에 있는 ADC이며 통신에 DRP interface를 사용합니다. DRP frontend는 두 종류입니다. 하나는 ZYNQ family의 SoC 부분에 hard macro로만 제공되고, 다른 하나는 모든 Series 7 platform에서 쓸 수 있는 AXI interface soft macro입니다. Binding이 매우 비슷하므로 둘을 함께 다룹니다.

Xilinx System Monitor는 UltraScale와 UltraScale+ FPGA에 있는 ADC로 역시 DRP interface를 제공합니다. FPGA fabric의 AXI interface로 System Monitor에 접근하는 표준 IP core가 Xilinx System Management Wizard이며, 이 문서는 그 IP의 binding도 설명합니다.

필수 `compatible`은 ZYNQ device configuration interface로 XADC hard macro에 접근할 때 `xlnx,zynq-xadc-1.00.a`, AXI-XADC pcore로 hard macro에 접근할 때 `xlnx,axi-xadc-1.00.a`, System Management Wizard fabric IP로 UltraScale/UltraScale+ System Monitor에 접근할 때 `xlnx,system-management-wiz-1.3`입니다.

`reg`는 device register set의 address와 length, `interrupts`는 XADC control interface interrupt입니다. ZYNQ에서는 `clocks`가 ZYNQ PCAP clock이어야 하고, AXI-XADC 또는 AXI System Management Wizard에서는 core의 AXI bus interface에 공급되는 clock이어야 합니다.

Xilinx ADC access frontends
ZYNQ configurationXADC hard macro + PCAP clock
Series 7 AXI-XADCXADC hard macro + AXI clock
UltraScale WizardSystem Monitor + AXI clock
DRP interfaceADC conversion channels

FPGA family와 DRP access 방식에 따라 compatible 및 clock source가 달라집니다.

External mux와 channel node

36-85

선택 `xlnx,external-mux`의 `none`은 external multiplexer를 사용하지 않으며 property 생략 시 기본값입니다. `single`은 multiplexer 하나, `dual`은 동시 sampling을 위한 multiplexer 두 개를 사용합니다.

`xlnx,external-mux-channel`은 external mux mode에서 sampling할 pin pair를 고릅니다. Single mode에서 값 0은 VP/VN, 1~16은 각각 VAUXP[0]/VAUXN[0]부터 VAUXP[15]/VAUXN[15]까지입니다. Dual mode에서 값 1~8은 각각 VAUX pair 0과 8부터 pair 7과 15까지를 동시에 묶습니다. 이 property는 single 또는 dual external mux mode에서 필수이며 mux를 쓰지 않으면 무시됩니다.

원문에 적힌 `xnlx,channels`는 ADC에 연결된 external channel 목록입니다. 이 node의 `#address-cells`는 1, `#size-cells`는 0이어야 합니다. Child node 하나가 external channel 하나를 나타내며 이 property가 없으면 연결된 external channel이 없는 것으로 봅니다.

각 channel child의 필수 `reg`는 연결 pin pair입니다. 0은 VP/VN, 1~16은 VAUXP[0]/VAUXN[0]부터 VAUXP[15]/VAUXN[15]까지이며 channel number는 최대 한 번만 사용해야 합니다. 선택 `xlnx,bipolar`를 설정하면 해당 channel을 bipolar mode로 사용합니다.

External mux channel numbering
ModeValuePin pair
Single0VP/VN
Single1..16VAUX[0]..VAUX[15]
Dual1..8VAUX[0]/[8] .. VAUX[7]/[15]
Channel child0..16각 number는 한 번만 사용

Single 및 dual mux mode의 channel 값과 pin pair를 정리합니다.

ZYNQ, AXI-XADC와 Wizard 예제

86-141

첫 예제는 ZYNQ XADC hard macro를 `0xf8007100`의 0x20-byte register, GIC interrupt 7과 PCAP clock으로 사용하며 external channel 0, 1, 8을 선언합니다. 둘째는 `0x43200000`의 AXI-XADC, interrupt 53과 FPGA1 clock을 사용하고 channel 0을 bipolar mode로 둡니다. 셋째는 `0x80000000`의 System Management Wizard, interrupt 81과 FPGA1 clock을 사용하며 역시 channel 0을 bipolar로 둡니다.

xadc@f8007100 {
        compatible = "xlnx,zynq-xadc-1.00.a";
        reg = <0xf8007100 0x20>;
        interrupts = <0 7 4>;
        interrupt-parent = <&gic>;
        clocks = <&pcap_clk>;

        xlnx,channels {
                #address-cells = <1>;
                #size-cells = <0>;
                channel@0 {
                        reg = <0>;
                };
                channel@1 {
                        reg = <1>;
                };
                channel@8 {
                        reg = <8>;
                };
        };
};

xadc@43200000 {
        compatible = "xlnx,axi-xadc-1.00.a";
        reg = <0x43200000 0x1000>;
        interrupts = <0 53 4>;
        interrupt-parent = <&gic>;
        clocks = <&fpga1_clk>;

        xlnx,channels {
                #address-cells = <1>;
                #size-cells = <0>;
                channel@0 {
                        reg = <0>;
                        xlnx,bipolar;
                };
        };
};

adc@80000000 {
        compatible = "xlnx,system-management-wiz-1.3";
        reg = <0x80000000 0x1000>;
        interrupts = <0 81 4>;
        interrupt-parent = <&gic>;
        clocks = <&fpga1_clk>;

        xlnx,channels {
                #address-cells = <1>;
                #size-cells = <0>;
                channel@0 {
                        reg = <0>;
                        xlnx,bipolar;
                };
        };
};