Zynq PS / PL 第四篇:Adam Taylor MicroZed系列之 24

了解zynq ps / pl接口之后;到目前为止,我们已经分析了zynq all programmable soc芯片中的ps (处理器系统)与pl(可编程逻辑)之间的接口。我们已经使用vivado设计套件创建了简单的外设,使用sdk与新外设连接,并且可以在外设上运行自检程序。但我们创建的外设功能不超过四个可读取和写入的寄存器。实际上,我们需要外设执行一些有效的功能。
我们将再次使用vivado为这个外设添加实际的功能。
首先需要打开vivado项目和框图,其中包含我们已创建的外设。右键点击“peripheral”,选择“edit ip packager ”选项。随后ip packager窗口将打开,可编辑和更新外设。
除package ip 外设窗口外,这个窗口与标准项目流窗口相似。在设计源窗口下方有两个在外设创建过程中创建的文件。
这些文件被命名为:
adams_peripheral_v1_0.vhd - 顶级架构文件,利用该文件可定义退出该模块的用户i/o。
adams_peripheral_v1_0_s00_axi.vhd - rtl文件,其中包含函数axi接口,包括初始创建的四个寄存器。
这两个文件中包括用户代码将插入地址的注解:
在这个例子中,我将介绍使用第一个寄存器作为控制寄存器。这个寄存器当中的特定位定义是否将寄存器2和3的目录进行相加、相减或相乘运算。运算结果将存储在第四个寄存器中。我们将设置与微处理器相关的第四个寄存器为只读状态,以确保微处理器不会影响运算结果。此外,如果激活控制寄存器,外围将生成一个中断。
定义中的第一步是声明四个寄存器,第3个寄存器为输出寄存器,最后1个寄存器为输入寄存器。(在这个步骤时我们可实现这一功能,但目前我正在顶层操作演示实现更复杂功能所需要的步骤) 。
同时,我也编辑这个文件为只读文件,以防止处理器写入第四个寄存器。
在顶层文件我在该架构创建一个中断输出并添加简单功能代码以执行我们所要的操作。
在所有必要的用户vhdl语言完成添加后,我处理该项目以确保在vivado内打包ip并返回至项目前不会出现错误。但在打包器打包ip前,我增加ip版本号以表示代码变更。点击“re-package”将运行打包器,并关闭项目,返回至初始vivado项目。
返回使用该外设的项目中,可以运行ip状态报告(tools - >reports - >report ip status),显示在设计中所使用的更新版本。
在将项目导出至sdk前,需要重新构建项目。在sdk内,可使用之前使用的同一功能对这个外设进行写入和读取。但测试过程中最后一个寄存器不能写入时,自检程序将失败。
第一个测试是使用寄存器0中的命令1相加寄存器2和3内的目录:
在第二次测试中,我们使用寄存器0中的命令2将寄存器2和3内的目录相乘:
在最后的测试中,我们使用寄存器0中的命令3将寄存器2内的目录减去寄存器3的目录:
所有这些测试都使用轮询的方法。由于这些运算属于简单的加、减、乘函数,可在一个时钟周期内完成。但更复杂的多周期函数运算需要使用中断,我们将在另外的文章中说明。

用AT89S52自制红外电视遥控器
国辰机器人与您相约第二届电力人工智能大会
行业方案|数商云电力设备行业SRM供应商管理解决方案
2009年成都电子展会
助力百度DMA语音功能 Synaptics携手百度带来蓝牙语音升级体验
Zynq PS / PL 第四篇:Adam Taylor MicroZed系列之 24
Linux中断下半部实现的三种方法
小米6难抢,小米5降至冰点价不到1500,小米5现在还值得买吗?
集成电路国产设备逐渐打破欧美日垄断
FS3871双节电池充电电路
华灿光电宣布改名:中文名称变更为京东方华灿光电
激光焊接与电子束焊接的区别
九阳豆浆机的使用方法_九阳豆浆机常见故障_九阳豆浆机维修电路图
小夜灯解决方案,基于九齐单片机开发
设计可靠性--产品设计的开始
多层陶瓷基板在车载领域的应用
影响FPC寿命的因素有哪些
微雪电子ZIGBEE开发板 Core2530 (B)简介
专家深入讨论AI金融科技的机遇与挑战
螺旋板换热器内部泄露的处理方法介绍