open_prj22_IIC读写EEPROM、AD/DA、PLSYSMON

IIC读写EEPROM

EEPROM简介

a)EEPROM(Electrically Erasable Progammable Read Only Memory,E2PROM)是指带电可擦可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失),E2PROM有多种类型的产品,我们开发板上使用的是ATMEL公司生产的AT24C系列的AT24C64这一型号。AT24C64具有高可靠性,可对所存数据保存100年,并可多次擦写,擦写次数达一百万次。

b)一般而言,对于存储类型的芯片,我们比较关注其存储容量。我们这次实验所用的AT24C64存储容量为64Kbit,内部分成256页,每页32字节,共有8192个字节,且其读写操作都是以字节为基本单位。可以把AT24C64看作一本书,那么这本书有256页,每页有32行,每行有8个字,总共有256328=65536个字,对应着AT24C64的64*1024=65536个bit。

c)通常引脚分布

WP(写保护):AT24C64有一个写保护引脚用于提供数据保护,当写保护引脚连接至GND时,芯片可以正常写,当写保护引脚连接至VCC时,使能写保护功能,此时禁止向芯片写入数据,只能进行读操作。

IIC时序

a)

图中①:总线空闲状态,在I2C器件开始通信(传输数据)之前,串行时钟线SCL和串行数据线SDA线由于上拉的原因处于高电平状态,此时I2C总线处于空闲状态。

图中②:起始信号,如果主机(此处指FPGA)想开始传输数据,只需在SCL为高电平时将SDA线拉低,产生一个起始信号。

图中③:数据传输状态,主机可以向从机写数据,也可以读取从机输出的数据,数据的传输由双向数据线(SDA)完成。

图中④:停止状态,当数据传输完成,主机只需产生一个停止信号,告诉从机数据传输结束,停止信号的产生是在SCL为高电平时,SDA从低电平跳变到高电平,从机检测到停止信号后,停止接收数据,并且I2C总线跳转回总线空闲状态。

b)我们在起始信号之后,主机开始发送传输的数据;在串行时钟线SCL为低电平状态时,SDA允许改变传输的数据位(1为高电平,0为低电平),在SCL为高电平状态时,SDA要求保持稳定,相当于一个时钟周期传输1bit数据,经过8个时钟周期后,传输了8bit数据,即一个字节。第8个时钟周期末,主机释放SDA以使从机应答,在第9个时钟周期,从机将SDA拉低以应答;如果第9个时钟周期,SCL为高电平时,SDA未被检测到为低电平,视为非应答,表明此次数据传输失败。第9个时钟周期末,从机释放SDA以使主机继续传输数据,如果主机发送停止信号,此次传输结束。我们要注意的是数据以8bit即一个字节为单位串行发出,其最先发送的是字节的最高位。

c)IIC读写时序

1)单次写

根据器件类型,我们需要先判断使用的器件是单字节地址还是双字节地址,若为双字节地址,先向从机写入高8位地址,且高位在前低位在后;待接收到从机回传的应答信号,再写入低8位地址,且高位在前低位在后。

2)连续写

对于AT24C64的页写,是不能发送超过一页的单元容量的数据的,而AT24C64的一页的单元容量为32Byte,当写完一页的最后一个单元时,地址指针指向该页的开头,如果再写入数据,就会覆盖该页的起始数据。

3)当前地址读

4)随机地址读

我们需要使从机内的存储单元地址指针指向我们想要读取的存储单元地址处,所以首先发送了一次Dummy Write也就是虚写操作,只所以称为虚写,是因为我们并不是真的要写数据,而是通过这种虚写操作使地址指针指向虚写操作中字地址的位置,等从机应答后,就可以以当前地址读的方式读数据了,随机地址读是没有发送数据的单次写操作和当前地址读操作的结合体。

实验框图

a)

AD实验

概述

a)

ATK_DUAL_HS_AD模块使用的AD芯片型号为3PA1030,其输入模拟电压转换范围是0V-2V,所以电压输入端需要先经过电压衰减电路,使输入的-5V-+5V之间的电压衰减到0V-2V之间,然后再经过3PA1030芯片将模拟电压信号转换成数字信号。

b)3PA1030是一款思瑞浦推出的单电压芯片,其模数转换位数为10位(即分辨率为2ˆ10=1024),最大转换速度为50MSPS(每秒采样百万次,Million Samples per Second),集成片上采样保持放大器和基准电压源。具有高性能低功耗的特点。3PA1030在时钟CLK的驱动下工作,3PA1030内置片内采样保持放大器SHA,同时采用多级差分流水线架构,保证了50MSPS的数据转换速率下全温度范围内无失码;3PA1030内部集成了基准源,根据系统需要也可以选择外部高精度基准满足系统的要求。

3PA1030输出的数据以二进制格式表示,当输入的模拟电压超出量程时,会拉高OVR信号;当输入的模拟电压在量程范围内时,OVR信号为低电平,因此可以通过OVR信号来判断输入的模拟电压是否在测量范围内。另外3PA1030有一个OE信号,当该信号为高电平时3PA1030输出呈高阻态,低电平则可以正常输出。

需要注意的是,3PA1030芯片的最大转换速度是50MSPS,即输入的时钟最大频率为50MHz。3PA1030支持输入的模拟电压范围是0V~2V,0V对应输出的数字信号为0,2V对应输出的数字信号为1023。而ATK_DUAL_HS_AD模块的输入电压范围是-5V-+5V,因此在3PA1030的模拟输入端增加电压衰减电路,使-5V-+5V之间的电压转换成0V-2V之间。那么实际上对我们用户使用来说,当3PA1030的模拟输入接口连接-5V电压时,AD输出的数据为0;当3PA1030的模拟输入接口连接+5V电压时,AD输出的数据为1023。

硬件设计

原理图→实物图→引脚接口与功能描述

实验任务

程序设计

a)总体模块设计

因为我们需要驱动AD芯片,并用ILA来观察ADC数据,所以PLL需输出两路时钟信号,分别为50MHz的ADC驱动时钟;50MHz相位偏移180度的ILA采样时钟。当然ADC驱动时钟大家也可以设置为其它频率,只要不超过50MHz即可。需要注意的是,理论上ILA采样时钟(也可以称为处理ADC数据的时钟)要与ADC驱动时钟的频率相同,相位相反(即相位偏移180度),但是如大家在使用时发现在排除硬件问题后,采集的数据仍然存在些许毛刺的话,可以通过调整ILA采样时钟的相位来消除毛刺。

b)模块端口与功能描述

c)关键IP核的配置

d)顶层模块设计

e)下载验证

DA实验

概述

a)概述

b)DA芯片(3PD5651E)输出的是一对差分电流信号,通过高性能和高带宽的运放电路,实现差分变单端以及幅度调节等功能,使整个电路性能得到了最大限度的提升,最终输出的模拟电压范围是-5V~+5V。

c)关键芯片的技术概况

1)3PD5651E是3PEAK公司(思瑞浦微电子科技股份有限公司)生产的DAC系列数模转换器,具有高性能、低功耗的特点。3PD5651E的数模转换位数为10位(即分辨率为2ˆ10=1024),最大转换速度为125MSPS(每秒采样百万次,Million Samples per Second)。

2)

3)3PD5651E在时钟CLOCK的驱动下工作,内部集成了+1.1V参考电压(+1.10V REF)、运算放大器、电流源(CURRENTSOURCE ARRAY)和锁存器(LATCHES)。两个电流输出端IOUTA和IOUTB为一对差分电流,当输入数据为0(DB[9:0]=10'h000)时,IOUTA的输出电流为0,而IOUTB的输出电流达到最大(最大值的大小跟参考电压有关);当输入数据全为高电平(DB[9:0]=10'h3ff)时,IOUTA的输出电流达到最大(最大值的大小跟参考电压有关),而IOUTB的输出电流为0。

4)

数据在时钟的上升沿锁存,因此我们可以在时钟的下降沿发送数据,这样可以使DA芯片在数据的中央采样,保证数据采样的准确性。需要注

意的是,CLOCK的时钟频率越快,3PD5651E的数模转换速度越快,3PD5651E的时钟频率最快为125Mhz。

5)IOUTA和IOUTB为3PD5651E输出的一对差分电流信号,通过运放电路输出模拟电压信号,电压范围是-5V至+5V之间。当输入数据等于0时,3PD5651E输出的电压值为5V;当输入数据等于10'h3ff时,3PD5651E输出的电压值为-5V。

硬件设计

原理图→实物图→接口与功能描述

实验任务

程序设计

a)总体模块设计

b)关键IP配置

c)子模块设计

背景→模块框图→接口与功能→设计波形图→代码→仿真代码→仿真波形图→引脚约束/时序约束等→上板波形图

高速AD/DA实验

