以下是小编为大家整理的基于DSP和CPLD的高精度频率测量系统设计(共含10篇),欢迎阅读与收藏。同时,但愿您也能像本文投稿人“外滩冲浪”一样,积极向本站投稿分享好文章。
基于DSP和CPLD的高精度频率测量系统设计
介绍了以CPLD(Complex Programmable Logic Device)为核心处理芯片的频率测量系统,整个系统由信号调理电路、CPLD和DSP等构成,在CPLD中设计等精度测频模块,再由DSP进行数字滤波并将采集值送至双口RAM以供上位机读取.采用CPLD 配合DSP的设计方案,具有速度高、精度高的.优点,且易于升级和扩展采集能力,具有一定的工程应用价值.
作 者:席鹏 李军 於二军 XI Peng LI Jun YU Er-jun 作者单位:中国航空计算技术研究所,陕西,西安,710068 刊 名:航空计算技术 ISTIC英文刊名:AERONAUTICAL COMPUTING TECHNIQUE 年,卷(期): 40(2) 分类号:V2 关键词:频率测量 CPLD DSP摘要:以Altera公司MAX700旧系列为代表,介绍了CPLD在DSP系统中的应用实例。该方案具有一定的普遍适用性。
关键词:RESET BOOT HPI CPLD的延时 时序
DSP的速度较快,要求译码的速度也必须较快。利用小规模逻辑器件译码的方式已不能满足DSP系统的要求。同时,DSP系统中经常需要外部快速部件的配合,这些部件往往是专门的电路,可由可编程器件实现。CPLD的时序严格、速度较快、可编程性好,非常适合于实现译码和专门电路。本文以MAX7000系列为例,具体介绍其在以TI公司的TMS320C6202为平台的网络摄像机系统中的应用。
(本网网收集整理)
1.1 DSP系统简介
本文所论述的编码器系统是基于DSP的MPEG-4压缩编码器的,主要由前端视频采集、数据预处理以及MPEG-4视频压缩编码三部分组成。基于DSP的MPEG-4编解码器由于其所选用的DSP运算能力强、编程灵活,且实现不同的图像编码算法时只需对DSP内部的程序进行改写便可实现诸如MPEG、H.263等多种图像编码,因而具有良好的应用情景。CPLD芯片对整个编码器起着逻辑控制作用,系统结构如图1所示。
1.2 CPLD在系统中的功能要求
1.2.1 产生复位信号
系统上电时,CPLD产生复位信号,使整个系统中的FPGA和DSP模块复位,进入初始状态;系统上电后,数据采集模块自动启动。
系统内共使用三种电源:5V、3.3V、1.8V。其中,5V电源由供电电源接人,3.3V、1.8V电源由TPS56300(TI产品)提供。采用TPS3307(TI产品)为系统提供电源管理,该芯片可同时管理三种电源。当监测到电源电压低于一定值时,产生复位信号。TPS3307在其自身电源电压大于1V的情况下即可以输出复位信号。?
当系统出现错误时,可以采用手工方式复位。
复位信号产生原理图如图2所示。其中,RST#为整个系统的复位信号,由MAX7000输出。PBSW_RST#为手动复位信号,由按键接人MAX7000,经MAX7000去抖动后输出给TPS3307。SVS_RST#为电源管理芯片TPS3307产生的.复位信号(包括手动复位和电源监控功能)。
1.2.2 BOOT模式的实现
系统复位后,DSP需要进行BOOT自举。在复位信号为低期间,BOOTMODE[4:0]管脚上的设置值被锁存,决定芯片的存储器映射方式以及自举模式。但TMS320C6202没有专门的管脚作为BOOTMODE[4:0]输入管脚,而是将扩展总线的XD[4:0]映射为BOOTMODE[4:0],利用上拉/下拉电阻在复位时进行芯片启动模式设置。总线上的其它位也在复位期间被锁定,决定系统相应的设定值。而扩展总线XD在HPI口读写时要用到,所以使用MAX7000进行隔离。系统处在复位阶段,则通过MAX7000使得DSP的相应管脚的值等于设定值,复位结束后,MAX7000相应管脚为高阻态,使得XD可以作为正常的总线使用。
DSP自举有特定的时间要求。在复位结束后,XD的配置管脚必须保持一段时间,TMS320C6202要求时间为5个时钟周期,例如在200MHz时钟情况下必须保持25ns。
1.2.3 HPI口接口逻辑实现
MPEG-4压缩编码器压缩后的数据,通过网络传输控制模块传输到网络上去,从而实现网络实时图像传输。而DSP与网络传输模块(MCF5272)通过HPI口连接。其接口逻辑由CPLD完成。硬件连线图如图3所示。
根据系统的逻辑要求以及实际的仿真结果,CPLD选用EPM7128SLC84。该芯片共有2500门,128个宏单元,最多100个用户自定义管脚。
2 CPLD逻辑控制的具体实现
2.1 复位信号的实现
复位信号逻辑产生较简单,需要处理的是按键的去抖动。由于按键是机械触点,当机械触点断开、闭合时会有抖动,为使每一次按
键只作一次响应,就必须考虑去除抖动。在通过按键获得复位信号为低的信息时,不是立即认定按键已被按下,而是延时一段时间后再次检测复位信号。如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。同样,在检测到按键释放后,再延时几个毫秒,消除后沿的抖动,然后再对键值处理。由于抖动现象主要出现在按键按下后,采用延时方法可有效地减少按键的抖动现象。
2.2 BOOT模式的实现
为了满足在复位有效期间对相应管脚进行配置,在复位无效时,使管脚进入高阻态。以其中一个管脚为例,采用Verilog语言,用如下语句实现该功能:
assign hd0=(tp4)?rst_hd0:1′bz;
//复位有效期间,tp4为1,hd=rst_hdo,即为设定值;复位无效时,tp4=0,hd为高阻态。
图4
因为DSP自举有特定的时间要求,在复位信号结束后,配置管脚的值必须至少保持25ns。通过对复位信号作一定的延时,可以满足要求。采用CPLD将信号作一定的延时,并不能简单地在信号后串接一些非门或其它门电路,因为开发软件在综合设计时会将这些门作为冗余逻辑处理,达不到延时的效果。所以采用高频时钟驱动一移位寄存器,对移位寄存器进行正确的设置后,输出即为延时后的数据。语句如下:
always@(posedge eclkout2) //采用dsp的clkout=100MHz二分频后作延时
begin
if(svs_rst_) //svs_rst_低电平,count始终置1010
begin
count=4′b1010;
end
else if(count==4′b0000) //0000则保持
begin
count=4′b0000;
end //svs_rst_高电平,count开始计数
else
begin
count=count+4′b0001; //记六次至0000
end
end
assign tp4=count[3];
仿真效果如图4所示。由仿真波形可见,CPLD的信号输出完全符合DSP BOOT的两个要求。
2.3 HPI口接口逻辑的实现
图像压缩编码器通过DSP的HPI口与网络模块连接,实现图像的网络传输。TMS320C6202的HPI口是指其扩展总线的主机口接口部分。经过编码器编码后的MPEG-4图像数据以帧为单位存放在DSP内部存储器中,外部主机通过HPI口读取。现以MCF5272微处理器与HPI口通信为例进行说明。
图5
MCF5272将10/100MB以太网控制器和一个USB模块等通信外围设备结合起来,是一款高集成的ColdFire微处理器。详见参考文献[4]。
MCF5272与TMS320C6202连接采用异步从属工作方式,MCF5272作为上行机,TMS320C6202作为从属机。由MCF5272高位地址线模拟XCNL、XR_W信号,TMS320C6202的多功能串行口3工作在GPIO模式下模拟HINT信号,为MCF5272提供主机口中断。本系统由CPLD――MAX7000编程实现两者硬件接口。仿真后的时序如图5所示,实验证明可以满足双方时序要求,实现数据传输。
以上所讨论的逻辑并不复杂,采用74系列在一定程度上说也可以完成。但是,采用CPLD具有以下优势:体系结构和逻辑单元灵活、集成度高、适用范围广,因而采用CPLD的方案。? 在开发阶段,通过硬件实现的控制信号往往不能确定,需要试验验证。而CPLD因其具有灵活性,逐渐成为DSP进行信号处理不可或缺的协处理器。将相关控制信号接人CPLD,只需通过简单的编程即可实现各种需要的逻辑,避免了硬件上的改动,使硬件逻辑控制更加方便灵活,对类似设计具有普遍意义。文中讨论的防抖动以及CPLD延时程序对于类似设计也有一定的借鉴意义。
本文介绍的CPLD在基于DSP的MPEG-4编码压缩模块的系统中的应用实例,已通过下载验证。应用在工程实践中,结果表明该设计是方便灵活且正确有效的。
基于FPGA的高速高精度频率测量的研究
摘要:以FPGA为核心的高速高精度的频率测量,不同于常用测频法和测周期法。本文介绍的测频方法,不仅消除了直接测频方法中对测量频率需要采用分段测试的局际,而且在整个测试频段内能够保持高精度不变。又由于采用FPGA芯片来实现频率测量,因而具有高集成度、高速和高可靠性的特点。关键词:频率 测量 FPGA 高精度
引言
在电子测量技术中,测频是最基本的测量之一。常用的直接测频方法在实用中有较大的局限性,其测量精度随着被测信号频率的下降而降低,并且对被测信号的计数要产生±1个数字误差。采用等精度频率测量方法具有测量精度,测量精度保持恒定,不随所测信号的变化而变化;并且结合现场可编程门阵列FPGA(Field Programmable Gate Array)具有集成度高、高速和高可靠性的特点,使频率的测频范围可达到0.1Hz~100MHz,测频全域相对误差恒为1/1 000 000,
1 测频原理及误差分析
常用的直接测频方法主要有测频法和测周期法两种。(本网网收集整理)测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Tw。测周期法需要有标准信号的频率fs,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测信号的频率为:fx=fs/Ns。这两种方法的'计数值会产生±1个字误差,并且测试精度与计数器中记录的数值Nx或Ns有关。为了保证测试精度,一般对于低频信号采用测周期法;对于高频信号采用测频法,因此测试时很不方便,所以人门提出等精度测频方法。
等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,测除了对被测信号计数所产生±1个字误差,并且达到了在整个测试频段的等精度测量。其测频原理如图1所示。
在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间τ与预置闸门时间τ1并不严格相等,但差值不超过被测信号的一个周期。
设在一次实际闸门时间τ中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率为
由式(1)可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差为
δ=(|fxc-fx|/fxe)×100% (2)
其中fxe为被测信号频率的准确值。
在测量中,由于fx计数的起停时间都是由该信号的上升测触发的,在闸门时间τ内对fx的计数Nx无误差(τ=NxTx);对fs的计数Ns最多相差一个数的误差,即|ΔNs|≤1,其测量频率为
fxe=[Nx/(Ns+ΔNs)]/fs (3)
将式(1)和(3)代入式(2),并整理得:
δ=|ΔNs|/Ns≤1/Ns=1/(τ・fs)
由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。表1所列为标频在10MHz时闸门时间与最大允许误差的对应关系。
表1 闸门时间与精度的关系
闸门时间/s精 度0.010.1
110 -5
10 -6
10 -7
等精度测频的实现方法可简化为图2所示的框图。CNT1和CNT2是两个可控计数器,标准频率(fs)信号从CNT1的时钟输入端CLK输入;经整形后的被测信号(fx)从CNT2的时钟输入端CLK输入。每个计数器中的CEN输入端为时钟使能端控制时钟输入。当预置门信号为高电平(预置时间开始)时,被测信号的上升沿通过D触发器的输出端,同时启动两个计数器计数;同样,当预置门信号为低电平(预置时间结束)时,被测信号的上升沿通过D触发器的输出端,同时关闭计数器的计数。
2 硬件设计
在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号;而单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求。采用高集成度、高速的现场可编程门阵列FPGA为实现高速,高精度的测频提供了保证。
FPGA是20世纪90年代发展起来的大规模可编程逻辑器件,随着EDA(电子设计自动化)技术和微电子技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工作方式,在超高速、实时测控方面有非常广阔的应用前景;并且FPGA具有高集成度、高可靠性,几乎可将整个设计系统下载于同一芯片中,实现所谓片上系统,从而大大缩小其体积。
整个测频系统分为多个功能模块,如信号同步输入、控制部件、分频和计数部件、定时、脉冲宽度测量、数码显示、放大整形和标频信号等模块。除数码管、放大整形和标频信号外,其它模块可集成于FPGA芯片中,并且各逻辑模块用硬件描述语言HDL来描述其功能,如用VHDL或AHDL来对各功能模块进行逻辑描述。然后通过EDA开发平台,对设计文件自动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程,以实现系统的设计要求。
图3所示为测频主系统框图。一片FPGA(EPF10K10LC84)可完成各种测试功能,可利用单片机完成数据处理和显示输出。在标准频率信号为60MHz的情况下,其测量精度可达到1.1×10 -8,即能够显示近8位有效数字。其中A0~A7和B0~B7为两计数器的计数值输出。计数器是32位二进制计数器(4个8位计数值)。单片机通过[R1,R0]数据读出选通端分别从这两个计数值输出端读出4个8位计数值,根据测频和测脉宽原理公式计算出频和脉冲宽度。STR为预置门启动输入;F/T为测频和测脉宽选择;CH为自校/测频选择;Fa为自校频率输入端;Fs为标准频率信号输入端;Fx为经过放大整形后的被测信号输入端;END为计数结束状态信号。
FPGA中各功能模块如图4所示。
图4中,CH1和CH2为选择器,CH1进行自校/测频选择,CH2进行测频和测脉宽选择。CONTRL1为控制模块,控制被测信号fx和标频信号fs的导通,以及两个计数器(CONTa和CONTb)的计数。CONTa和CONTb为32位计数器,分别以4个8位二进制数输出。
图4 FPGA中各功能模块
FPGA与单片机AT89C51的接口比较简单。图3中的输入/输出端与单片机连接:A[7..0]与单片机P2端口相连接;B[7..0]与单片机P0口相连接;其它输入/输出端与单片机P3口相连接。
结语
随着EDA技术和FPGA集成度的提高,FPGA不但包括了MCU(微控制器或单片机)特点,并兼有串、并行工作方式和高速、高可靠性以及宽口径适用性等诸多方面的特点。单片机完成的数据处理功能也可集成在FPGA芯片中。基于FPGA的电子系统设计仅仅是各种逻辑模块与IP核的逻辑合成和拼装。测频系统的标准信号频率的提高,可进一步提高测频的精度或缩短测频时间。
基于DSP测量组合导航系统设计
随着微机电系统(MEMS)技术的发展,采用MEMS技术的微小型低成本捷联惯性导航系统已成为目前的一个研究热点;而单一的.导航定位定向系统已经不能满足我国在军事领域和民用领域对导航、定位、定向精度的要求,以捷联惯导系统(SINS)和全球定位系统(GPS)相结合构成的组合导航系统以其较高的精度、低廉的成本逐渐被应用于各个领域.本文以MEMS芯片为基础,研究基于DSP测量的低成本SINS/GPS组合导航系统的设计和实现,旨在实现组合导航系统小型化、低成本、高可靠性和智能化.
作 者:刘博为 鲍其莲 仇斌 Liu Bowei Bao Qilian Qiu Bin 作者单位:上海交通大学电子信息与电气工程学院,40 刊 名:电子测量技术 ISTIC英文刊名:ELECTRONIC MEASUREMENT TECHNOLOGY 年,卷(期): 30(10) 分类号:V249.32+8 关键词:组合导航 卡尔曼滤波 DSP测量基于DSP的小型飞行器大气数据测量系统设计
大气数据参数的.采集和处理是保证小型飞行器飞行安全的重要因素.文中论述了小型飞行器大气数据测量系统的工作原理,按照功能将系统进行适当划分,采用DSP作为系统载体,构建了完整的数据测量系统.
作 者:王军强 来新泉 朱明英 WANG Junqiang LAI Xinquan ZHU Mingying 作者单位:王军强,WANG Junqiang(西安电子科技大学,西安,710069;西北工业大学,西安,710072)来新泉,LAI Xinquan(西安电子科技大学,西安,710069)
朱明英,ZHU Mingying(西北工业大学,西安,710072)
刊 名:弹箭与制导学报 PKU英文刊名:JOURNAL OF PROJECTILES, ROCKETS, MISSILES AND GUIDANCE 年,卷(期): 28(1) 分类号:V241.6 关键词:小型飞行器 DSP 大气数据测量基于DSP与CPLD的I2C总线接口的设计与实现
摘要:介绍了一种使用CPLD完成DSP芯片I2C总线接口的设计和实现方案,重点叙述了I2C核的设计思想。关键词:PWMSG3524控制器
带有I2C总线接口的器件可以十分方便地将一个或多个单片机及外围器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。
如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用DSP芯片。但大多数的尚未提供I2C总线接口,本文将介绍一种基于CPLD的已实现的高速DSP的I2C总线接口方案。
图1I2C总线接口电路结构
1I2C通信协议
I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行数据线)及SCL(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。I2C总线接口电路结构如图1所示,I2C总线时序图如图2所示。
I2C总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平则定义为“开始”信号;当SCL为高电平时,SDA由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。
在I2C总线开始信号后,依次送出器件地址和数据,I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。
2设计方案
本文以DSP芯片ADSP21992与时钟芯片PCF8583的控制接口为例,说明基于CPLD的I2C总线接口设计方案。
ADSP21992是2003年最新推出的160MIPS、带CAN通信接口的适合于高精度工业控制和信号处理的高性能DSP芯片。它带有48K片内RAM、SPORT通信接口、SPI通信接口、8通道14位A/D转换器以及PWM等。
PCF8583是一款带有256字节静态CMOSRAM的时钟/日历芯片。地址和数据严格按照双向双线制I2C总线协议传输。内置地址寄存器在每次读/写后自动递增。
2.1系统结构设计
系统的基本功能是通过CPLD的I2C总线接口完成ADSP21992(主控芯片)与PCF8583的数据交换。系统框图如图3所示。
系统主要由两个部分组成:一是DSP与CPLD的接口;另一是I2C核。为了能在DSP指定的时刻读/写PCF8583的数据,使用DSP的读写信号、同步时钟和最高位地址控制数据的传输。最高位地址作为控制信号是因为DSP的I/O口比较少,必须优先供应给其它外设,因此用它来产生DSP提供给I2C核的片选信号。而DSP的地址总线位数较多,最高位一般使用不到,这样正好可以充分利用资源。
2.2I2C核
I2C核原理示意图如图4所示。
整个I2C核由控制模块和I/O模块构成。其中,控制模块包括控制信号发生部分和时钟开关,I/O模块包括数据缓存和同步时钟缓存。
当DSP的最高地址位出现一个有效信号时,便会使I2C核内的触发器产生一个全局使能信号EN?熏它将会启动时钟
、计数器和其它控制信号,但数据不会出现交换。如果此时DSP的读/写同步产生,则会启动相应的读/写进程,进行数据传输。
I2C核的关键技术是:
①用计数器和全局使能信号EN配合触发进程。
由于I2C核的片选信号EN是由触发产生的,不能象电平信号一样由DSP的I/O控制,因此只能通过精确的计数器定时和读/写使能信号共同判别控制。
读/写使能信号WR_EN/RD_EN也象EN那样由触发产生,因此也要用同样的方法判别。
②同步时钟的产生。
从图2中可以看到,数据在同步时钟的高电平脉冲时必须保持稳定,如果此时发生变化将会被视为一个控制信号,而通信也会被中断。因此,同步时钟的高电平脉冲一定要在有效数据的中间出现。而所需的控制信号必须在同步时钟正脉冲的时候出现。
③对数据总线进行三态设置。
因为SDA和DSP_DATA都是双向数据线,在写SDA和DSP_DATA的进程中必须设置高阻态,否则会出现数据线状态“不确定”。
图5I2C核工作时序图
2.3DSP与CPLD的接口模块
根据DSP的时序,DSP与CPLD之间必须根据双方(ADSP21992和PCF8583)的时序制定一个握手协议。当读程序时,由于I2C总线协议只能支持最高400kbit/s的传输速率,而DSP的同步时钟可达几十兆赫。因此,DSP必须等到I2C核把PCF8583的数据读到CPLD后才能获得正确的.数据(这里可以通过设立一个忙标志来实现)。而当写程序时,为了节约CPLD的资源(数据缓存特别占用资源),可以设置DSP定时输出数据给I2C核,让I2C核的一次只送一个数据。
2.4硬件设计
此I2C核可外挂多个带有I2C总线接口的芯片,可以通过发送不同的器件地址来选择。SDA和SCL线必须接上拉电阻。此外,同步时钟不能太高,否则会影响数据传输的稳定性。
2.5时序
(1)I2C核时序
以写为例,I2C核时序如图5所示。
(2)PCF8583时序
PCF8583的数据是8bit一个存储单元,共256个字节,所以只需要8位地址,而且器件本身有两种寻址方式:一种是从指定地址开始递增寻址,另一种是从首地址开始递增寻址。两种寻址方式的时序是不一样的,如图6所示。
图6PCF8583时序图
3实现方法
本系统是选用ALTERA公司CPLD7000S系列EPM7128S芯片,并基于MAXPLUSII开发的。I2C核采用VHDL语言编写,使用SYNPLIFY编译、综合,用AHDL绘成图表,用MAXPLUSII仿真和布局。DSP采用VISUALDSP++2.0编写。最后分别通过JTAG口下载到芯片并联机调试成功。
随着DSP芯片和I2C通信方式的广泛应用,它们之间的接口问题必须得到解决。本文提出的解决方案具有非常好的可移植性和产品开发能力。本系统既可以作为一个单独的系统运行,又可以作为一个通信模块植入一个大系统中,而其中的I2C核又是一个可移植IP核。利用CPLD的逻辑可编程性,还可以在其剩下的资源中再开发所需的逻辑器件,既能降低硬件成本又能大大减小系统主板的面积,使电路的设计更具灵活性。
基于DSP与CPLD的I2C总线接口的设计与实现
摘要:介绍了一种使用CPLD完成DSP芯片I2C总线接口的设计和实现方案,重点叙述了I2C核的设计思想。关键词:PWM SG3524 控制器
带有I2C总线接口的器件可以十分方便地将一个或多个单片机及外围器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。
如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用DSP芯片。但大多数的尚未提供I2C总线接口,本文将介绍一种基于CPLD的已实现的高速DSP的I2C总线接口方案。
图1 I2C总线接口电路结构
1 I2C通信协议
I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行数据线)及SCL(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。I2C总线接口电路结构如图1所示,I2C总线时序图如图2所示。
I2C总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的`方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平则定义为“开始”信号;当SCL为高电平时,SDA由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后, 总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。
在I2C总线开始信号后,依次送出器件地址和数据,I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。
2 设计方案
本文以DSP芯片ADSP21992与时钟芯片PCF8583的控制接口为例,说明基于CPLD的I2C总线接口设计方案。
ADSP21992是2003年最新推出的160MIPS、带CAN通信接口的适合于高精度工业控制和信号处理的高性能DSP芯片。它带有48K片内RAM、SPORT通信接口、SPI通信接口、8通道14位A/D转换器以及PWM等。
PCF8583是一款带有256字节静态CM
[1] [2] [3]
关于高精度轨道绝对坐标测量系统应用的探讨
保证高速列车运营安全和舒适性的首要条件是轨道的高平顺性,轨道的高平顺性依赖于高质量的轨道铺设和养护维修,而获得高质量轨道几何线形的'基础是精密的测量技术,因此.高速有砟轨道建立高精度轨道绝对坐标测量系统,不仅是施工的需要,也是今后线路养护维修工作的基础和保证.建立高精度轨道绝对坐标测量系统在国内具有其先进性和创新性,并具有极高的应有价值,对指导时速200-250 km有砟轨道养护、维修、施工是适宜的.便于操作和实施,具有较高的经济、社会效益.
作 者:蔡杰 应立军 周建 CAI Jie YING Li-jun ZHOU Jian 作者单位:蔡杰,应立军,CAI Jie,YING Li-jun(中南大学,交通运输工程学院,湖南,长沙,410075)周建,ZHOU Jian(湖南省株洲市人民警察学校,湖南,株洲,41)
刊 名:企业技术开发(学术版) 英文刊名:TECHNOLOGICAL DEVELOPMENT OF ENTERPRISE 年,卷(期): 28(3) 分类号:U216.6 关键词:高精度 轨道 绝时坐标测量系统基于CPLD的系统中I2C总线的设计
摘要:在介绍I2C总线协议的基础上,讨论了基于CPLD的系统中I2C总线的设计技术,并结合工程实例设计了I2C总线IP核,给出了部分源代码和仿真结果。关键词:I2C总线 IP核 CPLD
I2C总线是PHILIPS公司推出的新一代串行总线,其应用日渐广泛?1~2?。目前许多单片机都带有I2C总线接口,能方便地实现I2C总线设计;对没有I2C总线的微控制器(MCU),可以采用两条I/O口线进行模拟。在以单片机为MCU的系统中很容易实现I2C总线的模拟扩展,有现成的通用软件包可以使用?2~3?。
对有些基于CPLD的系统,要与带有I2C总线接口的外围器件连接,实现起来相对复杂一些。为实现系统中的I2C总线接口,可以另外引入单片机,也可以采用PCF8584或者PCA9564器件(PHILIPS公司推出的专用I2C总线扩展器)进行扩展,但这样会增加系统成本,使系统冗余复杂。像ALTERA、XILINX等一些大公司有专用的基于CPLD器件的I2C总线IP核,但这些IP核的通用性不强,需要的外围控制信号较多,占用系统很大的资源,因此直接采用这种IP核不可取。
鉴于此,依照I2C总线协议的时序要求,在基于CPLD的系统中开发了自己的I2C总线IP核。对于一些带有I2C总线接口的外围器件较少、对I2C总线功能要求较简单的CPLD系统,自主开发IP核显得既经济又方便。
(本网网收集整理)
1 I2C总线的协议
I2C总线仅仅依靠两根连线就实现了完善的全双工同步数据传送:一根为串行数据线(SDA),一根为串行时钟线(SCL)。该总线协议有严格的时序要求。总线工作时,由时钟控制线SCL传送时钟脉冲,由串行数据线SDA传送数据。总线传送的每帧数据均为一个字节(8 bit),但启动I2C总线后,传送的字节个数没有限制,只要求每传送一个字节后,对方回应一个应答位(Acknowledge Bit)。发送数据时首先发送数据的最高位(MSB)。
I2C总线协议规定,启动总线后第一个字节的高7位是从器件的寻址地址,第8位为方向位(“0”表示主器件对从器件的写操作;“1”表示主器件对从器件的读操作),其余的字节为操作的数据。总线每次传送开始时有起始信号,结束时有停止信号。在总线传送完一个或几个字节后,可以使SCL线的电平变低,从而使传送暂停。
图1列出了I2C总线上典型信号的时序,图2表示I2C总线上一次完整的数据传送过程。
依据I2C总线的传输协议,总线工作时的具体时序如下:
起始信号(S):在时钟SCL为高电平期间,数据线SDA出现由高电平向低电平的变化,用于启动I2C总线,准备开始传送数据;
停止信号(P):在时钟SCL为高电平期间,数据线SDA出现由低电平向高电平的变化,用于停止I2C总线上的数据传送;
应答信号(A):I2C总线的第9个脉冲对应应答位,若SDA线上显示低电平则为总线“应答”(A),若SDA线上显示高电平则为“非应答”(/A);
数据位传送:I2C总线起始信号或应答信号之后的第1~8个时钟脉冲对应一个字节的8位数据传送。在脉冲高电平期间,数据串行传送;在脉冲低电平期间,数据准备,允许总线上数据电平变化。
2 应用实例
2.1 实例模型介绍
现举某应用实例,要求对显示器的视频信号进行采集、处理和再显示,整个系统采用CPLD器件进行控制。信号采集采用A/D公司的专用视频采集芯片AD9883,该芯片在使用前需要依据实际的功能指标进行初始化。初始化过程依靠AD9883的SDA和SCL两引脚进行。在系统中用CPLD器件,ALTERA公司的EPM3256A,实现初始化:按照I2C总线协议向AD9883的19个内部寄存器(01H~13H)写入19组固定的`8位数据;第14H寄存器为只读型同步检测寄存器,仅用于检测几个关键的数据设置。
可见该I2C总线模型如下:单主操作,只实现简单的写和读操作(亦可只有写操作,只是硬件调试的时候会麻烦些),写地址连续,没有竞争和仲裁,是很简单的I2C总线系统。由此设计了如图3所示的IP核。其中,RESET为复位信号,CLK为系统时钟。
为了软件仿真方便,把双向数据线SDA用分离的两条线模拟:SDA为数据输出,SDAACK为SDA的应答信号。软件仿真成功后,只要把SDA设置为双向,稍微修改一下程序就可以向CPLD器件下载,进行实际应用。
对AD
9883内部地址连续的寄存器进行初始化,I2C总线上传输的时序信号依次为:开始信号(S);从器件地址和写操作位(SLAW);内部寄存器基地址(Base Address);写入基地址的数据(Data0);写入下一地址(Base Address+1)的数据(Data1);写入地址(Base Address+2)的数据(Data2);……;写入地址(Base Address+18)的数据(Data18);停止信号(P)。
针对AD9883,如果电路中的A0引脚?55#?接电源,则SLAW=“10011001”;Base Address=“00000001”,Data0~Data18是依据实际需要写入的初始化数据。
2.2 IP核程序的编写
整个程序用VHDL语言编制,SCL输出时钟的设计是基于CLK输入时钟的64分频的。程序由三个状态组成:开始(START)、转换(SHIFT)和应答(ACK)。状态定义如下:
type states is ?start?shift?ack??
signal my_states ?states?
下面给出部分进程的源代码以供参考。
2.2.1开始信号的产生
PROCESS?clk?
if clk’event and clk=‘1’ then
TWCR<=DATAIN?
SCL<=‘1’?
else
TWCR<=?others=>‘0’??
end if?
if TWCR=“10000000” then ――比较寄存器TWCR的开始
值设置(由用户决定)
STRB<=‘1’?
end if?
if STRB=‘1’ then ――开始条件
INT<=INT+“000001”? ――INT为时钟脉冲计数
if INT<=“011000” then ――产生SDA的下降沿
SDA<=‘1’?
else
SDA<=‘0’?
end if?
if INT>=“011110” then ――STRB归0,保证只产生
一次开始信号
STRB <=‘0’?
INT<=“000000”?
end if?
end if?
等所有的初始化数据传输完毕后即产生停止信号,过程与上面相类似,在此省略。
2.2.2 数据转换过程
数据转换过程采用移位传输,传输8位之后即进入应答状态。
when shift=>
if cnt=“010000” then ――cnt为clk脉冲计数,由
实际的时钟频率决定cnt的值
COUNT<=COUNT+“0001”? ――COUNT为数据移位个
数计数?MSR为移位寄存器
MSR<=MSR?6 downto 0?&txtag?
txtag<=‘0’?
if COUNT=“1000” then
my_states<=ack?
TACK<=‘1’? ――TACK为应答标志位
else
SDA<=MSR?7??
my_states<=shift?
TACK<=‘0’?
end if?
end if?
图4 数据传输仿真波形 图5 SDA非应答时的仿真波形
2.2.3 数据输入
一般情况下,I2C总线传输的数据要由外部ROM或其它专门的数据存储区来存储,但在数据相对固定且数据量不是很大的情况下,可以将初始化的数据写在程序中,这样可减少频繁的数据交换,简化操作。AD9883的初始化数据就属于这种情况,可以通过检测应答信号来改变输入的值。程序如下:
PROCESS?clk? ――数据输入
if clk’event and clk=‘1’ then
CASE ackint IS ――ackint为应答计数,每应答
一次,输入改变一次
when “00000”=> DATAIN<=“10000000”?
when “00001”=> DATAIN<=“01010010”?
when “00010”=> DATAIN<=“11010000”?
……
when “10010”=> DATAIN<=“00000000”?
when “10011”=> DATAIN<=“00000000”?
when others=> DATAIN<=“ZZZZZZZZ”?
END CASE?
end if?
2.3 仿真结果
把自主开发的IP核置于MAX+PLUS II 10.0开发环境下,选用EPM3128ATC100-10器件,经过编译、调试与仿真,证明该程序符合设计要求。图4是模拟产生开始信号并传输两组二进制数据“10011001”和“10101010”(十进制表示为153和170)的仿真波形。图5是传输数据“10011001”后没有应答时的仿真结果,此时总线处于暂停状态。
仿真完成后,通过编程电缆将pof文件下载到实际电路的EPM3128ATC100-10中,然后对AD9883进行初始化,结果工作正常,这进一步验证了采用该自主开发的IP核完全可满足I2C总线的时序要求,能实现I2C总线的功能。
★ 教学系统设计
★ 教学系统设计论文