代码下载
陀螺仪 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_x 、angular_rate_y 和angular_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_x 、angular_rate_y 和angular_rate_ z数据输出。复位释放后,陀螺仪Pmod控制器将重新开始运行。它会重新配置陀螺仪,然后继续收集并输出角速率数据。
结论
该陀螺仪Pmod控制器是可编程逻辑组件,用于连接Digilent的Pmod GYRO(陀螺仪L3G4200D Pmod)。它负责处理与该Pmod的所有通信,包括配置Pmod陀螺仪的数据速率和带宽、激活测量,并通过3个并行输出总线持续提供更新的角速率数据(每个轴对应一个总线)。





