代码下载
加速度计 Pmod 控制器(顶层文件):
版本1.1: pmod_accelerometer_adxl345.vhd (14.2 KB)
修复了复位后可能出现的间歇性问题
版本1.0: pmod_accelerometer_adxl345_v1_0.vhd (14.0 KB)
首次公开发布
SPI 主控制器(必须同时包含在项目中):
spi_master.vhd (8.8 KB)
特点
- 针对Digilent PmodACL(模拟器件ADXL345加速度计的Pmod模块)的简化接口VHDL源代码
- 持续通过3条并行总线输出最新的三轴加速度数据
- 处理SPI通信以配置并获取加速度计Pmod的数据
- 可配置的加速度计数据量程
- 可配置的加速度计数据速率
- 可配置系统时钟频率
介绍
本文详述了与Digilent ADXL345加速度计Pmod接口的VHDL组件,如图1所示。图2展示了该加速度计Pmod控制器集成到系统中的典型实例。如图所示,加速度计Pmod控制器连接Pmod端口并执行事务以配置加速度计并采集数据。数据持续更新并通过3条简易并行总线(对应三个轴向)输出,可连接至用户逻辑或FPGA输出端口。
图 1. Digilent ADXL345加速度计Pmod模块
图 2. 实现示例
操作原理
加速度计Pmod控制器主要由状态机和SPI主控组件构成。
状态机
该设计采用图 3 所示的状态机来实现其操作。上电后组件立即进入启动状态,初始化其他状态所需的参数。随后进入暂停状态。在此状态下暂停200ns,确保满足SPI事务间最小时间间隔(ADXL345数据手册规定)。接着选择与加速度计执行的4个事务之一。前3个事务由配置状态完成(设置加速度计数据量程、数据速率,最后启用测量功能)。每完成一个事务即返回暂停状态。当3个配置事务全部完成后,暂停状态循环选择第4个事务,进入read_data 状态执行。该状态读取三轴加速度数据后,转入output_result 状态。output_result 状态将数据写入acceleration_x 、acceleration_y 和acceleration_z 输出总线,然后返回到pause 状态。任何时候重置组件都会使其返回到start 状态。
图 3. 状态图
SPI 主控制器
在configure 和read_data 状态期间,状态机控制一个SPI主控制器组件与Pmod上的加速度计通信。SPI主控制器的文档可在此处查阅。
本设计以CPOL='1’和CPHA='1’模式实现SPI主控制器。它根据系统时钟频率(通过clk_freq 通用参数指定,见下文)设置clk_div 参数,以ADXL345数据手册中指定的最大SPI频率(即5MHz)与加速度计通信。
本设计还利用SPI主控制器的连续模式特性来执行不同长度的传输事务。configure 状态中的传输事务为16位长,而read_data 状态中的传输事务由56位组成。
配置加速度计 Pmod 控制器
通过设置实体中的通用参数来配置加速度计Pmod控制器。
系统时钟频率
必须将通用参数clk_freq 设置为提供给加速度计Pmod控制器clk 端口的系统时钟频率。
数据速率
通用参数data_rate 定义ADXL345加速度计进行测量的频率。该参数本身是对应于所需数据速率的速率代码,定义在ADXL345数据手册的表7中。带宽和功耗随数据速率的提高而增加。表1描述了选项并列出了速率代码。默认速率代码为"0100",将加速度计配置为1.56Hz输出数据速率。
表 1. 数据速率选项
数据范围
通用参数data_range 定义加速度计测量的加速度值范围。该参数本身由用于配置加速度计数据格式寄存器的位组成,定义在ADXL345数据手册的表21中。增大范围还会提高输出分辨率,以保持4mg/LSB 的比例因子。表2描述了选项并列出了参数设置。默认设置为"00",将加速度计配置为±2g 输出数据范围。
表 2. 数据范围选项
端口描述
表3描述了加速度计Pmod控制器的端口。
表 3. 端口描述
连接方式
该Pmod配备12针连接器。表4提供了该连接器的引脚定义。需将加速度计Pmod控制器的端口分配至FPGA引脚,这些引脚已按列表路由至连接器。
表 4. 加速度计Pmod引脚定义及与加速度计Pmod控制器的连接
复位
reset_n 输入端口必须保持逻辑高电平,加速度计Pmod控制器组件才能运行。该端口的低电平将异步复位组件。复位期间,组件将中止与Pmod的当前事务,并清除acceleration_x 、acceleration_y 和acceleration_z 数据输出。退出复位状态后,加速度Pmod控制器将重启操作。它会重新配置加速度计,随后恢复采集并输出加速度数据。
结论
本加速度计Pmod控制器是可编程逻辑组件,用于连接Digilent的PmodACL(加速度计ADXL345 Pmod)。它负责处理与该Pmod的所有通信,包括配置Pmod加速度计的数据范围与速率、激活测量,并通过3个并行输出总线(每个轴向对应一个)持续提供更新的加速度数据流。
附加信息
Analog Devices ADXL345 datasheet (839.9 KB)
相关主题