概述

a)ADC

1)在实际应用中,ADC的转换速率(常用单位为KSPS/MSPS,即kilo/Million Samples per Second,表示每秒采样千/百万次)和分辨率(或者说精度)是我们最关注了两个参数指标,转换速率决定了模拟值转换为数字值的速度;分辨率由ADC芯片的数据位宽决定,数据位宽越大,分辨率就越高,采集的电压值也就越精确。这里我们用到的AD9280/3PA9280芯片的最大转换速率为32MSPS(即每秒最多采集32_000_000个点),数据位宽为8位(即分辨率为2ˆ8=256)。除此之外,在一些工程项目中,我们也会关注到如下表所示几个参数指标:

①参考电压:在ADC转换过程中,通过将其与已知电压进行比较来找到未知电压的值,这个已知电压,称为参考电压。未知电压=ADC数值*(参考电压/ADC分辨率);

②量化误差:由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。

③满刻度误差:满刻度输出时对应的输入信号与理想输入信号值之间的差值。

④线性度:输入电压做等量增加时,ADC数值理论上也应该是等量增加的,但实际上会存在一定的偏差。

b)ADC的分类

1)积分型:积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是抗干扰能力强,用简单的电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低,属于毫秒级的低速ADC。

2)逐次比较型:逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB(最高位)开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出数字值。其电路规模属于中等。其优点是速度较高(属于微秒级的中速ADC)、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。

3)并/串行比较型:并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称flash(快速)型。由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。串并行比较型AD的结构介于并行比较型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为half flash(半快速)型。还有分成三步或多步实现AD转换的叫做分级(Multistep/Subrangling)型AD;而从转换时序角度又可称为流水线(Pipelined)型AD,这类AD速度比逐次比较型高(属于纳秒级的高速ADC),电路规模比并行型小。这里我们用到的AD9280/3PA9280芯片就属于这一类型。

4)Σ-Δ(Sigma-delta)调制型:Σ-Δ型AD由积分器、比较器、1位DA转换器和数字滤波器等组成。其工作原理是对输入的模拟信号进行反混频滤波,然后输入到sigma-delta调制器调制成低精度高采样率的数字信号,最后通过抽样滤波器变为低采样率高精度的数字信号,主要用于音频采集。

5)电容阵列逐次比较型:电容阵列逐次比较型AD在内置DA转换器中采用电容矩阵方式,也可称为电荷再分配型。一般的电阻阵列DA转换器中多数电阻的值必须一致,在单芯片上生成高精度的电阻并不容易。如果用电容阵列取代电阻阵列,可以用低廉的成本制成高精度的单片AD转换器。最近的逐次比较型AD转换器大多为电容阵列式。

6)压频变换型:压频变换型(Voltage-Frequency Converter)是通过间接转换方式实现模数转换的。其原理是先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。从理论上讲这种AD的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度即可。其优点是分辩率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。

c)DAC

1)DAC的参数指标

①转换速率:数字值转换为模拟值的速度,常用单位为KSPS/MSPS,即kilo/Million Samples per Second,表示每秒采样千/百万次。

②分辨率:由DAC芯片的数据位宽决定,数据位宽越大,分辨率就越高,对应的输出电压值也就越精确。

③线性度:DAC的数字输入量作等量增加时,理论上模拟输出电压也应作等量增加,但实际上会存在一定的偏差。

④转换精度:D/A转换器的转换精度与D/A转换器的集成芯片的结构和接口电路配置有关。在不考虑其他D/A转换误差的情况下,D/A的转换精度就是其分辨率的大小,因此要获得高精度的D/A转换结果,首先要保证选择的D/A转换器有足够的分辨率。除此之外D/A转换精度还与外接电路的配置有关,当外部电路或电源误差较大时,会造成较大的D/A转换误差,当这些误差超过一定程度时,D/A转换就会产生错误。

d)DAC分类

1)权电阻网络DAC:结构简单,使用电阻元件数少;但电阻种类多,且电阻阻值差别大,很难集成,精度不易保证。

2)T型电阻网络DAC:输出只与电阻比值有关,且电阻取值只有两种,易于集成;但电阻网络各支路存在传输时间差异,易造成动态误差,对转换精度和转换速度有较大影响。

3)倒T型电阻网络DAC:既具有T型网络的优点,又避免了它的缺点,转换精度和转换速度都得到提高。

