现在位置 >首页 > 所有 CPLD介绍及应用 分类文章
基于CPLD的CCD驱动电路设计
论述了线阵CCD驱动电路的工作原理和现状,选择基于CPLD驱动线阵CCD工作的方案。采用MAXⅡ器件的EPM240T100C5N为控制核心,以TCD1500C为例,设计了基于CPLD的线阵CCD驱动电路,完成了硬件电路的原理图的设计,并实现了软件调试。通过QuartusⅡ软件平台,对其进行了模拟仿真。实验结果表明,设计基于CPLD解密的线阵CCD驱动电路能够满足CCD工作所需的驱动脉冲。
如何实现高精度的运动装置角度和位移测量,一直是系统或设备设计中需要解决的关键技术之一。随着半导体微电子技术的迅猛发展,各种新型器件不断涌现,其中线阵CCD(Charge Coupled Devices)电荷耦合器件因其所具有的高精度、无接触、高可靠性等优点,应用越来越广泛。
1 总体方案设计
线阵CCD一般不能直接在测量装置中使用,因此CCD驱动信号的产生及输出信号的处理是设计高精度、高可靠性和高性价比线阵CCD驱动模块的关键。
传统驱动CCD的设计方法使CCD的工作频率较慢,信号输出噪声增大,不利于提高信噪比,不能应用于要求快速测量的场合。而用可编程逻辑器件CPLD进行驱动,则可提高脉冲信号相位关系的精度,以及提供给CCD驱动脉冲信号的频率,而且调试容易、灵活性高。目前,在工业技术中,多采用基于CPLD的驱动电路实现线阵CCD的驱动。
2 硬件设计
2.1 CPLD的硬件电路的设计
以CPLD(Complex Programmable Logic Device)器件为核心,设计线阵CCD的驱动电路。然后在其基础上扩展,选择其他元器件,设计出与其相配套的电路部分,经调试后组成硬件系统。
CPLD的电路由5部分组成,有源晶振向EPM240T100CSN的U1A的IO/GCLK0口输入时钟脉冲CLK0,提供了CPLD工作的时钟脉冲,因为时序逻辑的需要。U1C从JTAG端口中下载程序,U1B的52、54、56、58口输出脉冲信号。U1D管脚接3. V电压,U1E管脚接地。
2.2 DC/DC模块的设计
为得到CPLD所需的电压,外接电源需要经过DC/DC模块进行转换。为进一步减少输出纹波,可在输入输出端连接一个LC滤波网络。
2.3 稳压模块的电路设计
由DC/DC模块转换的直流电压,经过一个R11电阻和一个发光二极管接地,发光二极管指示灯,然后从AMS芯片的Vin端输入,进入到芯片的内部,经过一系列的计算,从Vout输出3.3 V电压,GND端端口接地。为消除交流电的纹波,电路采用电容滤波,分别用0.1μF的极性电容和10μF的非极性电容组成一个电容滤波网络。
2.4 CCD电路设计
CCD电路采用TCD1500C,它是一个高灵敏度、低暗流、5340像元的线阵图像传感器。其像敏单元大小是7 μm×7μm×7 μm,相邻像元中心距7μm,像元总长37.38mm。该传感器可用于传真、图像扫描和OCR。TCD1500C的测量精度和分辨率都很高,并且只需4路驱动信号:SH、φ、RS、SP。
2.5 电平转换的电路设计
由于CPLD输出的驱动脉冲电压为3.3 V,而CCD工作所需的驱动脉冲为5 V,所以需要在CPLD和CCD之间加入—个电平转换电路。
3 软件设计
系统软件采用Verilog HDL硬件描述语言,按照模块化的思路设计,将要完成的任务分成为多个模块,每个模块由一个或多个子函数完成。这样能使设计思路清晰、移植性强,在调试软件时容易发现和改正错误,降低了软件调试的难度。程序中尽量减少子函数之间的相互嵌套调用,这样可以减少任务之间的等待时间,提高系统处理任务的能力。
SH是一个光积分信号,SH信号的相邻两个脉冲之间的时间间隔代表了积分时间的长短。光积分时间为5 416个RS周期,对系统时钟进行光积分的分频,实现了SH信号脉冲。在光积分阶段,SH为低电平,它使存储栅和模拟移位寄存器隔离,不会发生电荷转移。时钟脉冲φ为典型值0.5 MHz时,占空比为50%,占空比是指高电平在一个周期内所占的时间比率。它是SH信号和占空比为50%的一个0.5MHz的脉冲信号叠加,所以0.5 MHz的信号和SH信号通过一个或门,就可以实现φ信号;输出复位脉冲RS为1 MHz,占空比1:3。此外,RS信号和SH、φ信号有一定的相位关系,通过一个移位寄存器移相,来实现RS脉冲信号。
4 仿真实验
系统时钟周期部分设置为1 ns,正常工作时复位信号RS为高电平,然后对RS、φ、SH信号进行仿真。
5 结束语
研究的线阵CCD驱动电路主要是以CPLD为驱动中心而设计,这种方案减少了以往驱动电路的电路体积大、设计复杂、调试困难等缺点,增加了系统的稳定性、可靠性,集成度高且抗干扰能力强。通过对硬件和软件大量的模拟实验表明,文中所研究的线阵CCD驱动脉冲信号能够满足CCD工作所需的基本功能,达到了设计要求。
利用单片机实现CPLD的在系统编程
一、问题的提出
嵌入式系统而灵活性的要求。一方面,应用环境会对嵌入式系统不断提出新的要求,需要更改最初的设计;另一方面指生产多个品种时希望尽量能在单一的硬件平台上实现。为了最大限度地满足灵活性的需要,嵌入式系统一般都设计而可编程逻辑器件CPLD。在设计阶段和现场运行之后的各个阶段,都可能会遇到设计的升级、修改和测试问题。FLASH的使用方便了程序的更新;带而在系统可编程(ISP)功能的可编程逻辑器件,使得不需重新设计印制板就可以改变原而的设计;网络技术的发展,又使得远程维护成为可能。
笔者设计的嵌入式系统,实现了远程维护。其中CPLD采用了XILINX公司的XC9500系列。
二、JTAG简介
JTAG简介
JTAG是IEEE的联合测试行动小组(Joint Test Action Group)所制定的测试标准(IEEE1149.1-1990),使得用户可以测试器件的逻辑和相互之间的连接。目前,它是国际上最流行的ICE技术,众多的芯片厂家都在自己的产品中加入JTAG口,以便用户调试。
XILINX的XC9500系列CPLD采用了JTAG的编程和测试指令。XC9500系列CPLD带而测试访问口TAP(Test Access Port),包括4个引脚:
*TDI-测试数据输入;
*TDO-测试数据输出;
*TCK-测试口同步时钟;
*TMS-测试模式选择。
当用基于PC机的编程软件对CPLD进行编程时,PC机的并口经转换板与目标器件的TAP接口相连,完成编程工作。
在本设计上,将MCU的I/O口与CPLD的TAP接口相连,利用MCU的I/O口模拟JTAG测试口的行为,实现对PLD的编程。
三、SVF与XSVF
SVF (Serial Vector Format)格式由TI公司和Teradyne公司于1991年联合开发完成。SVF文件是一个ASCII码文件,用于描述基于IEEE.1119.1 标准的测试模式,包括激励、预期响应和屏蔽数据。开发SVF的初衷就是获得一种独立于供应商的IEEE1149.1标准的测试模式,它能够在各个仿真软件和测试仪器厂商之间进行数据交换,可以应用于从设计验证现场诊断各个阶段。
SVF文件中包含了编程所需要的命令及相应的数据。SVF文件由一系列SVF语句组成。语句以分号结束。每一个语句由一个命令和相关的参数组成。命令分为三类:状态命令、偏移命令和并行命令。其中状态命令说明测试序列如何驱动IEEE1149.1TAP的状态机,包括:
*SDR-扫描数据寄存器;
*SIR-扫描指令寄存器;
*ENDDR-数据寄存器扫描结束;
*ENDIR-指令寄存器扫描结束;
*RUNTEST-进入测试/空闲状态;
*STATE-进入特定状态;
*TRST-驱动TRST为特定电平。
XILINX 的CPLD通过自身的TAP接口接受SVF格式的编程指令和JTAG边界扫描指令。事实上,XILINX提供的JTAGProgrammer编程软件能够自动将标准的JEDEC/BIT格式的编程文件转换为SVF格式;但是SVF文件格式为ASCII码,需要较大的存储空间,并不适合直接用于嵌入式系统。为此,需要一种结构更为紧凑的数据格式-XSVF。
XSVF用与SVF类似的方法描述IEEE1149.1总线的操作。SXVF与SVF的最大区别在于它能获得更大的数据压缩率,从而得到较小的文件。它是二进制格式的。
SVF转换为XSVF可以利用XILINX公司的软件SVF2XSVF.EXE来实现。
四、实现过程
第一步,利用XILINX提供的工具,用原理图或HDL语言设计所需的逻辑,然后进行综合。
第二步,将编程文件输出为标准的JEDEC文件(*.jed)。
第三步,顺JTAGProgrammer环境下,将编程文件进一步转换为SVF文件。
第四步,利用VSF2XSVF软件,将SVF转换为XSVF。
第五步,将二进制的XSVF转换为MCU可接受的相应格式。本设计中采用Intel公司16位单片机,所以生成Intel Hex格式文件。
当需要更新逻辑时,MCU从网络总线上获得更新后的XSVF文件(Intel Hex格式),暂存于RAM空间,然后读取XSVF文件命令,逐条解释,并予以执行,即通过I/O口模拟JTAG的TAP口操作,产生编程指令、数据和控制信号,完成对CPLD的擦除、编程、校验、读写保护设置等项工作。
基于单片机的CPLD/FPGA被动串行下载配置的实现
1 引言
随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流迅猛发展的引擎就是日趋进步和完善的高密度现场可编程逻辑器件设计技术。高密度现场可编程逻辑器件(CPLD/FPGA)能够将大量逻辑功能集成于一个单片IC之中,对基于E2PROM(或Flash Memory)工艺的器件,配置数据在掉电后不会丢失,可以直接采用ByteBlaster并口下载电缆对他们进行配置,但基于该架构的器件的集成度较低,一般在10万门以下;然而对基于SRAM工艺的器件,配置数据在器件掉电后会丢失,但基于该架构的器件的集成度相对较高,一般在1万门以上。
由于当前项目开发中所需使用的可编程逻辑器件的集成度要求越来越高,基于SRAM工艺的器件得到越来越广泛的使用,那么此时如何将配置数据成功地写入目标器件,并且保证其在掉电再上电后能够自动恢复配置数据,成为电子设计工程师能否正确使用基于SRAM工艺的器件必须掌握的一项技术。
针对基于SRAM工艺的器件的下载配置问题,本文介绍采用AT89S2051单片机配合串行E2PROM存储器,实现CPLD/FPGA器件的被动串行(PS)模式的下载配置。
2 系统组成
该系统的硬件电路由AT89S2051单片机、AT24C256串行E2PROM,MAX232串行接口电路、复位及去耦合电路和被配置CPLD/FPGA器件组成。
3 系统硬件设计
(1)单片机 单片机采用ATMEL公司生产的AT89S2051单片机,该芯片与MCS51系列单片机兼容。内含:2 kB Flash E2PROM,128 B RAM,15根I/O引线,2个16位定时器/计数器,1个5向量两级中断结构,1个全双工串行口和1个精密模拟电压比较器等。
(2)串行E2PROM 由于基于SRAM工艺的可编程逻辑器件(CPLD/FPGA)的配置数据在掉电后会丢失,需要外加存储器以保存配置数据。为了尽量减小电路板的面积,选用8 脚的串行E2PROM AT24C256。AT24C256是ATMEL公司生产的2线制串行电可擦写只读存储器,具有自定时写周期特性,容量32 kB。该器件特别适合于对功耗有严格要求的应用场合。
(3)通信接口采用MAXIM公司生产的串行接口芯片MAX232将PC机与下载配置电路连接起来。下载配置电路通过该串口接收PC机下传的命令,执行相应的操作再将处理结果上传到PC机。MAX232是通用+5 V供电的多通道RS232总线收发器,尤其适合在电池供电的系统中应用。
3.1 硬件原理
上电后,单片机首先调用子程序完成如下操作:将掉电前已经存储在AT24C256串行E2PROM中的器件配置文件读出;采用被动串行模式(PS)将该文件配置到CPLD/FPGA器件中,从而实现器件掉电再上电后自动恢复配置数据的功能。然后,单片机就会工作在动态停机状态,在此过程中,单片机可以响应串口中断。
如果单片机响应串口中断并且接收到一个数据,那么单片机首先判断该数据所表示的命令类型,若是配置命令,单片机就进入配置状态。在配置状态下,单片机一边接收配置数据,一边将这些数据写到CPLD/FPGA器件中;若是写E2PROM命令,单片机就进入写E2PROM状态,此时单片机会一边接收配置数据,一边将这些数据写到配置用E2PROM中(注意此时这些数据并没有被配置到CPLD/FPGA器件中);若是读E2PROM命令,单片机就进入读E2PROM并配置CPLD/FPGA器件状态,此时单片机会一边读E2PROM中的配置数据,一边将读出的配置数据写到CPLD/FPGA器件中。
4 系统软件设计
软件包括:主程序、下载配置子程序、写E2PROM子程序、读E2PROM子程序及通用延时子程序构成。
现将以上所提及的各个子程序的用途简介如下:
下载配置子程序的作用是将从串口接收的配置数据直接写到目标器件中,即直接写到可编程逻辑器件(CPLD/FPGA)中。
在编写该子程序时,必须注意目标器件的写入时序。必须根据目标器件生产厂家提供的时序图,用单片机语言编程将其配置时序准确地描述出来,只有这样才能正确地将配置数据写入到目标器件中。
写E2PROM子程序的作用是将从串口接收的配置数据直接写到AT24C256串行E2PROM中保存起来,以备需要时可以用这些保存的数据重新配置器件。读E2PROM子程序的作用是从AT24C256中将配置数据读出,同时将这些配置数据写到目标器件中,以实现对目标器件的重新配置。
在编写这两个子程序时,必须注意AT24C256的数据写入和数据读出时序,只有严格遵守该时序图,才能正确地对该存储器进行读写操作。
通用延时子程序可以灵活地设定延时时间间隔。当程序中需要延时的时候只要先给该子程序提供一个延时时间常数,再调用延时子程序即可。例如,通常在系统复位时为了让处理器复位后系统中其他器件能可靠复位而调用的上电延时子程序就可以采用该通用延时子程序来实现。
5 结语
本系统可用于配置所有ALTERA公司生产的基于SRAM架构的CPLD器件和XILINX公司生产的基于SRAM架构的FPGA器件以及其他主流器件制造公司生产的基于SRAM架构的器件,具有很强的通用性。由于该电路使用的元器件非常少,也可以将其制作成面积很小、便于携带的通用下载配置板使用。该下载配置电路经本人实际制作、调试、使用,其工作稳定可靠,具有很好的应用前景。
利用单片机和CPLD实现直接数字频率合成
直接数字频率合成(DDS)技术是美国学者J.Tierncy,C.M.Rader和B.Gold在1971年首次提出的。这是一种全数字技术,该技术从相位概念出发直接合成所需要的波形。同传统的频率合成技术相比,DDS技术具有很多优点:频率切换时间短、频率分辨率高、相位变化连续、容易实现对输出信号的多种调制等[5]。但是由于当时的技术以及器件水平的限制,它的性能指标还无法与已有的技术相比,因此该技术当时并没有引起足够的重视。最近几年来,随着技术和器件水平的提高,国外一些公司先后推出各种各样的DDS专用芯片,如 Qualcomm公司的Q2230、Q2334, AD公司的AD9955、AD9850等[3]。这些产品的问世,为电路设计者提供了良机,满足了工程实际的需要。然而,商用DDS专用电路芯片也有它的的局限性,并不能满足所有要求。例如,在实现线性调频(LFM)等复杂的调制功能时,利用现有的商用芯片就会遇到一些困难[8]。由于近几年来可编程器件CPLD 、现场可编程门阵列FPGA技术的迅速发展和广泛应用,使用可编程器件实现DDS技术也越来越受到人们的关注。
1 DDS工作原理
DDS工作原理其实质是以参考频率源(系统时钟)对相位进行等可控间隔的采样。DDS包括由相位累加器和ROM查询表构成的数控振荡源(NCO)、DAC以及低通滤波器(LPF)3部分。在每一个时钟周期,N位相位累加器与其反馈值进行累加,其结果的高M位作为ROM查询表的地址,然后从ROM中读出相应的幅度值送到DAC。低通滤波器LPF用于滤除DAC输出中的高次谐波。因此通过改变频率控制字K就可以改变输出频率fout。容易得到输出频率fout与频率控制字K的关系为:fout=Kfc/2N,其中fc为相位累加器的时钟频率,N为相位累加器的位数。
2 系统的总体设计
本系统主要由单片机部分、DDS主通道部分、键盘及显示部分以及输出信号调理等部分组成。
单片机芯片采用的是比较常见的AT80C31芯片。同时片外还各扩展了1片程序存储器2764与数据存储器6264,分别用来存放运行中所需的程序与随机数据。
DDS主通道部分是我们设计的关键所在,该部分主要由相位累加模块、地址总线控制模块、数据总线控制模块与波形数据存储器EPROM、SRAM等组成。其中相位累加模块、地址总线控制模块和数据总线控制模块都是在CPLD上实现,采用的芯片是ALTERA公司的FLEX10K系列器件。我们将所需要合成的波形采样数据固化在EPROM 2764中,但是我们知道EPROM的读周期比较长,很难满足系统的访问时间要求。因此设计中又使用了1片HSRAM,在DDS系统合成波形的过程中,代替ROM进行波形数据的快速查询。
键盘和显示部分是系统和用户进行交互的重要手段。这一部分的逻辑功能,也是在CPLD上实现的。
输出信号调理部分是把从HSRAM中读出的波形的数字幅度值首先转换成模拟信号,然后再进行放大、滤波处理后输出。这一部份包括D/A转换器、幅度放大器和滤波器。DAC器件采用AD公司的12位AD9713B,该器件特点是具有较高的更新速率(100 MSPS)和较低的功耗(725 mW)[1],因此特别适合于DDS信号合成。幅度调节电路使用的是双极性放大器AD708、AD9617和AD9713所组成的电路。
3 系统总体工作状态说明
前面已经提到过,由于EPROM的读取时间比较长,很难满足系统对时间的要求,因此在系统中又增加了1片高速SRAM,作为波形数据缓存器。这样,系统就有两个工作状态:首先,系统开始工作时,需要将波形数据从EPROM调到HSRAM中,即波形数据的加载状态;数据加载完毕后,按照DDS合成原理进行信号合成,即信号的合成状态。系统设计中使用单片机的P1口控制这两种工作状态之间的切换。
3.1 波形数据的加载
单片机系统上电自检完毕后,开始进行波形数据加载过程。此时,地址总线控制模块和数据总线控制模块,将总线的控制权交给单片机系统。在该过程中,EPROM处于读状态,而SRAM为写状态。8031 按照EPROM、SRAM的时序要求,将8 k的波形数据从EPROM加载到HSRAM中。该过程大概需要几毫秒时间。
由此我们知道,用这种方法不仅能够合成标准波形(如:正弦波、方波、三角波等),而且还可以合成各种非标准波形。对此我们只要通过数据采集器或PC机获得8 K的波形数据,然后存入到EPROM中,就可以按所需要的频率输出相应波形。
3.2 波形合成电路的设计
当波形数据加载完毕后,系统就可以进行信号合成。单片机将接收到的频率值转换成频率控制字,送到相位累加器。相位累加器在每一个时钟周期进行相位累加,然后将每次的累加和作为地址去寻址SRAM,读出与该地址所对应的波形幅度值,然后送到D/A转换器转换成模拟信号,最后经幅度放大、滤波输出。
3.2.1 频率值的接收与显示
键盘、显示部分用来实现用户与单片机的交互。系统采用中断查询的方式接收通过键盘输入的频率值。该频率值一方面送到数码显示接口进行显示,另一方面转化成频率控制字送往相位累加模块。
3.2.2 数控振荡源(NCO)设计实现
这一部分是DDS信号合成中的关键部分,由DDS系统原理可知,这一部分主要是由相位累加器、地址总线控制器、数据总线控制器与SRAM组成。其中,除了SRAM外,其余3个模块都是在CPLD上实现。
相位累加器是整个DDS系统运转的关键,它设计的好坏直接影响到整个系统的功能,它实质上是1个带反馈的32位加法器,性能。把输出数据作为另一路输入数据和从微处理器送来的频率控制字进行连续相加,产生有规律的32位相位地址码。设计中采用流水线技术实现32位加法器,通过在组合逻辑之间插入触发器,降低了寄存器之间的传输延时,从而保证系统能够在较高的时钟速度下运行。
地址总线控制模块和数据总线控制模块是根据系统工作状态的不同,对系统的地址总线、数据总线以及控制线进行切换,这一部分的设计比较容易实现,
3.2.3 输出信号调理部分
这一部分是由D/A转换器、幅度放大器和滤波器构成。
DA器件选用的是AD公司的高速芯片9713B,该芯片的输入是12位的。幅度调节电路是由放大器组成。这是1个电流反馈的高速放大电路。它把DA输出的电流转换成电压,通过反馈电阻RFB的电流决定9617输出的幅度。RL和RFF起分流作用,限制用于I/V转换的电流,同时在9617内部提供一个输出电压幅度。流过R2的电流给9617 输出端提供一个直流偏置,调节R1的阻值可以调整偏置电流的大小。整个放大电路最大的幅度是±4.096 V。模拟输出的最后部分是滤波电路,滤波器的选择主要取决与系统所要输出的波形。譬如我们在用DDS技术合成正弦信号时,可以选用椭圆滤波器滤波。
4 结语
与传统的频率合成方法相比,DDS合成方法具有频率切换快、频率分辨率高、相位变化连续等一系列突出优点。使用单片机灵活的控制能力以及良好的人机对话功能与CPLD的高性能、高集成度相结合,能够突破传统设计中的许多设计瓶颈,使系统性能大幅度提高;同时,用这种方法实现的DDS电路具有很大灵活性,它可以根据用户的需要设计,满足用户的特殊要求。因此,该系统具有很好的开发、应用前景。
同时,我们也应该注意到由于DDS数字化实现的固有特点,像相位累加器的相位舍位、波形幅度量化和DAC器件非理想特性,使得输出信号频谱杂散较大。当合成信号的输出频率比较高时,表现得尤为突出,从而限制了输出信号的频率范围。对此,我们一方面在设计过程中应尽量减小能够引起杂散的各种因素,另外更重要的是采取一些便于CPLD实现而同时能够有效降低输出杂散的技术,如对DDS相位累加器的改进[2]、ROM数据压缩[3]、使用抖动注入技术[4]等。从而使开发出的DDS系统性能更加优良。
用CPLD实现单片机与ISA总线并行通信
CPLD(Complex Programmable Logic DEVICE)是一种复杂的用户可编程逻辑器件,由于采用连续连接结构。这种结构易于预测延时,从而电路仿真更加准确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。近年来,由于采用先进的集成工艺和大批量生产,CPLD器件成本不断下降,集成密度、速度和性能大幅度提高,一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,使用CPLD器件可以极大地缩短产品开发周期,给设计、修改带来很大方便[1]。本文以ALteRA公司的MAX7000系列为例,实现MCS51单片机与PC104 ISA总线的并行通信。采用这种通信方式,数据传输准确、高速,在12 MHz晶振的MCS51单片机控制的数据采集系统中,可以满足与PC104 ISA总线接口实时通信的要求,通信速率达200Kbps。
1 系统总体设计方案
本系统用CPLD实现单片机与PC104 ISA总线接口的并行通信。由于PC104主要完成其它方面的数据采集工作,只是在空闲时才能接收单片机送来的数据,所以要求双方通信的实时性很强,但数据量不是很大。因此,在系统设计中单片机中断方式接收数据,PC104采用查询方式接收数据。
在CPLD部分,由一片MAX7000系列中的EPM7128LSC84来实现,用来完成MCS51与PC104ISA总线接口之间的数据传输、状态查询及延时等待。
在PC104 ISA部分,只用到ISA的8位数据总线D[0..7],A[0..9]是PC104的地址总线;IOW和IOR是对指定设备的读写信号;AEN是允许DMA控制地址总线、数据总线及读写命令线进行DMA传输,及对存储器和I/O设备的读写;IOCHRDY是I/O就绪信号,I/O通道就绪为高,此时处理机产生的存储器读写周期为4个时钟周期,产生的I/O读写周期和DMA字节传输均需5个时钟周期,MCS51通过置此信号为低电平来使CPU插入等待周期,从而延长I/O周期;SYSCLK是系统时钟信号,是为了与外部设备保持同步;RESETDR是上电复位或系统初始化逻辑,是系统总清信号。
2 基于MAX+plus II的硬件实现
本系统是用ALTERA公司的CPLD开发工具MAX+plusII。它支持多种输入方式,给设计开发提供了极大的方便。系统的主体部分仍是用原理图输入方式。由于库中提供了现在的芯片,所以使用很方便。
D[0..7] 单片机的8位双向数据总线;
PCD[0..7] ISA接口的8位双向数据总线;
PCRD ISA接口的读有效信号;
PCWR ISA接口的写有效信号;
判断单片机已写数据或读走数据;
PCSTATE 单片机用此查询ISA接口已取走数据;
MSCRD 单片机的读有效信号;
MCSWR 单片机的写有效信号;
INT0 单片机的外部中断信号;
当MCUWR信号有效后,单片机把数据锁存于74LS374(1)中,此时,PCSTATE变为高电平。PC104用STATE信号选通74LS244来判断数据位PCD0是否为高电平,如果为高,说明单片机送来了数据,那么使PCRD有效,从数据存器74LS374(1)中取走数据。此时,PCSTATE变为低电平,单片机通过判断此信号为低电平来判定PC104已取走了数据,可以发下一个数据。
当PCWR信号有效后,PC104把数据锁存于74LS374(2)中,此时,INT0变为低电闰,单片机产生外部中断,使MCSRD信号有效,从数据锁存器74LS374(2)中取走装饰,INT0变为高电平。PC104用STATE信号选通74LS244判断数据位PCD1是否为高电平,如果为高电平,说明单片机取走了数据,可以发送下一个数据。
PC104与单片机进行通信,最关键的就是速度匹配问题。由于PC104的速度快,而单片机的速度较慢,所以,要在PC104的IOCHRDY处插入等待周期,
IOCHRDY 用来使ISA接口等待5个时钟周期;
DLY_D 延时输入信号;
DLY_CK 延时等待时钟信号;
DLY_CLR
等待清除信号,为开始下一次送数周期作准备;
DELAY 延时5个时钟周期后的输出信号,作为DLY_CLR信号的输入;
SYSCLK ISA接口的系统时钟信号。
在MCS51与PC104进行通信的过程中,DLY_D信号一直有效(高电平)。在信号SYSCLK的作用下,每5个时钟周期DELAY信号有效一次,即为高电平。此时DLY_CLR信号有效(低电平),IOCHRDY信号变为高电平,PC104可以读写数据。
地址译码部分采用文本输入方式,用ALTERA公司的硬件设计开发语言AHDL(ALTERA HARDWARE DESCRIPTION Language)。AHDL是一种模块化的高级语言,完全集成于MAX+plusII系统中,特别适合于描述复杂的组合逻辑、状态机和真值表,地址译码部分用文本输入方式,这充分体现了文本输入方式的优点。文本输入内容如下:
SUBDESIGN Address
[...]
CPLD在多功能谐波分析仪设计中的应用
1采样方法比较
对三相电压、电流6路模拟量进行数据采集时,一般有两种方法:
① 同相电压电流交替采样法:在被测信号的一个周期内,采样256点,其中128个奇数点为电压采样点;128个偶数点为电流采样点。采电压和采电流的时差为Δt=T/256(T为被测信号周期)。由Δt引起的同相电压电流的相位误差为δui=360*f*n*Δt(度)。式中f――被测信号频率,n――谐波次数。由上式可知相位误差随时差Δt、谐波次数n增大而增大,这是造成相位差存在并且不一致的根本原因。另外还有一个原因,当电网频率畸变时,由于采样是定时采样,不能跟随频率变化,也会造成测量误差。
② 同相电压电流整周期同步采样法:同相电压、电流采取的是同步采样,分时传输的方法。这样,就不存在时差问题,相位差也就不存在;对于电网频率畸变的问题,常用的方法是锁相环技术。它是通过对电网电压信号取样进行带通滤波,提取出电网基波信号,然后进行整形处理,获得与基波信号频率一致的方波信号,将它进行锁相倍频,获得输出频率为f0=N*fi的方波信号,以此作为整周期同步采样脉冲信号。由此,采样间隔也就随被测信号的频率变化而相应变化,但是,这又增加了硬件的开销。在本设计中,采用的是整周期同步采样方法:由CPLD和单片机配合产生符合要求的整周期同步采样脉冲信号。
2工作原理及硬件构成
2.1系统的工作原理
首先让被测信号经过抗混叠低通滤波器电路进行预处理,对其中1路信号通过测频模块进行精确的频率测量,把频率参数传输到单片机,由其通过运算确定分频系数,然后,回送到CPLD的总控制器中,总控制器由此产生采样脉冲信号。在采样过程中,对于同相电压、电流信号采用的是同步保持,通过多路开关分时采样。其中,3路采样保持器的控制信号Ca,Cb,Cc,多路开关的地址选通信号A1,A2,A3由CPLD控制产生。把选通的1路信号送入AD开始转换,并检测转换结束信号。当一次AD转换结束时,通过RAM地址发生器产生的地址和读写控制时序,把AD转换的结果直接送入双口RAM存储。然后,进行下一次采样。当A相信号采样完成后,就顺序采样B相、C相信号。本设计中的MCS?51单片机主要负责运算及人机接口的管理,这将大大提高整个系统的运行效率,提高了运算的精度,又兼顾了运算的响应速度。
2.2主要硬件的选择
由于CPLD是高速器件,所以在采样频率很高的时候,多路开关和AD转换器就成为制约采样频率的主要因素。当采样频率达到兆级的时候,RAM的存储速度又成为了另外一个制约因素。
在本设计中,要求分析的谐波次数达到50次,被测信号在45Hz~55Hz范围内,频率自动跟随。根据香农定理知:采样频率应该大于或者等于被测信号频率的2倍。要求每个周期采样128点,这样总的采样频率为f=128*55*2=14.08kHz,所以采样周期为T=1/fs=71.02μs。采样保持器选择AD582,它是反馈型结构,在精度要求不高(≤0.1%)而速度要求较高时,可选用CH=1000pF,捕捉时间tAC≤6μs。多路开关选用MAX382,它开关速度快,在双电源,连续供电工作方式下,典型开关时间在100ns左右。它的主要特点是:工作电压低、通道电阻小(≤100Ω)、具有数字输入锁存、TTL/CMOS电平兼容、具有ESD静电保护功能等。ADC转换器选用MAX172,该芯片是5V电源供电的12位模数转换芯片,CMOS工艺制造,速度快,转换时间为10μs,具有基准源,外接时钟,频率要求为1.25MHz。
2.3CPLD器件简介
在本设计中选用的是EP1K100QC208-3,它是ALTERA公司推出的ACEX1K系列下的一款FPGA芯片。上电时需要重新对芯片进行配置。片内有100,000可用门,有4,992个逻辑单元,内嵌12个EAB。每个EAB的容量为512Byte,可以非常方便地构造RAM、ROM、FIFO或双口RAM等功能。本设计中6KB的双口RAM正是基于此构建的。其有208个管脚,可用I/O管脚数为147个。
3 CPLD内部电路实现
本设计的软件是在MAX+plusII10.2下完成的,顶层文件是*.gdf图形文件,低层用AHDL硬件描述语言来描述。
3.1测频模块
测频模块的主要作用是:①测量电网频率;②确定分频系数,产生跟随频率变化的同步脉冲。测频原理:由于测量的频率在50Hz左右,采用脉宽测量方式,即首先对被测信号进行2分频,使信号的正负脉宽相等,然后利用正脉宽对50MHz的标准脉冲进行计数。正脉宽上升沿来时,计数器开始对标准脉冲计数;下降沿来时,锁存当前的计数值Con。
3.2S/H时序控制模块
由于采用的是同相电压、电流同步采样技术,所以对S/H的控制时序要求严格。同步采集某相电压电流1次的时间≤71.02μs。同相电压、电流间要求是同时保持,分时采样。由于ADC582的捕捉时间约为6μs,所以S/H时序脉冲低电平应至少为10μs,在此期间,采样保持器处于跟踪状态;高电平为60μs,在高电平期间,采样保持器处于保持状态。前30μs对电压信号进行AD转换并存储;后30μs对电流信号进行AD转换并存储。
3.3多路开关MAX382的地址产生及ADC控制模块
在AD582控制脉冲一个周期的高电平期间,要采集电压、电流各1次,所以多路开关MAX382需要选通2次,AD芯片MAX172也需要启动2次。第1次MAX382选通起始于AD582控制脉冲上升沿来临以后的1μs时刻;第2次起始于中间31μs处,延时1μs。这是因为采样保持器的输出还有一段波动,经过一定时间tST才保持稳定,为了量化的准确,所以在保持指令发出后,延时1μs。AD启动脉冲开始于AD582控制脉冲2μs、32μs处,也延时1μs。MAX172的控制端有:CS,HEN,RD;转换结束状态线:BUSY。当CS=0,RD=0,BUSY=0时,AD正在转换;BUSY=1时,转换结束;HEN=1,读转换结果的高4位数据,HEN=0时,读转换结果的低8位数据。该模块要结合硬件来仿真。
3.4双口RAM地址发生器及读写控制模块
ACEX1K100器件内嵌EAB单元,可构成容量大约??KB的双口RAM,由于MAX172?位AD,而MCS-51的数据总线只??位,所以,需要??次采样的数据分??个字节,分别存储。因为电压、电流分时交替转换,所以,在地址发生器中要有一个确定的映射规则,调整其存储地址,以使电压、电流在双口RAM中分块顺序存储。另外,在双口RAM中,当对同一地址单元同时进行读写时,要有一个仲裁机制,对其进行控制;当读写发生冲突时,我们约定:CPLD写双口RAM具有优先权,只有当写操作结束后,MCS-51单片机才被允许读该单元。该模块的仿真波形见??。
3.5通信模块
该模块是在CPLD内部构建一个串行发送电路端口,实现MCS-51单片机与CPLD器件之间的通信功能。(1)在正常工作模式下,频率、同步脉冲的分频系数等重要数据需要通信。(2)在系统升级模式下,单片机发送控制数据给CPLD实现升级。通信方式为串行单工通信,MCS-51单片机发送数据,CPLD接受数据。通信波特率约定?bps,通信的帧结构???位数据??位起始位(低电平)??位数据位,低位在前??位停止位(高电平)。帧与帧之间??位空闲位(高电平)以确保通信正确。
4结论
在电力谐波分析仪的设计中,CPLD的应用使采样的速率大大提高,由于采用频率跟随技术,可以满足高精度的测量需要。另外,也减轻了MCS-51单片机的负担,提高了系统的响应速度,实时性更强。该设计还有另外一个优点,系统升级方便,只要把ADC芯片换成MAX162,单片机的程序稍做修改即可。当然也可以实现在线修改,实现远程控制等功能。
基于单片机和CPLD的数字频率计的设计
引言
在传统的控制系统中,通常将单片机作为控制核心并辅以相应的元器件构成一个整体。但这种方法硬件连线复杂、可靠性差,且在实际应用中往往需要外加扩展芯片,这无疑会增大控制系统的体积,还会增加引入干扰的可能性。对一些体积小的控制系统,要求以尽可能小的器件体积实现尽可能复杂的控制功能,直接应用单片机及其扩展芯片就难以达到所期望的效果。
复杂可编程逻辑器件(CPLD)具有集成度高、运算速度快、开发周期短等特点,它的出现,改变了数字电路的设计方法、增强了设计的灵活性。基于此,本文提出了一种采用Altera公司的CPLD(ATF1508AS)和Atmel公司的单片机(AT89S52)相结合的数字频率计的设计方法。该数字频率计电路简洁,软件潜力得到充分挖掘,低频段测量精度高,有效防止了干扰的侵入。独到之处体现在用软件取代了硬件。
CPLD开发环境简介
1 VHDL语言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE的一种工业标准硬件描述语言。相比传统的电路系统设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
2 Max+PlusⅡ开发工具
Max+PlusⅡ开发工具是美国Altera公司自行设计的一种CAE软件工具。它具有全面的逻辑设计能力,设计者可以自由组合文本、图形和波形输入法,建立起层次化的单器件或多器件设计。利用该工具配备的编辑、编译、仿真、综合、芯片编程等功能,将设计的电路图或电路描述程序变成基本的逻辑单元写入到可编程芯片中(如CPLD、FPGA),做成ASIC芯片。
它支持FLEX、MAX及Classic等系列CPLD器件,设计者无须精通器件内部的复杂结构,只需用自己熟悉的设计输入工具,如高级行为语言、原理图或波形图进行设计输入,它便将这些设计转换成目标结构所要求的格式,从而简化了设计过程。而且Max+PlusⅡ提供了丰富的逻辑功能库供设计者使用。设计者利用以上这些库及自己添加的宏功能模块,可大大减轻设计的工作量。
等精度测频原理
本系统采用等精度测频的原理来测量频率,门控信号是可预置的宽度为Tpr的一个脉冲。CNT1和CNT2是两个可控计数器。标准频率信号从CNT1的时钟输入端FS输入,其频率为Fs;被测信号经整形后从CNT2的时钟输入端FIN输入,设其实际频率为Fxe,测量频率为Fx。
当门控信号为高电平时,被测信号的上沿通过D触发器的Q端同时启动计数器CNT1和CNT2。对被测信号Fx和标准频率信号Fs同时计数。当门控信号为低电平时,随后而至的被测信号的上沿将使这两个计数器同时关闭。设在一次门控时间Tpr中对被测信号计数值为Nx,对标准频率信号的计数值为Ns,则:
Fx/Nx=Fs/Ns(标准频率和被测频率的门宽时间Tpr完全相同)就可以得到被测信号的频率值为:Fx=(Fs/Ns)×Nx
系统硬件电路设计
1 系统总体设计
本系统的硬件电路包括键盘控制模块、显示模块、输入信号整形模块以及单片机主控和CPLD模块。键盘控制模块设置5个功能键和3个时间选择键,键值的读入采用一片74LS165来完成,显示模块用8只74LS164完成LED的串行显示。
系统由一片CPLD完成各种测试功能,对标准频率和被测信号进行计数。单片机对整个测试系统进行控制,包括对键盘信号的读入与处理;对CPLD测量过程的控制、测量结果数据的处理;最后将测量结果送LED显示输出。被测信号整形电路主要对被测信号进行限幅、放大、再经施密特触发器整形后送入CPLD。用50MHz的有源晶振作为CPLD的测试标准频率。单片机由外接12MHz标准晶振提供时钟电路。
2 CPLD逻辑模块设计
该模块由4个子模块构成。其中CONTROL1为测频或测周期控制模块;CONTROL2为测脉宽和占空比控制模块;CHOICE为自校与测量选择模块;COUNT为基准频率和被测频率计数器模块。
被测信号脉冲经CHOICE选择后,从控制模块CONTROL1的FX1端输入,基准频率信号从FS端输入,CLR是初始化信号。在进行频率或周期测量时,完成如下步骤:
(1)在CLR端加正脉冲信号完成测试电路状态的初始化。
(2)由预置门控信号将STROBE置高电平,预置门开始定时,此时由被测信号的上沿打开计数器COUNT,同时对基准频率信号和被测信号进行计数。
(3)顶置门定时结束信号把STROBE置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,COUNT停止计数。
(4)计数结束后,ED1端输出低电平来指示测量计数结束,单片机得到此信号后,即可利用SS0,SS1进行选择,四次分别读回COUNT中基准频率信号和被测信号计数值,并根据上述测量公式进行运算,计算出被测信号的频率或周期值。
系统软件设计
本系统的单片机主控及其外围电路模块用Keil C语言编写,软件模块对应于硬件电路的每一个部分,还包括部分数据计算和转换模块。CPLD模块用VHDL语言编写,并在Max+PlusⅡ平台上,完成CPLD的软件设计、编译、调试、仿真和下载。系统初始化后,主程序不断扫描键盘子程序,当其键按下时,程序跳转到相应的子程序执行其功能,然后返回继续执行键盘扫描主程序。
结论
本文将智能控制灵活、逻辑运算能力强的单片机和集成度高、运算速度快的CPLD相结合,突破了传统电子系统设计的瓶颈,使设计的系统具有结构紧凑、体积小,可靠性高,测频范围宽、精度高等优点。它可作为独立的仪表使用,也可用做其他仪器仪表的组成部分。
用CPLD实现基于PC104总线的429接口板
PC104总线系统是一种新型的计算机测控平台,作为嵌入式PC的一种,在软件与硬件上与标准的台式PC(PC/AT)体系结构完全兼容,它具有如下优点:体积小、十分紧凑,并采用模块化结构,功耗低,总线易于扩充,紧固堆叠方式安装,适合于制作高密度、小体积、便携式测试设备,因此在军用航空设备上有着广泛的应用,但也正是PC104板的这种小尺寸结构、板上可用空间少给设计带来了一定的困难,所以本设计采用了复杂可编程器件CPLD,用CPLD完成了PC104总线与429总线通讯的主要电路,大大节省了硬件资源,本文着重介绍了CPLD部分的设计。
1 系统总体设计
CPLD是一种复杂的用户可编程逻辑器件,由于采用连续连接结构,易于预测延时,从而使电路仿真更加准确。再加上使用方便的开发工具,如MAX+PLUSII、Quartus等,使用CPLD器件可以极大地缩短产品开发周期,给设计修改带来很大方便。本论文描述了利用开发工具MAX+PLUS II实现CPLD处理ARINC429数据通信。
ARINC429收发电路部分,由两组3282和3l82芯片构成,其中每组芯片实现二路接收、一路发送,其中的控制信号均有CPLD编程产生:在CPLD部分,D[0...15]为16位双向数据总线,实现AR1NC429收发电路与PC104总线接口之间的数据通信,IO16为16位芯片选择信号;在PC104总线接口部分,XD[0...15]为16位双向数据总线,XA[1...9]为地址总线,连接CPLD,进行选片操作,XIOR和XIOW 为IO读写信号,XAEN 是允许DMA控制地址总线、数据总线和读写命令线进行DMA传输以及对存储器和I/O设备的读写。
2 系统硬件组成
429的PC104总线接口板主要包括AR1NC429收发电路(HS3282和HS3l82芯片组)、CPLD、429板与PC 机的接口总线PC104总线、与外部的429接口IDC16插座、中断控制开关等。
3 CPLD内部功能及实现
3.1 开发流程描述
本系统中的CPLD使用Altera公司的MAX7000S系列可编程逻辑器件中的EPM7128SQC100-6型号,从最初的电路设计思想到MAX+PLUSII的波形仿真,再到CPLD芯片编程结束要经过的一般开发流程。
3.2 CPLD中的模块设计
本设计中CPLD 的功能是实现ARINC429收发电路与接口板的接口总线PC104总线的数据通信。其功能模块可以分为6部分,以下逐一介绍各模块的功能及其实现的方法。
(1)产生AR1NC429控制器HS3282所需的TTCLK时钟信号模块
TTCLK即发射器时钟信号,本设计中该信号有480 KHZ和1 MHZ两种可选频率,是由一个48 MHZ的晶振提供信号给CPLD,然后由CPLD编程产生480KHZ和1MHZ两种信号以备选择。该模块用图形编辑的方式实现。要产生3282所需要的480KHZ信号需要对输入48MHZ信号进行两次10分频,要产生1 MHZ信号需要对输入信号进行6分频再8分频。6分频电路采用3个JK触发器实现,8分频电路采用74393实现,10分频电路采用7490实现。
(2)产生复位信号/MR和控制发射器使能信号ENTX的信号ENT模块/MR是对3282的主复位信号,/MR将直接送到HS3282,而ENT将送到另一模块中,用于控制发射器使能信号ENTX的产生,ENTX=ENT*/TXR,其中TXR为发送缓冲区空标志。该模块也采用电路设计输入方式。其电路主要由4个D型触发器74LS74芯片来完成。输入为总线驱动器的前4个输出,即D0~D3,时钟脉冲为产生HS3282读写信号模块的一个输出信号/WR3,输出为两个HS3282的复位信号/MR1和/MR2以及ENT1和ENT2。
(3)产生片选信号/MCS的模块
本模块产生的/MCS信号用于驱动双向总线驱动器,进行数据传输,并用于选片对HS3282进行读写。此模块用一片8位判决电路74LS688来实现其功能。其中P5-P1接一组基址选择开关,Q5~Q1分别接PC104总线的地址总线的XA7、XA9、XA8、XA6和XA5,G接PC104总线的地址使能信号端XAEN。只有当XAEN输入为低时,并且P5~Pl与Q5-Q1的对应端相等时,输出为低,才有效。
(4)双向总线驱动器模块
该模块实现AR1NC429收发电路与接口板的接口总线PC104总线的16位数据传输。该模块设计过程为,先用VHDL设计输入方式设计两个单向三态数据收发器,然后用电路设计输入方式,将两个单向数据收发器合成为一个双向数据收发器。
产生另一个单向三态数据收发器(TRI_GATE)的VHDL语言与此类似,只是少了D0~D3的输出部分。
(5)产生HS3282读信号与写信号和ENTX使能信号模块
本模块要实现的功能是产生HS3282的读写信号和发送使能信号及一个送入PC104总线的输入输出16位芯片选择信号/IO16。
(6)中断控制模块
本模块用于实现中断控制操作,有一个接收器满便产生中断,产生中断时亦能判断出中断源。
3.3 CPLD程序的下载
各输入模块经过编译处理,根据其相互关系连结,再通过功能仿真和时序仿真确认无误后,对各输入输出端口进行管脚分配。当整个设计完成时,MAX+PLUSII将生成一个文件(.pof),该文件通过下载电缆从JTAG口传送到PC104板上的CPLD芯片内部。这样就可将CPLD构造成自己的专用芯片,由此便可以对设计的PC104板卡进行调试。调试过程中CPLD的设计部分还可根据需要进行修改,只是修改后要重新产生.pof文件,重新将文件加载到芯片中。
4 结束语
针对PC104接口板的尺寸小的特点,本论文介绍了用CPLD实现基于PC104总线的429接口板,CPLD大大节省了硬件资源,同时也节省了板卡上的可利用空间,彻底解决了PC104 板卡的小尺寸给设计带来的困难。且CPLD修改简单,给调试工作带来了方便。该板卡经过调试后实验,可稳定工作。实验结果表明:应用CPLD简化了系统结构,缩短了设计周期,提高了系统的可靠性。
LPC2131基于CPLD的CAN接口设计
引 言
Philips公司的LPC213l是基于ARM7TDMI-S的高性能32位RISC微控制器。
它具有ARM处理器的所有优点——低功耗、高性能和较为丰富的片上资源,但LPC2131内部没有集成CAN控制器,而无法利用CAN总线来进行通信。为了使得LPC2131能够利用CAN总线进行通信,可以通过外部扩展来实现其功能。目前,比较普通的方法是在LPC2131的外部采用CAN控制器设计CAN总线接口。
这种方法中,LPC2131是通过GPIO口与CAN控制器SJA1000相连实现数据交互的。LPC2131通过寄存器IOSET/IOCLR来设定I/O口的高/低状态,虽然可以同时置位/拉低选定的引脚,但不能同时将某些口线拉高而将某些口线拉低。假定P0[15:8]初始状态为0xa5,若将P0[15:8]同时变为0×5a,则必须通过IO0SET和IO0CLR两次进行。程序实现如下:
PINSEL0=0×00000000;
IO0DIR=0×0000FF00;
IO0SET=0×5a00;
IO0CLR=0xa500;
P0[15:8]上会出现0xFF的中间状态。在高速通信系统中,这些中间状态可能会造成损失。虽然可以通过IO0PIN进行操作来消除这样的中间状态,但是Philips公司不推荐这种做法,非必要时尽量不要使用。
CAN驱动器接口芯片与LPC2131的串口接口电平上是相互匹配的,因此理论上可以将二者直接连接,采用串行通信方式实现。采用CAN总线通信,在长距离通信时,CAN总线两端要加终端电阻。其作用是避免数据传输又反射回来,产生反射波而使数据遭到破坏;同时,能提高总线传输的抗干扰能力。理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。通常判断原则是根据数据速率和电缆长度进行匹配的,但这在实际中难以掌握,一般都是依据经验进行设计。
可编程逻辑器件(PLD)是20世纪70年代在ASIC设计的基础上发展起来的一种新型逻辑器件。20世纪80年代末,美国Altera和Xilinx公司分别推出大规模和超大规模的复杂可编程逻辑器件(CPLD)及现场可编程逻辑门阵列器件(FPGA)。自从进入20世纪90年代以来,可编程逻辑器件得到了飞速发展,向高度集成、高速度和低价位方向不断迈进;其应用领域不断扩大,可用于状态机、同步、译码、解码、计数、总线接口和串并转换等很多方面。使用CPLD可以提高系统集成度,降低噪声,增强系统可靠性并降低成本。
CPLD技术的出现,为我们提供了一种有效的解决办法:在CAN驱动器接口与LPC2131之间接一块CPLD,对CPLD进行功能编程,使其负责串行总线的数据传输和防止CAN发送反射。
选择Altera公司MAX3000A系列的型号为EPM3128ATC100-7(简称“EPM3128”)的CPLD芯片。此芯片兼容3.3 V和5 V的I/O 口。这样,LPC2131、EPM3128和TJA1040在I/O电平上是相互匹配的。
1 EPM3128接口定义
EPM3128设置成双向串行总线通道。其中,2个I/O口被定义为CANRXD(IN)、CANTXD(OUT),分别连接CAN收发器TJA1040的RXD和TXD端,构成CAN总线上接收数据和发送数据通道;另外2个I/O口被定义为ARMRXD(IN)、ARMTXD(OUT),分别连接LPC2131的RXD1和TXD1端,构成处理器的串口接收数据和发送数据通道。整个数据的传输过程中,并不改变串行数据的协议和格式,接口电路全为TTL电平,期问不需要进行任何的处理。通信数据的校验、报错均交给通信两端的处理器完成。
2 EPM3128功能实现
采用功能块编程实现EPM3128的数据传输和屏蔽CAN发送反射的内部逻辑。总线空闲时,总线上的状态一直保持为“1”,即txArm2、rxCan2、txCan2、rxArm2的值全部为“1”。当输入总线收到一个状态“0”信号时,表示总线开始传输数据。如果LPC2131要发送数据,则LPC2131先向ARMTXD端口发送一个“0”起始信号,占据总线并在下一个时钟开始发送数据帧;如果TJA1040从现场接收到新数据,则TJA1040先向CANRXD端口发送一个“0”起始信号,占据总线并在下一个时钟开始发送数据帧。以此,完成正常通信过程中数据位从串口到串口的传输。
程序屏蔽CAN发送反射,就是屏蔽CAN总线接收到的从输出总线上反射的“0”信号,因为接口从高阻态被唤醒是靠一个“0”的起始信号。如果LPC2131正在发送数据,此时输人端口ARMTXD通过变量txArm2传送一位为“0”的信号到变量txCan2,并从输出口CANTXD送出。受总线辐射影响CANRXD输入口会从CAN总线接收到一个“0”信号,并将“0”信号传送给变量rxCan2,此时rXCan2收到的这个“0”信号是错误信号。经逻辑判断,程序将变量rxArm2维持为1,端口ARMRXD仍保持高阻态“1”。反射的“0”信号虽然被接收到,但在CPLD内部被屏蔽处理掉。如果没有屏蔽处理,那么这个错误的“0”信号将接收总线从高阻态唤醒,直接影响数据的通信。程序中D触发器的用途有两方面:一是缓存输入和输出,平滑信号的毛刺;二是实现控制信号的功能,如输出的复位和同步等。
用QuartusII软件编译程序,并用仿真工具仿真。波特率为115 200 bps,编辑输入点txArm2、rxCan2的波形,查看输出点txCan2、rxArm2的波形。为方便识图,仿真中将数据端口传输占用的时间参数置0。
首先,论证输出波形的有效性。txCan2和rxArm2的波形,可以看出所有时刻的数值都是确定的,从而证明系统处于稳定状态,波形是有效的。
然后,论证输出波形的逻辑性。根据程序的逻辑设计,txArm2通道的数据发送享有优先权,始终保持txCan2=txArm2。从仿真结果可以看出,txCan2的波形与txArm2波形完全一致;当txArm2通道为“0”时,屏蔽rxCan2输入的数据,并保持rxArm2输出一直为“1”。
最后,验证输出波形的时序性。这部分程序是一个组合逻辑的设计,也就是所有的输出随着相应的输入的变化而变化。
结 语
本文基于CPLD技术实现了LPC2131与CAN总线之间的串行通信。该方法实现简单,并且稳定性较好,适合于采用CAN总线的多路串行通信系统。该技术已应用到实际中,接受实践的检验。
基于CPLD和89S51的多功能信号测量仪
1 引言
测频是最基本的电子测量技术。常用的测频方法有较大的局限性,其测量精度是随被测信号频率的下降而降低的,并且被测信号计数则产生±1个数字误差。而采用等精度频率测量方法测量精确,测量精度保持恒定;并且与CPLD(复杂可编程逻辑器件)相结合可使测频范围达到0.1 Hz~100 MHz,测频全域相对误差恒为1/1000。
智能化仪器通常以单片机为核心,而一般单片机自身计数器/定时器的计数/定时范围或精度有时无法满足系统要求。以89C51单片机为例,当其内部两个16位计数器/定时器T0和T1工作在计数方式时,对T0(P3.4)或T1(P3.5)的外部脉冲进行计数。当T0或T1引脚上发生负跳变时,计数器加1。由于识别引脚的负跳变需2个机器周期,即24个时钟振荡周期。T0/T1的最高频率为1/24fosc,当晶体振荡器频率为12MHz时,其最高计数频率为500 kHz。要求高测量频率时,则需对被测信号预处理以扩展测频范围。
2 测量原理
要求测量频率较高时,则需对高频和低频采用不同的测量方法,提高测量精度。
2.1高频测量
采用测频法测量高频。在确定的阈值时间Tw内,记录被测信号的变化周期数(或脉冲数)Nx,则被测信号的频率:fx=Nx/Tw。由于被测频率较高,单片机难以测量,8051所测量最高频率为500 kHz,因此采用CPLD和8051的内部计数器组成32位计数器。CPLD的计数器为低16位,其进位脉冲再向8051计数。CPLD延时为10 ns,因此,CPLD与8051按测频原理可以精确测量50 Mz的频率。
2.2低频测量
采用测周法测量低频。测周期法需用标准信号的频率fs,待测信号的一个周期Tx内,记录标准频率的周期数为Ns,则被测信号的频率为:fx=fs/Ns。由于被测频率较低,故可采用8051测量。首先要将被测信号转换成门控信号。
2.3脉宽测量
由于被测频率较低,故可采用8051实现。将脉宽信号直接送人8051计数器,采用测周法来测量脉宽,标准信号频率fs记录标准频率的周期数为Ns,则被测信号的脉宽为:Tx=Ns/fs。
3 系统硬件电路设计
3.1单片机设计部分
快速测量的要求必须保证高精度测频,必须采用高精度的标准频率信号。由于单片机受本身时钟频率和指令运算限制,因此,测频速度较慢,无法满足高速、高精度测频要求。采用高集成度、高速可编程门阵列CPLD可实现快速、高精度测频。
3.2 CPLD设计部分
利用CPLD作为计数器的低16位,而89S51内部计数器作为计数器的高16位,在门控时间内分别对被测信号和标准信号进行计数。由于单片机具有程序运算能力,且频率为周期的倒数(f=1/T),则测频法与测周法互通。
4 系统软件设计
系统软件设计采用Keil C51编写。由于单片机能够完成大量运算,且包含浮点数据处理。因此,并采用Keil C51便于运行。并采用Keil C51自带的软件仿真器对所编写的程序进行仿真。
系统软件设计流程为:单片机初始化、LCD初始化、计数器清零、单片机发出启动脉冲,来启动CPLD的两个低16位计数器和单片机的两个高16位计数器。此时,计数器并不开始计数,直到下一个Tx上升沿到来,计数器才开始计数,软件延时1 s后,发出结束脉冲来结束CPLD的两个低16位计数器计数,但此时,计数器并不停止计数,而是直到下一个Fx上升沿两个计数器才都停止计数,随后关闭单片机的两个计数器。CPLD发送结束信号,单片机响应中断。中断函数分两次读取CPLD的两个计数器值。进而单片机处理两个32位计数器值。调用显示函数显示频率,从而完成一次测频。
5 结语
本系统设计经系统测试,测试数据符合要求。因此,该信号测量仪具有电路简单、体积小巧、便于携带、功能强大,中文液晶显示等特点。其频率测量范围可达0.1 Hz~100MHz,并可随意切换被测信号的频率、周期和脉宽,具有较强的实用价值。
