代码下载
环境光传感器Pmod控制器(顶层文件): ambient_light_sensor.vhd (4.0 KB)
SPI主控制器(必须包含在项目中): spi_master.vhd (8.8 KB)
特点
- 针对Digilent环境光传感器Pmod(PmodALS)的简化接口VHDL源代码
- 持续通过并行接口输出最新环境光数据
- 处理SPI通信及ALS Pmod的所有数据获取
- 可配置系统时钟频率
介绍
本文详述了与Digilent环境光传感器Pmod接口对接的VHDL组件,如图1所示。图2展示了该ALS Pmod控制器集成至系统的典型实例。如图所示,ALS Pmod控制器连接Pmod端口并执行事务以获取ALS数据。数据随后通过并行接口呈现,可连接至用户逻辑或FPGA的输出端口。该组件使用Vivado 2017.2设计。资源需求取决于具体实现方式。
图 1. Digilent ALS Pmod模块
图 2. 实现示例
背景
ALS Pmod采用Vishay Semiconductor的环境光传感器TEMT6000X01测量可见光。德州仪器的模数转换器ADC081S021将传感器输出电压转换为数字值,并在请求时通过SPI接口传输该值。
操作原理
ALS Pmod控制器利用技术论坛提供的SPI主控组件持续启动读数,并从ALS Pmod获取结果数据。完成后,接收数据将通过 als_data 端口提供,控制器立即重启该流程。由此持续更新环境光数据,用户无需额外操作。
SPI主控配置为CPOL=1且CPHA=1,以满足通信对象(ALS Pmod的ADC)作为SPI从机的要求。SPI主控的 使能 (enable) 端口保持高电平,组件将在当前事务完成后立即于下一个系统时钟周期启动新事务。
公式1定义了输出数据的更新频率。该频率受用户提供的clk 输入端口系统时钟频率及spi_clk_div GENERIC赋值影响。(配置时钟章节详述了如何正确设置spi_clk_div )。
ASL Pmod控制器设置为在保持SPI时钟速率不超过其4 MHz规定上限的同时,为给定系统时钟提供最快的更新速率。当提供的系统时钟为8的整数倍时,最快速率可达约242 kHz。
时钟配置
该ALS Pmod控制器的时钟配置通过为ENTITY中定义的GENERIC spi_clk_div赋值来实现。公式2定义了该值的计算方法。
其中fclk 表示所提供系统时钟的频率(单位MHz)。系统时钟通过clk 输入端口提供。
例如,代码中指定的默认值为spi_clk_div = 13。这是因为撰写本文时最常见的Digilent开发套件Basys3的系统时钟为100 MHz。100/8 = 12.5,向上取整为13。
公式3定义了由此产生的SPI时钟频率fsclk 。
该计算确保SPI时钟接近但不超出4 MHz的最大指定SPI通信频率,从而在给定系统时钟下提供最大的ALS数据更新频率。
端口描述
表1描述了ALS Pmod控制器的端口。
表 1. 端口描述
连接方式
该Pmod配备一个6针连接器。表2提供了该连接器的引脚定义。ALS Pmod控制器的端口需按所列分配至路由至该连接器的FPGA引脚。
表 2. ALS Pmod引脚定义及与ALS Pmod控制器的连接
复位
reset_n 输入端口必须保持逻辑高电平,ALS Pmod控制器组件才能工作。该端口的低电平将异步复位组件。复位期间,该组件会中止与ALS Pmod的当前事务并清除als_data 输出。复位释放后,ALS Pmod控制器恢复运行。
结论
该ALS Pmod控制器是可编程逻辑组件,与Digilent环境光传感器(ALS) Pmod对接。它处理与ALS Pmod的所有通信,通过并行输出持续提供更新的环境光数据流。






