
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо SoC ARM + FPGA Xilinx Zynq 7000 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпреВрдирд┐рдЯ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдб рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред рдмреЛрд░реНрдбреЛрдВ рдХреЛ рдПрдирд╛рд▓реЙрдЧ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ PRI / BRI рдкреНрд░рд╛рд░реВрдк (ISDN, E1 / T1) рдореЗрдВ рднрд╛рд╖рдг рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдВрддрд┐рдо рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╛рдЧрд░рд┐рдХ рдЙрдбреНрдбрдпрди рдореЗрдВ рдмрд╛рддрдЪреАрдд рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдпрд░рди: рдбрд┐рд╡рд╛рдЗрд╕ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪрдпрди
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рд╡рд┐рдХрд▓реНрдк PRI / BRI рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ FPGA рдкрдХреНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ (рдПрдорд╕реАрдпреВ) рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ (рдПрдордкреАрдпреВ) рдлрд┐рдЯ рдирд╣реАрдВ рдереЗред
рдХреЛрдИ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рджреЛ рд╕рдорд╛рдзрд╛рди рдЪреБрди рд╕рдХрддрд╛ рд╣реИ:
- рдорд╛рдЗрдХреНрд░реЛрдмреНрд▓реЗрдЬрд╝ рдЖрдИрдкреА рдХреЛрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдг
- SoC Zynq-7000ред
рд╣рдо Zynq 7000 рдЪрд┐рдк (SoC) рдкрд░ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХреБрд▓ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рддрд╣рдд рд▓реЛрд╣реЗ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА:
1.Xilinx Zynq 7020 (
рдорд╛рд░реНрд╕-рдЬреЗрдбрдПрдХреНрд╕ 3 рдФрд░
рдорд╛рд░реНрд╕ рдИрдмреА 1 )
рдПрдВрдХреНрд▓рд╕реНрдЯреНрд░рд╛ рдорд╛рд░реНрд╕ рдЬреЗрдбрдПрдХреНрд╕ 3 рдПрд╕рдУрдПрдо
рдПрдВрдХреНрд▓рд╕реНрдЯреНрд░рд╛ рдорд╛рд░реНрд╕ EB1 рдмреЗрд╕рдмреЛрд░реНрдб2. TI TLV320AIC34 (
tlv320aic34evm-k рдФрд░ USB рдорджрд░рдмреЛрд░реНрдб)ред
Tlv320aic34 рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рдмреЛрд░реНрдб (tlv320aic34evm-k)
Tlv320aic34evm-k рдХреЗ рд▓рд┐рдП USB-MODEVM рд╡рд┐рд╕реНрддрд╛рд░ рдмреЛрд░реНрдб3. IDT82P2288 - PRI, XHFC-4SU - BRI microcircuits, рдХреЛрдИ рдбреАрдмрдЧрд┐рдВрдЧ рдХрд┐рдЯ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдкреА рдХреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдиреАрдВрд╡ рд░рдЦреА, рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдЧ рдХреА рдмрдкрддрд┐рд╕реНрдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд╣реА рд╣реБрдЖред
Xilinx Zynq 7000 рдЪрд┐рдк рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
SoC Xilinx Zynq 7000 рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛
Xilinx Zynq рдХреЗ рд▓рд┐рдП рдмреВрдЯ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдоZynq рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрд╢рд┐рдВрдЧ / рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрди рдПрдордкреАрдпреВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдбрд╛рдЙрдирд▓реЛрдб рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдпреВ-рдмреВрдЯ, рдХрд░реНрдиреЗрд▓ рд▓рд╛рдЗрдирдХреНрд╕, рд░реВрдЯрдлрд╝реНрд╕ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ Zynq рдкрд░, рдмрд┐рдЯрд╕реНрдЯреНрд░реАрдо рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, FPGAs рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ред рдмрд┐рдЯрд╕реНрдЯреНрд░реАрдо рдореЗрдВ FPGA рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмреНрд▓реЙрдХ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рднрд░реА рд╣реБрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓рд┐рдирдХреНрд╕ рдХреА рдУрд░ рдПрдХ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреАрдПрд▓ рднрд╛рдЧ рдХреЛ рддреБрд░рдВрдд рдлреНрд▓реИрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ 2018.1 рдХреЗ
рдмрд╛рдж рд╕реЗ xdevcfg (
ZYNQ FPGA рдкреНрд░рдмрдВрдзрдХ ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
PRI / BRI рдЗрдВрдЯрд░рдлреЗрд╕
рдбрд┐рдЬрд┐рдЯрд▓ рдиреЗрдЯрд╡рд░реНрдХ PRI / BRI рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВрдкреНрд░рд╛рдердорд┐рдХ рджрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (PRI) рдПрдХ рдорд╛рдирдХ ISDN рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ ISDN рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреЛ рдмреНрд░реЙрдбрдмреИрдВрдб рдЯреНрд░рдВрдХ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрд╢рд╛рд╕рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдФрд░ рдХреЗрдВрджреНрд░реАрдп рдПрдХреНрд╕рдЪреЗрдВрдЬреЛрдВ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдкреАрдЖрд░рдЖрдИ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд╖рд┐рдд рдлреНрд░реЗрдо рдХрд╛ рдкреНрд░рдХрд╛рд░
BRI рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд░рд┐рдд рдлреНрд░реЗрдо рдХрд╛ рджреГрд╢реНрдп
PRI рднреМрддрд┐рдХреА рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ - IDT82P2288
BRI рднреМрддрд┐рдХреА рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ - XHFC-4SUрдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ TLV320AIC34
рдкреЛрд░реНрдЯреЗрдмрд▓ рдСрдбрд┐рдпреЛ рдФрд░ рдЯреЗрд▓реАрдлреЛрдиреА рдХреЗ рд▓рд┐рдП рдЪрд╛рд░-рдЪреИрдирд▓ рд▓реЛ-рдкрд╛рд╡рд░
TLV320AIC34 рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рдПрдирд╛рд▓реЙрдЧ рдЯреЗрд▓реАрдлреЛрдиреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
Tlv320aic34 A-part, рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рдореЗрдВ рджреЛ рдРрд╕реЗ рдлрдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рд╣реЛрддреЗ рд╣реИрдВрдбреЗрдЯрд╛ рдХреЛ I2S рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рд╕рд╛рде рд╣реА рдбреАрдПрд╕рдкреА, рдкреАрд╕реАрдПрдо, рдЯреАрдбреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
I2S рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдмрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рдирдХ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдЬрд┐рдЯрд▓ рдСрдбрд┐рдпреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рджреНрдпреБрдд рд░реВрдк рд╕реЗ 3 рдХрдВрдбрдХреНрдЯрд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдХреНрд░рд┐рдп рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдПрдХ рддрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА 4 рд╕рд┐рдЧреНрдирд▓ рдЬреЛ рдЙрдирдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ:
- рдмрд┐рдЯ рдХреНрд▓реЙрдХ (BCLK)ред
- рдШрдбрд╝реА рд╕рдВрдХреЗрдд рдлреНрд░реЗрдо (рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рддреБрд▓реНрдпрдХрд╛рд▓рди (WCLK)ред
- рдбреЗрдЯрд╛ рд╕рд┐рдЧреНрдирд▓ рдЬреЛ 2 рдЯрд╛рдЗрдо-рд╡рд┐рднрд╛рдЬрд┐рдд рдЪреИрдирд▓ (рдбреАрдЖрдИрдПрди / рдбреАрдУрдпреВрдЯреА) рдкреНрд░рд╕рд╛рд░рд┐рдд рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЪреИрдирд▓ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рд╡рд░реНрд╕ рднреА рд╕рдВрднрд╡ рд╣реИред
I2S рдлреНрд░реЗрдо, I2S рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВрд╕рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рдФрд░ Xilinx Zynq 7020 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред
I2S рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
Xilinx Zynq 7020 рдореЗрдВ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдХрдард┐рди рдХреНрд╖рдг рдпрд╣ рдерд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рднрд╛рдЧ рдкрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд┐рдк рдкрд░ I2S рдмрд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ I2S рдХреЛрд░ рдвреВрдВрдврдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдХрд╛рд░реНрдп рдЗрд╕ рд╢рд░реНрдд рд╕реЗ рдЬрдЯрд┐рд▓ рдерд╛ рдХрд┐ рдЖрдИрдкреА рдХреЛрд░ рдореБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдХрдИ рдЖрдИрдкреА рдХреЛрд░ рдкрд░ рдмрд╕ рдЧрдПред рдирдВрдЧреЗ рдзрд╛рддреБ рдХреЛрд░ I2S
Digilent рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ред рд╣рдореЗрдВ
opencores рдкрд░ рдХрдИ рдЖрдИрдкреА рдХреЛрд░ рдорд┐рд▓реЗ рдФрд░, рд╢рд╛рдпрдж, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк
рдПрдирд╛рд▓реЙрдЧ рдбрд┐рд╡рд╛рдЗрд╕реЗрд╕ рдЖрдИрдкреА тАЛтАЛрдХреЛрд░ рд╣реИред рд╡реЗ рдЕрдкрдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП FPGA / FPGA рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП ip-cores рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо
AXI-I2S-ADI рдирд╛рдордХ рдЖрдИрдкреА-рдХреЛрд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
ред рдПрдирд╛рд▓реЙрдЧ рдбрд┐рд╡рд╛рдЗрд╕реЗрдЬ рдЦреБрдж рдЕрдкрдиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЗрди рдЖрдИрдкреА рдХреЛрд░ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреА рдХреБрд▓ рд╕реВрдЪреА:
- рдирдВрдЧреЗ рдзрд╛рддреБ - I2S рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдХреЛрд░ (рдбрд┐рдЬреАрд▓реЗрдВрдЯ ZYBO рдСрдбрд┐рдпреЛ)
- opencores.org
- AXI-I2S-ADI рдирд┐рдпрдВрддреНрд░рдХ (рдПрдирд╛рд▓реЙрдЧ рдбрд┐рд╡рд╛рдЗрд╕)
AXI-I2S-ADI IP рдХреЛрд░
рдЖрдИрдкреА тАЛтАЛрдХреЛрд░ рдЦреБрдж рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдЗрд╕рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ bclk, wclk, din, doutред рдпрд╣ DMA Xilinx Zynq 7000 рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, DMA PS рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдбреАрдПрдордП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред DMA рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЗрдХрд╛рдИ рдпрд╛ PS SoC рдХрд╛ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ mlk рдорд╛рд╕реНрдЯрд░ рдЖрд╡реГрддреНрддрд┐ рдХреЛ tlv320aic34 рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, tlv320aic34 рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд┐рдВрдЧ рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ - рдПрдХ рдмрд╛рд╣рд░реА рдорд╛рд╕реНрдЯрд░ рдЖрд╡реГрддреНрддрд┐ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
рдХрдиреЗрдХреНрдЯреЗрдб рдРрдХреНрд╕реА-рдЖрдИ 2 рдПрд╕-рдПрдбреА рдХреЗ рд╕рд╛рде рдлрдВрдХреНрд╢рди рдмреНрд▓реЙрдХрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рд▓рд┐рдирдХреНрд╕ рдУрдПрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдерд╛ред
Tlv320aic34 рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА рд▓реЙрдиреНрдЪ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
I2c рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ (tlv320aic34 рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
i2c0: i2c@e0004000 { ... tlv320aic3x: tlv320aic3x@18 { #sound-dai-cells = <0>; compatible = "ti,tlv320aic3x"; reg = <0x18>; gpio-reset = <&axi_gpio_0 0 0>; ai3x-gpio-func = <&axi_gpio_0 1 0>, /* AIC3X_GPIO1_FUNC_DISABLED */ <&axi_gpio_0 2 0>; /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */ AVDD-supply = <&vmmc2>; DRVDD-supply = <&vmmc2>; IOVDD-supply = <&vmmc2>; DVDD-supply = <&vmmc2>; ai3x-micbias-vg = <1>; }; ... };
I2s рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ (рдСрдбрд┐рдпреЛ рдбреЗрдЯрд╛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ):
i2s_clk: i2s_clk { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <11289600>; clock-output-names = "i2s_clk"; }; axi_i2s_adi_0: axi_i2s_adi@43C00000 { compatible = "adi,axi-i2s-1.00.a"; reg = <0x43C00000 0x1000>; xlnx,bclk-pol = <0x0>; xlnx,dma-type = <0x1>; xlnx,has-rx = <0x1>; xlnx,has-tx = <0x1>; xlnx,lrclk-pol = <0x0>; xlnx,num-ch = <0x1>; xlnx,s-axi-min-size = <0x000001FF>; xlnx,slot-width = <0x18>; }; &axi_i2s_adi_0 { #sound-dai-cells = <0>; compatible = "adi,axi-i2s-1.00.a"; clocks = <&clkc 15>, <&i2s_clk>; clock-names = "axi", "ref"; dmas = <&dmac_s 0 &dmac_s 1>; dma-names = "tx", "rx"; };
рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА (рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб) рдореЗрдВ рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб рд╕реЗрдЯ рдХрд░рдирд╛:
sound { compatible = "simple-audio-card"; simple-audio-card,name = "TLV320AIC34"; simple-audio-card,format = "i2s"; simple-audio-card,bitclock-master = <&dailink0_master>; simple-audio-card,frame-master = <&dailink0_master>; simple-audio-card,widgets = ... simple-audio-card,routing = ... dailink0_master: simple-audio-card,cpu { clocks = <&i2s_clk>; sound-dai = <&axi_i2s_adi_0>; }; simple-audio-card,codec { clocks = <&i2s_clk>; sound-dai = <&tlv320aic3x>; }; }; };
рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА рдореЗрдВ рдХреЛрдбреЗрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдСрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рд╣рдо рд╕рдВрдЧреАрдд рд╕реБрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ (рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рд╕рдВрдЧреАрдд рдЯреНрд░реИрдХ рд╣рд╛рдИрд╡реЗ рдЯреВ рд╣реЗрд▓, рдПрд╕реА / рдбреАрд╕реА) рдерд╛ред
рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ:
- рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди clk_wiz (рдХреНрд▓реЙрдХрд┐рдВрдЧ рд╡рд┐рдЬрд╝рд╛рд░реНрдб)
- Tlv320aic34 рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ DTS
- Tlv320aic3x рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рдорд░реНрдерди
- рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдбрд┐рдпреЛ рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рдСрдбрд┐рдпреЛ, рдкреНрд▓реЗрдкреНрд▓реЗ рдЖрджрд┐)
рдЕрдВрдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ 4 tlv320aic34 microcircuits рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд tlv320aic34 рдЪрд┐рдк рдореЗрдВ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдмреНрд▓реЙрдХ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдСрдбрд┐рдпреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА i2c рд▓рд╛рдЗрди рд╣реИред рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреНрд░рдорд╢рдГ рдЪрд╛рд░ рдкрддреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд░ tlv320aic34 microcircuits рдХреЛ рдПрдХ i2c рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЖрдкрдХреЛ рджреЛ i2c рдЗрдВрдЯрд░рдлреЗрд╕ (8 рд╕реНрд╡рддрдВрддреНрд░ рдСрдбрд┐рдпреЛ рдмреНрд▓реЙрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ mclk, blck, wclk, din / dout рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ 40 рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╣рдордиреЗ рдЪреБрдиреЗ рдЧрдП рд╕реЛрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд░реНрдХрд┐рдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрд╕рдВрднрд╡ рдФрд░ рддрд░реНрдХрд╣реАрди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХрдИ рдЕрдиреНрдп рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдерд╛ рдЗрдВрдЯрд░рдлреЗрд╕ред
рдирддреАрдЬрддрди, рд╣рдордиреЗ рдСрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЛ
рдЯреАрдбреАрдПрдо рдореЛрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА mclk, bclk, din, dout рд▓рд╛рдЗрдиреЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ, рдЬреЛ рд╕рдВрдЪрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдирд┐рд░реНрдгрдп рдиреЗ axi-i2s-adi рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЖрдИрдкреА рдХреЛрд░ рдиреЗ рд╕реНрд╡рдпрдВ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдмрджрд▓рд╛рд╡ рдиреЗ рд╣рдореЗрдВ рдЯреАрдбреАрдПрдо-рдореЛрдб рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрдИрдкреА-рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА, рдФрд░ рдПрдХ рдордЬрдмреВрдд-рдЗрдЪреНрдЫрд╛ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдгрдп рдХреЛ рд╣рдореЗрдВ рдЪрдпрдирд┐рдд рдЖрдИрдкреА-рдХреЛрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ред рдореБрдЭреЗ i2s рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕реБрдирдиреЗ рдФрд░ рдЗрд╕реЗ dma рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдкреА рдХрд░реНрдиреЗрд▓ рд▓рд┐рдЦрдирд╛ рдерд╛, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЙрд▓ (рдПрдирд╛рд▓реЙрдЧ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдХрд╛рд░реНрдб) рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
I2s рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛:

I2s рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛:

PRI рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдЗрд╕рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ:

BRI рд╕реНрдЯреНрд░реАрдо рд░рд┐рд╕реЗрдкреНрд╢рди рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░:

рдЖрд╕реА рджрдорд╛
рдпрд╣ dma рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрддреНрд╡ рд╣реИред
Xilinx Vivado рдореЗрдВ AXI DMA рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдВрдбреЛрдкреНрд░рд┐рдВрдЯрд╕реНрдХреНрд░реАрди рдкрд░, AXI DMA рдмреНрд▓реЙрдХ рдХреЛ рд╣реА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдХрдИ рдорд╛рдкрджрдВрдб рд╣реИрдВред рдЖрдк рдмрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдирд╛ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдпрд╛ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдХреНрд╖реАрдп рдбреАрдПрдордП рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
рддрдХрдиреАрдХреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рддрдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЬреЛрдбрд╝ рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╢реЛрдзрди)ред
AXI DMA, AXI DMA рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдирддреАрдЬрддрди, рд╣рдордиреЗ
рдЧрд┐рдЯрдм-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдЬреНрдбрдорд╛ (
рд╕рдЬрд╛ , рдЖрд╕рд╛рди
рдбрдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛) рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЪреБрдирд╛ред
рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд╛рд▓рдХ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ, рдпрд╣ рдЙрд╕ рдХреНрд╖рдг рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдерд╛ рдЬрдм рдПрдлрдкреАрдЬреАрдП рд╡рд┐рдХрд╛рд╕ рд╡рд┐рднрд╛рдЧ рд╕реЗ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдИрдкреА рдХреЛрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ (рд╡рд░реНрдгрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЗрд╕ рдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рд╣рдордиреЗ AXI DMA, AXI DATA FIFO рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реВрдкрдмреИрдХ рдмрдирд╛рдпрд╛ред рд╣рдордиреЗ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдЯрд╛рд▓ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЕрдкрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреАред рд╣рдордиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛, рдЗрд╕реЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╣рдорд╛рд░реА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓рдХ рдФрд░ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреАред
рд▓реБрдХ-рдмреИрдХ рдмреНрд▓реЙрдХ рдбрд┐рдЬрд╝рд╛рдЗрди, AXI DMA рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА рдореЗрдВ рдбреАрдПрдордП рдФрд░ рдПрдЬрд╝реНрдбрдорд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
/ { amba_pl: amba_pl { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges ; axi_dma_1: axi_dma { #dma-cells = <1>; compatible = "xlnx,axi-dma-1.00.a"; reg = <0x40400000 0x10000>; clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk"; clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>; interrupt-parent = <&intc>; interrupts = <0 29 4 0 30 4>; xlnx,addrwidth = <0x20>; xlnx,include-sg; dma-channel@40400000 { compatible = "xlnx,axi-dma-mm2s-channel"; dma-channels = <0x1>; interrupts = <0 29 4>; xlnx,datawidth = <0x20>; xlnx,device-id = <0x0>; xlnx,include-dre ; }; dma-channel@40400030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0 30 4>; xlnx,datawidth = <0x20>; xlnx,device-id = <0x0>; xlnx,include-dre ; }; }; ezdma0 { compatible = "ezdma"; dmas = <&axi_dma_1 0 &axi_dma_1 1>; dma-names = "loop_tx", "loop_rx"; // used when obtaining reference to above DMA core using dma_request_slave_channel() ezdma,dirs = <2 1>; // direction of DMA channel: 1 = RX (dev->cpu), 2 = TX (cpu->dev) }; ... }; };
рдЖрдк
рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд░реА рдЬреЗрдирд░реЗрдЯрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ dts / dtsi рдлрд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рдЪрд░рдг рдЪрд╛рд▓рдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░ рдбреЗрдЯрд╛ рд╕рд╛рд░реНрдердХ рд╣реЛрдЧрд╛, AXIS_DMA рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реЛрдЧрд╛)ред
AXIS рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрд╣рдо рдбреЗрдЯрд╛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХреЗ рджреЛ рд╡реЗрд░рд┐рдПрдВрдЯ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡реЗрд░рд┐рд▓реЙрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ - рдПрдЪрдПрд▓рдПрд╕ рдкрд░ (рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдПрдЪрдПрд▓рдПрд╕ "рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢-рдлреИрд╢рди-рдпреВрде" рдирд╛рд░реЗ рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ ip-cores рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп verilog рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯрд░ (рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдПрдЪрдбреАрдПрд▓ рдкрд░рд┐рд╡рд╛рд░ рдХреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ - verilog, vhdl, рдЖрджрд┐) рдПрдХ рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдордзреНрдпрд╡рд░реНрддреА рдЖрдИрдкреА рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рд╣реИрдВ:
module GenCnt ( тАж. assign HandsHake = m_axis_din_tready & m_axis_dout_tvalid; always @(posedge Clk) begin if (Rst) begin smCnt <= sIDLE; end else begin case (smCnt) sIDLE: begin smCnt <= sDATA; end sDATA: begin if (Cnt == cTopCnt - 1) begin smCnt <= sLAST; end end ... endmodule
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ FPGA рдбрд┐рдЬрд╛рдЗрдирд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИред
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк "рдЬрд╛рдирд╡рд░" рдпрд╣рд╛рдВ рдПрдЪрдПрд▓рдПрд╕ рд╣реИред
Vivado HLS (рд╣рд╛рдИ рд▓реЗрд╡рд▓ рд╕рд┐рдВрдереЗрд╕рд┐рд╕) OpenCL, C рдпрд╛ C ++ рдЬреИрд╕реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ Xilinx CAD рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИред
рд╕реА / рд╕реА ++ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рддреБрд▓рдирд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдпрд╣рд╛рдВ рдПрдЪрдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреЛ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг AXI_DMA рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯрд░ рд╣реИ, рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг s_axilite рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рднрд╛рдЧ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд▓реЙрдЬрд┐рдХ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реИред
S_axilite рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдЗрд╕рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЦрд░реАрдж рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдХрд┐ рдХреМрди рд╕рд╛ рдмрд┐рдЯрд╕реНрдЯреНрд░реАрдо рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ SoC рдХреЗ PL рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдпрд╣рд╛рдВ s_axilite рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ: рд╡рд┐рд╡рд╛рдбреЛ HLS рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рддрд╛ рд╣реИ (рдбреНрд░рд╛рдЗрд╡рд░, рдмрджрд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рд▓реЗрдЦрди рдХреА рдЖрдиреБрд╡рдВрд╢рд┐рдХрддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реВрдлрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╣реИ (рд╕реНрд░реЛрдд рд╕рдорд╛рдзрд╛рди 1 / рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг / рдЖрдИрдкреА / рдбреНрд░рд╛рдЗрд╡рд░ / name_xxx / src /) рдХреЗ рд▓рд┐рдП рдкрдеред
рдПрдЪрдПрд▓рдПрд╕ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдФрд░ рдЖрд░рдЯреАрдПрд▓ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рдЪрд░рдгAXI_DMA рдХреЗ рд╕рд╛рде рдСрдкрд░реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП HLS рдбреЗрдЯрд╛ рдЬрдирд░реЗрдЯрд░:
#include <ap_axi_sdata.h> #include <hls_stream.h> #define SIZE_STREAM 1024 struct axis { int tdata; bool tlast; }; void data_generation(axis outStream[SIZE_STREAM]) { #pragma HLS INTERFACE axis port=outStream int i = 0; do{ outStream[i].tdata = i; outStream[i].tlast = (i == (SIZE_STREAM - 1)) ? 1 : 0; i++; }while( i < SIZE_STREAM); }
рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреЛрд░реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
#include <stdio.h> void info( int &aVersion, int &bSubVersion, int &cTypeBoard, int version, int subVersion, int typeBoard ){ #pragma HLS INTERFACE s_axilite port=aVersion #pragma HLS INTERFACE s_axilite port=bSubVersion #pragma HLS INTERFACE s_axilite port=cTypeBoard #pragma HLS INTERFACE ap_ctrl_none port=return aVersion = version; bSubVersion = subVersion; cTypeBoard = typeBoard; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, hls рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рдЧрдорд╛рдУрдВ (HLS pragma) рдХреЗ рдХрд╛рд░реНрдп рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реАрдзреЗ pragmas рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИред
S_axilite рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд┐рдд рдбреНрд░рд╛рдЗрд╡рд░:
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдЖрдкрдХреЛ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдЪрд░ (рд░рдЬрд┐рд╕реНрдЯрд░) рдХрд╛ рд╕реНрдерд╛рди рдмрддрд╛рддреА рд╣реИ, рдлрд╝рд╛рдЗрд▓ x # your_name # _hw.h рд╣реИред рдЖрдк рд╣рдореЗрд╢рд╛ devmem рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд┐рдд IP-рдХрд░реНрдиреЗрд▓ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдкрддреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЪрдХреНрд░реЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреАрдЯ рдЙрджрд╛рд╣рд░рдгрд╣рд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХреА рдЧрдгрд┐рддреАрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реА ++ рдпрд╛ рд╕реА рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдФрд░ рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред рдорд╛рдирдХ FPGA рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рдирдХрд╛рд░реАред
рдЙрд╕реА рд╕рдордп, рдПрдЪрдПрд▓рдПрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ I2S рдерд╛, рдФрд░ рдЙрддреНрдкрдиреНрди рдЖрд░рдЯреАрдПрд▓ рдХреЛрдб рдПрдлрдкреАрдЬреАрдП рдкрд░ рдорд╛рдирдХ рдПрдЪрдбреАрдПрд▓ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рд▓реЗрддрд╛ рд╣реИред
рдЪрд╛рд▓рдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг I2S рдЯреНрд░реИрдлрд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рдпрд╣ рдЖрдИрдкреА-рдХреЛрд░ рдкрд┐рдЫрд▓реЗ рдЖрдИрдкреА-рдХрд░реНрдиреЗрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдбреЗрдЯрд╛ (рдЯреНрд░реИрдлрд╝рд┐рдХ) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ TDM рдореЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ I2S рдбреЗрдЯрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╕реНрдЯрдо I2S рдХреЛрд░ рдкрд░реАрдХреНрд╖рдг рдФрд░ I2S рдпрд╛рддрд╛рдпрд╛рдд рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдбрд┐рдЬрд╛рдЗрдирдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ hls, axi dma рдФрд░ s_axilite рдХреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ, рд╣рдорд╛рд░реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреАред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА, рд╕рд╛рде рд╣реА рд╕рд╛рде tdm, pri, bri рдХреЗ рд▓рд┐рдП ip-kernelsред рд╣рдордиреЗ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ
рдПрд╕реНрдЯрд░рд┐рдХ ,
рдкреИрдЯреНрдЯрди рдФрд░ рдЕрдиреНрдп рд╕реЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдкреАрд╕реА рдФрд░ рдкреАрд╕реАрдЖрдИ рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╕реАрдзреЗ рдИрдерд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред