跳转到主要内容

AD936x+ZYNQ搭建收音机(一)

judy 提交于

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/HhpU9pJNhmHU61mvuAvsyA">OpenFPGA微信公众号</a></s…;

<strong>介绍</strong>

利用SDR做一个收音机是所有入门SDR都会做的小项目,简单直观易上手的特点和“Hello World”、流水灯一样。本篇文章就带领大家利用AD936X+ZYNQ平台SDR做个SDR。

<strong>《<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=Mzg4ODA5NzM1Nw==&amp;mid=2247496437&amp…; data-itemshowtype="0" tab="innerlink" data-linktype="2" hasload="1">AD9361和Zynq及其参考设计说明</a>》</strong>

首先介绍一下硬件:

1、ZYNQ7020+AD9364,Analog Devices AD9364- BBCZ集成1x1 RF Agile Transceiver™+Xilinx Zynq XC7Z020-1CLG400I AP SoC(用于数字处理)

2、7020的介绍:https://china.xilinx.com/support/documentation/boards_and_kits/zc702_zv…

3、AD9364:详见中文手册。

注意1:

一些ZYNQ+AD936x方案基本都是ADI官方AD-FMCOMMS [2、3、4、5] –EBZ(区别详见注意2)的变形体,所有的设计资料都可以直接利用官方的工程。同时,官方也针对一些常用的开发板和开源硬件做了u-boot、kernel和文件系统,使用过程中只需要准备一个SD/FT卡和读卡器即可,下面的步骤也分为在官方列表中的硬件和不在官方硬件的两种情况搭建系统;

<body>
<p>注意2:</p>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<td width="89" valign="middle"><p>板卡</p></td>
<td width="53" valign="middle"><p>AD936x器件</p></td>
<td width="52" valign="middle"><p>同时发送/接收</p></td>
<td width="83" valign="middle"><p>Tx(范围)</p></td>
<td width="83" valign="middle"><p>Rx(范围)</p></td>
<td width="137" valign="middle"><p>目的</p></td>
<td width="55" valign="middle"><p>连接器</p></td>
</tr>
</thead>
<tbody>
<tr>
<td width="89" valign="middle"><p>ADALM-PLUTO</p></td>
<td width="53" valign="middle"><p>1个AD9363</p></td>
<td width="52" valign="middle"><p>1 x 1</p></td>
<td width="83" valign="middle"><p>1(325-3800 MHz)</p></td>
<td width="83" valign="middle"><p>1(325-3800 MHz)</p></td>
<td width="137" valign="middle"><p>主动学习模块</p></td>
<td width="55" valign="middle"><p>台积电</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>ADRV9364-Z7020</p></td>
<td width="53" valign="middle"><p>1个AD9364</p></td>
<td width="52" valign="middle"><p>1 x 1</p></td>
<td width="83" valign="middle"><p>1(2400-2500 MHz)</p></td>
<td width="83" valign="middle"><p>1(2400-2500 MHz)</p></td>
<td width="137" valign="middle"><p>高度集成的模块系统</p></td>
<td width="55" valign="middle"><p>台积电</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>ADRV9361-Z7035</p></td>
<td width="53" valign="middle"><p>1个AD9361</p></td>
<td width="52" valign="middle"><p>2 x 2</p></td>
<td width="83" valign="middle"><p>2(2400-2500 MHz)</p></td>
<td width="83" valign="middle"><p>2(2400-2500 MHz)</p></td>
<td width="137" valign="middle"><p>高度集成的模块系统</p></td>
<td width="55" valign="middle"><p>台积电</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>AD-FMCOMMS2-EBZ</p></td>
<td width="53" valign="middle"><p>1个AD9361</p></td>
<td width="52" valign="middle"><p>2 x 2</p></td>
<td width="83" valign="middle"><p>2(2400-2500 MHz)</p></td>
<td width="83" valign="middle"><p>2(2400-2500 MHz)</p></td>
<td width="137" valign="middle"><p>窄范围内的最佳射频性能</p></td>
<td width="55" valign="middle"><p>FMC-LPC</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>AD-FMCOMMS3-EBZ</p></td>
<td width="53" valign="middle"><p>1个AD9361</p></td>
<td width="52" valign="middle"><p>2 x 2</p></td>
<td width="83" valign="middle"><p>2(70-6000 MHz)</p></td>
<td width="83" valign="middle"><p>2(70-6000 MHz)</p></td>
<td width="137" valign="middle"><p>软件测试和波形开发</p></td>
<td width="55" valign="middle"><p>FMC-LPC</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>AD-FMCOMMS4-EBZ</p></td>
<td width="53" valign="middle"><p>1个AD9364</p></td>
<td width="52" valign="middle"><p>1 x 1</p></td>
<td width="83" valign="middle"><p>1(2400-2500 MHz)<br />
1(70-6000 MHz)</p></td>
<td width="83" valign="middle"><p>1(2400-2500 MHz)<br />
1(70-6000 MHz)</p></td>
<td width="137" valign="middle"><br /></td>
<td width="55" valign="middle"><p>FMC-LPC</p></td>
</tr>
<tr>
<td width="89" valign="middle"><p>AD-FMCOMMS5-EBZ</p></td>
<td width="53" valign="middle"><p>2个AD9361</p></td>
<td width="52" valign="middle"><p>4 x 4</p></td>
<td width="83" valign="middle"><p>4(2400-2500 MHz)<br />
4(70-6000 MHz)</p></td>
<td width="83" valign="middle"><p>4(2400-2500 MHz)<br />
4(70-6000 MHz)</p></td>
<td width="137" valign="middle"><p>MIMO测试平台,可以在RF域中同步</p></td>
<td width="55" valign="middle"><p>2个FMC-LPC</p></td>
</tr>
</tbody>
</table>
</body>

