DAC AD5541A Pmod控制器(VHDL)

逻辑主页

下载

DAC AD5541A Pmod控制器(顶层文件): pmod_dac_ad5541a.vhd (7.7 KB)
SPI主控(必须同时包含在项目中): spi_master.vhd (8.8 KB)

特性

  • 用于Digilent Pmod DA3(针对Analog Devices AD5541A数模转换器的Pmod)的简化接口VHDL源代码
  • 通过简单并行接口接收数据以控制DAC
  • 包含更新使能功能,可选择性控制DAC输出更新的时序
  • 处理与DAC Pmod的所有串行通信
  • 可配置系统时钟频率

简介

本文详述了一个VHDL组件,用于处理与Digilent DAC AD5541A Pmod的接口,如图1所示。图2展示了该DAC Pmod控制器集成到系统中的典型示例。如图所示,DAC Pmod控制器连接到Pmod端口并执行设置DAC输出的传输操作。数据通过简单并行接口锁存,可连接至用户逻辑或FPGA的输入端口。更新信号控制DAC何时输出接收到的数据。


1. Digilent DAC AD5541A Pmod


2. 示例实现

背景

DAC AD55541A Pmod提供1通道16位数模转换器。该Pmod还包含2.5V ADR441电压基准源。16位数据分辨率对应约0.038mV/比特。

操作原理

DAC Pmod控制器采用一个简单的状态机及技术论坛提供的SPI主控组件,将数据载入AD5541A的数据寄存器。当update_output_n 端口为’0’时,AD5541A的输出会从其数据寄存器更新。因此,若保持update_output_n 端口为’0’,数据寄存器更新时输出会立即随之更新。亦可通过将update_output_n 端口置为低电平脉冲,精确控制输出更新的时序。

状态机

该设计采用图3所示的状态机实现其操作。组件启动后立即进入开始状态。在此状态保持100微秒,确保Pmod有充足的上电时间。随后进入暂停状态。此处确保与DAC(AD5541A数据手册规定最小15纳秒)的事务间隔至少20纳秒。接着取消忙( busy 信号,表明DAC Pmod控制器已准备好与DAC Pmod进行新事务,并进入就绪( ready 状态。在就绪( ready 状态等待,直到dac_tx_ena 使能信号激活时,锁存新事务数据并进入发送数据( send_data 状态。在此状态下执行与Pmod的事务后,返回暂停( pause )状态。虽未图示,但任何时候重置组件都会使其返回开始( start )状态。


3 状态图

SPI 主控

在*发送数据(*send_data 状态期间,状态机控制SPI主控组件与Pmod上的DAC通信。SPI主控组件文档见此

为满足AD5541A转换器要求,SPI主控配置为CPOL=0且CPHA=0。

时钟配置

通过为ENTITY中定义的GENERIC参数clk_freqspi_clk_div 赋值,配置该DAC Pmod控制器的时钟。clk_freq 参数必须设置为clk 输入端口提供的系统时钟频率(单位MHz)。公式1定义了spi_clk_div 值的计算方法。

04_00

其中fclk 表示所提供系统时钟的频率,单位为MHz。

例如,代码中指定的默认值为spi_clk_div = 1。这是因为该组件是在使用50 MHz系统时钟的情况下开发和测试的。50/100 = 0.5,向上取整为1。任何clk_freq ≤ 100 MHz都会导致默认的spi_clk_div = 1。

公式2定义了由此产生的串行时钟频率fsclk

此计算确保在3.3V供电时,串行时钟低于DAC规定的最大通信频率50 MHz。当输入时钟频率(以MHz为单位)为100的整数倍时,通信速度最快。

事务

DAC Pmod控制器通过其busy 口输出指示其可用性。当busy 信号为’0’时,控制器准备接受发送到DAC Pmod的事务。置位dac_tx_ena 输入会锁存dac_data 的当前值。一旦锁存,控制器会置位busy信号,表示正在进行事务,当前不可用。当事务完成时,控制器再次取消busy 信号的置位,表示已准备好接受下一个请求。

事务示例

图4展示了一个事务示例。busy 信号为’0’。用户逻辑随后置位dac_tx_ena 信号,将dac_data 总线上的数据发送到DAC。控制器置位busy 信号,表示请求已锁存,此时用户逻辑可以取消dac_tx_ena 信号的置位。控制器向DAC Pmod发送串行通信,完成后取消busy 信号的置位。

如果dac_tx_ena 信号未被取消,一旦控制器可用,新的请求会被立即锁存并开始处理。

在此示例中,用户逻辑在请求向DAC发送新数据时将update_output_n 信号置为高电平。因此,DAC的输出不会在接收到新数据时立即更新。相反,它会在update_output_n 信号取消置位(从而取消DAC的ldac_n 信号)后更新。


4 事务处理示例

端口描述

表1描述了DAC Pmod控制器的端口。

1. 端口描述

连接方式

该Pmod配备一个6针连接器J1。表2提供了该连接器的引脚定义。需将DAC Pmod控制器的端口分配至FPGA引脚,这些引脚已按所列方式路由至连接器。

2. DAC Pmod引脚定义及与DAC Pmod控制器的连接

复位

reset_n 输入端口必须保持逻辑高电平,DAC Pmod控制器组件才能运行。该端口低电平时将异步复位组件。复位期间,组件会中止与DAC Pmod的当前事务,并将busy 输出置高表示不可用。复位释放后,DAC Pmod控制器将重新开始运行。

结论

本DAC Pmod控制器是可编程逻辑组件,可与Digilent的DAC AD5541A Pmod对接。它简化了与DAC的数据事务处理,并包含更新输出使能功能。

相关主题

SPI主控制器(VHDL)