陀螺仪L3G4200D Pmod控制器(VHDL)

逻辑主页

代码下载

陀螺仪 L3G4200D Pmod 控制器 ( 顶层文件 ):

版本1.1: pmod_gyro_l3g4200d.vhd (12.2 KB)
修复了复位后可能出现的间歇性问题

版本1.0: pmod_gyro_l3g4200d_v1_0.vhd (12.0 KB)
首次公开发布

SPI 主控制器 ( 必须包含在项目中 ):

spi_master.vhd (8.9 KB)

特性

  • 针对Digilent Pmod GYRO模块(ST Microelectronics L3G4200D陀螺仪)的简化接口VHDL源代码
  • 持续输出最新的三轴陀螺仪数据到三条并行总线
  • 处理SPI通信以配置并获取陀螺仪Pmod数据
  • 可配置的陀螺仪量程范围
  • 可配置的陀螺仪带宽
  • 可配置系统时钟频率

概述

本文详述了连接Digilent陀螺仪L3G4200D Pmod的VHDL组件,如图1所示。图2展示了该陀螺仪Pmod控制器集成到系统的典型示例。如图所示,陀螺仪Pmod控制器连接Pmod接口并执行配置陀螺仪和采集数据的通信事务。数据持续更新并通过三条简单并行总线(对应三个轴向)输出,可连接至用户逻辑或FPGA输出端口。数据以二进制补码形式呈现。

1. Digilent陀螺仪L3G4200D Pmod模块

2. 应用实例

工作原理

陀螺仪Pmod控制器主要由状态机和SPI主控组件构成。

状态机

该设计使用图3所示的状态机实现其操作。组件启动后立即进入初始( start )状态。 它会在此状态保持100毫秒,确保Pmod有充足时间完成上电。随后进入配置 (configure) 状态,向陀螺仪控制寄存器写入数据,设置采样率和带宽,并使陀螺仪从默认省电模式切换至正常工作模式。暂停 (pause) 状态会在SPI事务之间(即两次陀螺仪读数之间)插入1毫秒间隔。在读取数据(read_data)状态中,控制器从陀螺仪获取三轴最新角速率数据,随后进入输出结果 (output_result) 状态。输出结果 (output_result) 状态将数据写入angular_rate_xangular_rate_yangular_rate_z 输出总线,然后返回暂停 (pause) 状态。任何时候重置组件都会使其返回初始 (start) 状态。

3. 状态图

SPI 主控

配置 (configure)读取数据 (read_data) 状态期间,状态机通过控制SPI主控(SPI Master)组件与Pmod上的陀螺仪通信。SPI主控组件文档详见此处

本设计采用CPOL='1’且CPHA='1’模式的SPI主控实现。根据系统时钟频率(通过clk_freq 通用参数指定,见下文)设置clk_div 参数,使陀螺仪通信速率接近5MHz。

本设计还利用SPI主控(SPI Master)的连续模式(Continuous Mode)特性执行可变长度的通信事务。配置状态的通信事务长度为16位,而读取数据 (read_data) 状态的通信事务由56位构成。

配置陀螺仪 Pmod 控制器

通过设置实体中的通用参数来配置陀螺仪Pmod控制器(Gyro Pmod Controller)。

系统时钟频率

必须将通用参数clk_freq 设置为clk 端口提供给陀螺仪Pmod控制器的系统时钟频率。

数据速率与带宽

通用参数data_rate 定义L3G4200D陀螺仪的采样频率。该参数为对应目标数据速率的编码值。同样地,通用参数带宽**(bandwidth) 是一个对应所需带宽的代码。带宽取决于数据速率。下表1列出了可用的选项。

1. 数据速率(Data Rate)与带宽(Bandwidth)选项

端口描述

表2描述了陀螺仪Pmod控制器(Gyro Pmod Controller)的端口。

2. 端口描述

连接

当使用SPI通信时,该Pmod配备了一个12针直角连接器J1。表3提供了该连接器的引脚定义。陀螺仪Pmod控制器的端口需按所列分配至连接器对应的FPGA引脚。

3. 陀螺仪Pmod J1引脚定义及与陀螺仪Pmod控制器的连接

复位

reset_n 输入端口必须保持逻辑高电平,陀螺仪Pmod控制器组件才能工作。该端口低电平时将异步复位组件。复位期间,组件会中止与Pmod的当前事务,并清除angular_rate_xangular_rate_yangular_rate_ z数据输出。复位释放后,陀螺仪Pmod控制器将重新开始运行。它会重新配置陀螺仪,然后继续收集并输出角速率数据。

结论

该陀螺仪Pmod控制器是可编程逻辑组件,用于连接Digilent的Pmod GYRO(陀螺仪L3G4200D Pmod)。它负责处理与该Pmod的所有通信,包括配置Pmod陀螺仪的数据速率和带宽、激活测量,并通过3个并行输出总线持续提供更新的角速率数据(每个轴对应一个总线)。

相关主题

SPI主控制器(VHDL)