首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Vivado高效设计案例分享大赛---19 暨 MicroZed测评15-使用XADC

Vivado高效设计案例分享大赛---19 暨 MicroZed测评15-使用XADC

ZYNQ器件中带的XADC在系统级别上进行了模拟和数字的混合集成,这样就极大地简化了我们的设计,因为模拟和数字的接口处理不好将成为系统性能的一个短板。MicroZed虽小,功能却一一俱全,所以我们来用个简单的例子,结合高效的Vivado软件,在SOC中实现ADC信号的读取。

         Xadc读取的思想并不复杂,在我们前面的博文中也反复使用、提到过了:就是充分利用Vivado IPI的强大集成性能,把xadc也作为一个外设,或者干脆抽象成一个IP,把它挂载到PS上,或者把它的结果送人PL中编写的一些寄存器里;其中PL中的那部分代码也可以被PS视作一个外设或者IP,这样大家都可以很快捷地在Vivado IPI中沟通交流,而“交流”的纽带就是AXI总线。我们不用去关心AXI通信的细节,因为Vivado已经默默地帮我们都处理好了。
         首先,打开或者新建一个Vivado工程,然后再添加一个IP子系统(.bd),再添加IP,包括使用ZYNQ器件必须的PS的IP,以及一个XADC的IP。因为XADC不是直接挂在PS上作为一个外设的,中间要经过PL,所以它们直接有AXI的互联。这就要使能PS的AXI主控制器功能,如图1所示。



图1 使能PS的AXI GP0

         然后运行Vivado IPI中的连接自动化,如图2所示。



图2 运行连接自动化

         经过十几秒的时间,Vivado IPI已经为我们决定了某些连线应该怎么连接,并自动添加了必要的接口模块,然后IP就完成互联了,如图3所示。



图3 连接后的IP

         还可以根据需要配置XADC的相关功能,例如通道数、采样通道的校正、采样序列器、采样管脚等,如图4所示。



图4 配置XADC

         配置全部完成之后,由Vivado IPI运行设计自动化,然后验证设计,无误之后就可以生成.bd设计文件里面的其它部分,包括顶层的.v文件、生成设计输出文件。
综合一下,可以看出,MicroZed上的7010片子容量稍小,只有一个XADC,被100%利用了。
+-------------+------+-------+-----------+--------+
|  Site Type  | Used | Loced | Available |  Util% |
+-------------+------+-------+-----------+--------+
| BSCANE2     |    0 |     0 |         4 |   0.00 |
| CAPTUREE2   |    0 |     0 |         1 |   0.00 |
| DNA_PORT    |    0 |     0 |         1 |   0.00 |
| EFUSE_USR   |    0 |     0 |         1 |   0.00 |
| FRAME_ECCE2 |    0 |     0 |         1 |   0.00 |
| ICAPE2      |    0 |     0 |         2 |   0.00 |
| STARTUPE2   |    0 |     0 |         1 |   0.00 |
| XADC        |    1 |     0 |         1 | 100.00 |
+-------------+------+-------+-----------+--------+
然后导入SDK了,剩下的工作就是在SDK编程里面读取相应ADC通道的值了;在SDK编程时,XADC看起来就是PS的一个寄存器,在C里读寄存器的值就可以了。那参考资料怎么找呢?SDK把所有的资料都提供给我们了。首先在SDK里面找到外设驱动里面的xadc,如图5所示。



图5 外设驱动里的XADC

         点击xsdcps边上的”Documentation”链接,这时,与XADC相关的头文件、函数定义等都能找到了,不用怕记不住了,每次打开查找一下就好了,如图6所示。



图6 XADC读写相关文件

记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表