<strong>官方列表中板卡应用</strong>

<body>
<p>官方的支持板卡如下所示:</p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<thead>
<tr>
<td width="478" valign="middle"><p><br />
Directory on the SD image</p></td>
</tr>
</thead>
<tbody>
<tr>
<td width="75" valign="top"><p>1</p></td>
<td width="478" valign="middle"><p>socfpga_arria10_socdk_ad9172_fmc</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>2</p></td>
<td width="478" valign="middle"><p>socfpga_arria10_socdk_adrv9009</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>3</p></td>
<td width="478" valign="middle"><p>socfpga_arria10_socdk_adrv9371</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>4</p></td>
<td width="478" valign="middle"><p>socfpga_arria10_socdk_daq2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>5</p></td>
<td width="478" valign="middle"><p>socfpga_arria10_socdk_fmclidar1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>6</p></td>
<td width="478" valign="middle"><p>socfpga_cyclone5_sockit_arradio</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>7</p></td>
<td width="478" valign="middle"><p>zynq-adrv9361-z7035-bob</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>8</p></td>
<td width="478" valign="middle"><p>zynq-adrv9361-z7035-bob-cmos</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>9</p></td>
<td width="478" valign="middle"><p>zynq-adrv9361-z7035-fmc</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>10</p></td>
<td width="478" valign="middle"><p>zynq-adrv9361-z7035-packrf</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>11</p></td>
<td width="478" valign="middle"><p>zynq-adrv9364-z7020-bob</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>12</p></td>
<td width="478" valign="middle"><p>zynq-adrv9364-z7020-bob-cmos</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>13</p></td>
<td width="478" valign="middle"><p>zynq-adrv9364-z7020-packrf</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>14</p></td>
<td width="478" valign="middle"><p>zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>15</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-ad9172-fmc-ebz-mode4</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>16</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-ad9361-fmcomms2-3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>17</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-ad9361-fmcomms5</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>18</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-ad9364-fmcomms4</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>19</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9002</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>20</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9008-1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>21</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9008-2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>22</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9009</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>23</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9371</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>24</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-adrv9375</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>25</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-fmcdaq2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>26</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-fmcdaq3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>27</p></td>
<td width="478" valign="middle"><p>zynqmp-zcu102-rev10-fmclidar1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>28</p></td>
<td width="478" valign="middle"><p>zynq-zc702-adv7511</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>29</p></td>
<td width="478" valign="middle"><p>zynq-zc702-adv7511-ad9361-fmcomms2-3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>30</p></td>
<td width="478" valign="middle"><p>zynq-zc702-adv7511-ad9361-fmcomms5</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>31</p></td>
<td width="478" valign="middle"><p>zynq-zc702-adv7511-ad9364-fmcomms4</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>32</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>33</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad6676-fmc</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>34</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9172-fmc-ebz</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>35</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9265-fmc-125ebz</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>36</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9361-fmcomms2-3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>37</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9361-fmcomms5</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>38</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9361-fmcomms5-ext-lo-adf5355</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>39</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9364-fmcomms4</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>40</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9434-fmc-500ebz</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>41</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9625-fmcadc2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>42</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9625-fmcadc3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>43</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-ad9739a-fmc</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>44</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-adrv9008-1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>45</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-adrv9008-2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>46</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-adrv9009</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>47</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-adrv9371</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>48</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-adrv9375</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>49</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-fmcdaq2</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>50</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-fmcdaq3-revC</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>51</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-fmcjesdadc1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>52</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-fmclidar1</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>53</p></td>
<td width="478" valign="middle"><p>zynq-zc706-adv7511-fmcomms11</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>54</p></td>
<td width="478" valign="middle"><p>zynq-zed-adv7511</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>55</p></td>
<td width="478" valign="middle"><p>zynq-zed-adv7511-ad9361-fmcomms2-3</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>56</p></td>
<td width="478" valign="middle"><p>zynq-zed-adv7511-ad9364-fmcomms4</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>57</p></td>
<td width="478" valign="middle"><p>zynq-zed-adv7511-ad9467-fmc-250ebz</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>58</p></td>
<td width="478" valign="middle"><p>zynq-zed-adv7511-cn0363</p></td>
</tr>
<tr>
<td width="75" valign="top"><p>59</p></td>
<td width="478" valign="middle"><p>zynq-zed-imageon</p></td>
</tr>
</tbody>
</table>
</body>

上边每一个平台的介绍就不一一展开了,可以通过下面的网站自行查看(https://wiki.analog.com/resources/tools-software/linux-software/zynq_im…)支持大约60种不同使用组合,基本可以覆盖市场上80%的应用场景。接下来针对我们的应用硬件进行设置。

1、下载SD卡镜像

镜像包含U-boot、kernel和文件系统。

打开下面网址:

https://wiki.analog.com/resources/tools-software/linux-software/zynq_im…

找到下面截图位置:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

不同版本的镜像文件,选择最新的即可,下载下来是一个.xz文件,windows系统下需要先解压,解压出来就是我们需要的.img文件。
<center><img src="" alt=""></center>

接下来准备一个16GB以上内存的SD/TF卡,通过读卡器接到电脑上。

准备一个SD卡刻录软件,本人习惯使用Win32DiskImager,打开软件,选择下载下来的img文件,具体设置如下:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

第一步:选择下载下来的img文件;

第二步(可选):勾选MD5 Hash,会生成第一步选择的文件的MD5 Hash值,和官网的值进行对比,防止下载下来的文件被损坏,浪费时间去验证;

第三步:选择SD/TF卡对应的盘符,一定要仔细核对防止损坏其他卡;

第四步:点击WRITE,向卡内写入文件;

第五步:等待完成。

2、复制文件到对应位置

烧写完毕的卡在windows系统下只能显示boot分区,先看下分区下都有哪些文件:

每个办卡的u-boot和设备树分别在对应的文件夹下:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

每个文件夹下的文件:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

SD卡内部还包括内核+u-boot环境变量
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

其中uImage(内核)在《zynq-common》文件夹下,也需要拷贝到SD卡的根目录下,拷贝完如上图所示。

文件系统:

文件系统需要在Linux系统内查看(WINDOWS不支持),具体如下:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

最后就是在上面介绍的boot分区内将u-boot和设备树拷贝到SD卡根分区内,将和自己匹配的硬件平台内的文件拷贝到SD卡根目录内,本人使用的是《zynq-adrv9364-z7020-bob-cmos》所以把内部的下图所示的三个文件:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

拷贝到SD卡根目录:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

提示替换原来的文件即可,接下来可以根据需求修改环境变量文本(默认不需要),连接平台的串口+上电就可以看到完整的系统打印信息,其中串口设置如下:
<center><img src="http://xilinx.eetrend.com/files/2021-06/%E5%8D%9A%E5%AE%A2/100113341-20…; alt=""></center>

目前为止AD936X+ZYNQ利用官方提供的镜像搭建平台的过程已经完成,可以尽情玩耍了。

下一篇文章搭建收音机应用及非官方板卡应用。