4)权电流型DAC:引入了恒流源,减少了由模拟开关导通电阻、导通压降引起的非线性误差,且电流直接流入运放输入端,传输时间小,转换速度快;但其电路较复杂。这里我们用到的AD9708/3PD9708芯片就属于这一类型。

硬件设计

实验任务

程序设计

a)

b)实验中我们的ila采样时钟频率为25MHz,而JTAG下载器默认的时钟频率为15MHz(也可能是其它频率,不同下载器的默认时钟频率可能存在差异),因为不满足ILA采样时钟频率不得低于JTAG下载器时钟频率的2.5倍的要求,所以我们需要将JTAG下载器的时钟频率降下来(至少降到10MHz),否则的话ila会采集不到数据。

PLSYSMON实验

概述

a)系统监视器(System Monitors)是MPSoC中用来测量电压和温度的模块,能够将电压和温度信息提供给系统的其它部分,包括平台管理单元PMU、实时处理单元RPU、应用处理单元APU。MPSoC中有两个SYSMON模块:PL端SYSMON模块、PS端SYSMON模块。

b)PLSYSMON模块内部包含片上温度和电压传感器,能监控PL的核心温度和多个内部PL或PS电压节点。用户可以设置报警阈值,用来检测温度过高或者供电电压异常等事件。除此之外,通过内部的模拟多路复用器,它还支持最多17路外部模拟输入信号的测量,且支持单极和双极等信号类型。PL SYSMON使用VCCAUX和VCCADC作为供电电压,当PS访问PLSYSMON时,需要额外的VCCINT供电。PS端可以通过寄存器组配置PL SYSMON。PL SYSMON的控制和配置寄存器也可以通过PL域内的JTAG、IIC、DRP(Dynamic Reconfiguration Port)接口访问。

c)MPSoC中PS SYSMON和PL SYSMON模块都属于SYSMONE4结构,结构上存在很多相似之处。其中PL SYSMON模块框图如下图所示:

d)PL SYSMON内部集成了10位的ADC模块,可以将输入的模拟量转换成数字量,该ADC支持的转换速率为200KSPS(每秒20万次采样)。PL SYSMON单元能够监控PL内的电压节点,包括多个标准供电电源和四个用户自定义电压节点VUser{0:3}。PL SYSMON也能够测量16组辅助模拟输入VAUX{0:15}和一组专用模拟输入VP_VN。当VAUX{0:15}不作为ADC输入端口时,可以当成普通IO使用。这些外部模拟输入通道测量电压范围为单端无符号0-1V或双端(差分)有符号-0.5V-+0.5V。PL SYSMON也能测量少部分PS内的电压节点。

e)PS和PL的SYSMON模块各自独立运行。运行模式包括单通道读模式,默认序列模式和自动序列模式,SYSMON通常以默认序列模式运行。在默认模式下,可以通过CONFIG_REG寄存器将SYSMON配置成自定义序列。单通道读模式一次只能测量一个通道的传感器信号。而在自动序列模式下,SYSMON模块可以一次或连续对打开的通道列表进行顺序访问。模拟输入按照固定顺序进行分时多路复用,并且每次只有一路信号

送给ADC输入。读取每个通道的测量值时,可以启用平均测量的功能,以输出较稳定的测量值。

硬件设计

a)

相关推荐
cjie2212 小时前
仿真xilinx库加glbl()的作用
fpga开发
禾刀围玉4 小时前
基于FPGA的卷积神经网络实现-方案构想
人工智能·fpga开发·cnn
Aaron15886 小时前
全频段 SDR干扰源模块解决方案(星链干扰、LORA无人机干扰)
人工智能·算法·fpga开发·硬件架构·硬件工程·无人机·信息与通信
Kent Gu10 小时前
FPGA JTAG确认
fpga开发
北京青翼科技10 小时前
基于VITA57.1的2路125MSPS AD采集、2路250MSPS DA回放FMC子卡丨青翼科技100%国产采集卡
fpga开发·数据采集卡·fmc子卡·ad采集卡
小麦嵌入式21 小时前
FPGA入门(四):时序逻辑计数器原理与 LED 闪烁实现
linux·驱动开发·stm32·嵌入式硬件·fpga开发·硬件工程·dsp开发
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程FPGA基础:呼吸灯实验+RAM/ROM IP设计与验证
网络协议·fpga开发·fpga
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程Vitis开发:PS端IIC通信
fpga开发·fpga
第二层皮-合肥1 天前
线阵相机坏点校正方案
fpga开发