Vivado高效设计案例分享大赛---19 暨 MicroZed测评15-使用XADC
- UID
- 1023229
- 来自
- 中国
|
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读写相关文件 |
|
|
|
|
|