你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
读者可以通过这篇文章学习如何使用 Arty S7,4个Pmod模块还有触摸显示屏来采集和显示环境的数据。
我们需要以上图片中的器件来进行测量
硬件清单:
Digilent Arty S7-50 x1
Digilent Pmod GPS x1
Digilent Pmod NAV x1
Digilent Pmod HYGRO x1
Digilent Pmod ALS x1
简介
Digilent Arty S7是受欢迎的Diligent Arty系列电路板的变体。它是围绕Xlinix Spartan 7系列来设计的。当与Arty S7连接时,它提供了一系列从4个Pmod接口到Arduino Shield连接器的选项。
Arty S7 方框图
在这个教程里面,我们使用Arty S7,4个Pmod模块(见列表)还有一个多点触摸显示屏来采集,计算以及显示环境的数据。我们需要以下器件:
- Pmod NAV- 3轴加速度计,3轴陀螺仪加数字气压计
- Pmod GPS- GPS接收器
- Pmod HYGRO- 数字湿度和温度传感器
- Pmod ALS- 环境亮度传感器
步骤1:搭建硬件平台
我们首先需要使用Xilinx Vivado打造一个硬件平台。在这里,我们示范在Spartan 7 FPGA上利用MicroBlaze处理器。然后,我们使用Xlinix SDK来设置软件以驱动多点触摸显示屏(MTDS)和Pmod模块。
安装板载文件
首先,我们从https://github.com/Digilent/vivado-boards/archive/master.zip下载Arty S7 板载文件,然后进行安装。这些文件定义了Xilinx Vivado环境中的Arty S7接口和内存配置。文件一解压后我们应该把他们复制去Vivado安装目录,如图下所示。(你也可以参考Digilent的教材https://reference.digilentinc.com/vivado/getting_started/start)
在Vivado安装文件夹里面复制Arty S7板卡文件
创建Pmod与MTDS的驱动程序
我们可以通过Digilent Github提供的Digilent Vivado库创建Pmods与MTDS的驱动程序。这个库包含了能够适用于大多数Pmod的Xlinix Vivado与Xlinix SDK驱动器。你可以在Diligent Github上复制文件或下载压缩包或是直接在Github上解压。
接下来,我们打开Xlinix Vivado然后创建一个新的项目用于Arty S7。
创建项目时选择Arty S7选项
当项目创建完毕时,下一步是将Digilent Vivado库设置为储存库,以便我们能够在设计中添加Pmod与MTDS IP Cores. 这个步骤可以通过项目设置选项卡完成。
当所有库镜像完毕,接下来的步骤是创建一个方框图,实例化MicroBlaze。因为我们使用Arty S7的定义,这一步可以很快完成。我们需要从Board 项目卡上拖曳以下元素到框图当中以创建框图。
- 系统时钟-这会添加一个时间向导,连接到系统时钟的输入,将配置生成两个输出Clk 1=100MHz, Clk 2=200MHz,然后同时设置成禁止重置输入。
- DDR3 SDRAM-为Arty S7与DDR内存增加一个内存接口器。
将100MHz clk连接到DDR系统时钟,将200MHz clk连接到DDR参考时钟。
添加板元素到板框图当中
下一步是添加MicroBlaze。选择 add IP option然后寻找MicroBlaze。添加完成后,我们可以使用run connectionautomation选项以便让Xlinix Vivado连接到大多数的系统中。倘若从来没有创建MicroBlaze的话,本视频提供了以下教程。
当你实例化了MicroBlaze IP core之后,在运行connetion automation之前需要使能下列元素:
- AXI外设数据与指令接口
- 调试模块
创建MicroBlaze系统后,从Digilent Vivado库中添加Pmod, MTDS还有其他的IP cores(见下表)。这些IP cores需要连接到正确的输出端口(Pmod 或shield)与AXI interconnect以便让MicroBlaze系统连接并控制它们。
- Pmod GPS
- Pmod NAV
- Pmod ALS
- Pmod HYRGO
- PmodMTDS
- AXI Timer – 用来创建周期中断计时器
一旦完成所有添加,我们可以通过双击IP block然后从菜单中选择接口,使到IP blocks的输出连接到Pmod或是shield。
选择连接的Pmod
对于MTDS,我们选择 SPI interface
设置MTDS连接到Shield SPI
现在,我们完成了上层设计,然后可以导出到Xlinix SDK。
完成了的Vivado设计
设计利用率
步骤2:创建软件
在MicroSD里面储存照片文件,然后安装进MTDS。
首先,我们需要准备一个MicroSD卡。这个卡需要被安插到MTDS然后保存一些我们即将使用的图片。MTDS驱动器提供了一个图片目录,我们可以在此找到
<install location>\ip\Pmods\PmodMTDS_v1_0\drivers\PmodMTDS_v1_0\examples\Resources
复制这些文件以及你所需的文件到SD卡当中,然后插入到MTDS里面。
生成软件应用程序
系统里面有三种模式。我们可以点击触摸屏上的按钮来切换模式。
- 模式1:从Pmod NAV中获取信息确定标题,在显示屏上显示指南针。
- 模式2:从Pmod NAV与Pmod GPS获取信息,显示导航信息
- 模式3:从Pmod HYGRO与Pmod ALS获取信息然后显示
以下是软件架构的概述:
- 主要功能配置Pmod和其他驱动程序,包括配置中断控制器以与AXI定时器一起使用。这个功能也可使我们可以在触摸屏上绘制初始图像。
- 连续循环监视显示屏的按钮,配置所选模式的显示效果
- 中断服务程序依赖于模式选择和Pmod收集信息,然后根据需要更新显示信息。
它保证了系统的效率性和减少丢失”触摸屏事件”的可能性。
现在,我们可以使用Digilent Vivado库所提供的软件驱动器。我们可以使用MYDISP API跟MTDS产生交互。MYDISP API提供了以下的功能:
1.初始化显示
2.画线,椭圆或是两点之间的弧
3.测试显示
4.从SD卡中加载图像
5.创建按钮和监视器,当它们被按下时可以采取行动
MYDISP API是完整的记录在Pmod MTDS软件驱动器中的用户手册。他位置是在<install>ip\Pmods\PmodMTDS_v1_0\drivers\PmodMTDS_v1_0\examples\Documentation。
这个文件里面包含了让MDTS启动和运行的一切。同样的,你可以从软件驱动器里面找到每一个Pmods的相关应用例子。
这些例子还有大纲使我们可以更容易且更快的创建软件的应用。
Arty S7,Pmods 与MTDS运行系统然后采集环境的数据。
我们可以看视频,观察系统如何工作
MTDS显示加载的图像
完整的设计可以从Adam’s Github下载: