基于STM32的微型数字逻辑分析仪设计姓名:耿闯学院:信息学院班级:13级一班学号:131405105邮箱:1916156075@qq.com时间:2016年5月30号基于STM32的微型数字逻辑分析仪设计摘要:本设计采用单片机控制8路逻辑信号电平采集;采用EDA技术设计的CPLD芯片处理逻辑信号,控制点阵扫描和分析结果在示波器上显示;单片机和CPLD间采用中断方式交换数据。该设计具有1、3级触发方式,触发字位置和浮动时标线显示等功能,以及友好操作界面和波形稳定显示等特点,并拓宽示波器使用功能。关键字:点阵扫描控制;逻辑分析;CPLD;VHDL编程1.引言逻辑分析仪是数字电路调试和信号分析中不可缺少的工具。本设计参照“2003年全国大学生电子设计竞赛”的题目,用双踪信号示波器作为逻辑分析结果显示设备;用单片机控制逻辑信号采集和逻辑分析仪的各项功能操作;用EDA(电子设计自动化)技术设计的CPLD(复杂可编程逻辑器件)芯片处理逻辑信号,控制逻辑分析结果波形的点阵扫描;达到一般逻辑分析仪应有的功能和指标。本设计的逻辑分析仪特点是性能稳定、成本低,并拓宽了示波器使用功能。2.基本要求(1)制作数字信号发生器能产生8路可预置的循环移位逻辑信号序列,输出信号为TTL电平,序列时钟频率为100Hz,并能够重复输出。逻辑信号序列示例如下图所示。(2)制作简易逻辑分析仪a.具有采集8路逻辑信号的功能,并可设置单级触发字。信号采集的触发条件为各路被测信号电平与触发字所设定的逻辑状态相同。在满足触发条件时,能对被测信号进行一次采集、存储。b.能利用模拟示波器清晰稳定地显示所采集到的8路信号波形,并显示触发点位置。c.8位输入电路的输入阻抗大于50kῼ,其逻辑信号门限电压可在0.25~4V范围内按16级变化,以适应各种输入信号的逻辑电平。d.每通道的存储深度为20bit。3.方案选择与可行性论证(1)数字信号发生器模块方案一:采用555定时器和可预置移位寄存器。用74LS194A接成8位可预置循环移位寄存器,方波发生器提供一时钟信号给移位寄存器,预置数用8个波段开关接入(即循环系列)。此方案简单可靠,但信号频率不易更改(当需要的时候),硬件复杂,不易扩展。方案二:用PC通过软件编程可以从并行口输出信号波形,不需要硬件电路,且设计灵活,但不适合电子设计竞赛,并且PC体积大,携带不方便。方案三:采用中规模FPGA,使用VHDL语言设计移位寄存器。此方案可以实现精确定时产生信号,且信号频率可调,体积小,但其显示电路占用资源多,这样设计出来的电路系统将大且复杂。方案四:采用一片AT89C2051单片机产生波形序列。用单片机产生数字信号,设计简单,设置灵活,频率调节方便,并且易扩展其他功能。综合分析上述各方案,比较其优缺点,包括灵活性、可靠性、可扩展性和易操作性,所以选择方案四。(2)主体控制模块方案一:以8031单片机为核心。但8031无片内ROM,需外扩EPROM(例如27526)作为程序存储器。这样会增加电路的复杂性。方案二:采用AT89C51单片机为主控制核心的双CPU串行通信方式。AT89C51芯片,其内部含有可重复编程的FLASHROM,可进行1000次擦除操作,在设计调试过程中可十分容易进行程序的修改,达到最佳的设计。利用存储器(EEPROM)实现掉电存储功能。但需要外接D/A转换器(如DAC0832),也增加了硬件的复杂性。方案三:选择STM32F103VET6芯片,利用AD接口和GPIO口实现数据采集,利用芯片的SRAM实现数据的存储。方案三硬件简单,软件实现方便,大大提高了系统的设计性能。故采用方案三。(3)信号检测模块信号检测模块主要用来提高输入阻抗,并设置逻辑电平的门限电压。方案一:电阻分压,利用电阻网络把电压分级作为触发门参考电压,用模拟开关4067在把每个通道的信号和这个参考电压用电压比较器来比较,判断输入信号高低,输入单片机处理。方案二:采用D/A和比较器实现。单片机控制D/A的输出,作为比较器的参考电压,即可改变门限电压,D/A可使用STM32内部D/A。与方案一比具有精确可调的优点。故选方案二。(4)用户接口模块和显示模块用户接口模块包括显示,键盘等几个部分。LCD液晶显示。例如采用COM1286液晶显示模块可以显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线,接口电路简单控制方便。故采用此方案。4.系统总体方案框图逻辑信号发生器8选1模拟开关(CD4051)AD转换(MAX7820)8路逻辑信号采集数据输入单片机(AT89C51)液晶显示(LCD模块)4*4键盘采样字节输出CPLD可编程逻辑器件(EPM7128SLC84-7)双通道DA转换(MAX5102)信号放大双踪示波器扫描数据单片机系统CPLD点阵扫描控制逻辑信号检测图1逻辑分析总体结构图读控制转换结束写控制输出中断位传送时钟中断模拟信号通道选择锁存X轴Y轴Z轴路选D7D6D5D4D3D2D1D0B-CLK图28路逻辑信号循环序列101000005.单元电路设计(1)数字信号发生器模块的实现数字信号由8路信号产生电路、循环移位寄存器、100Hz时钟产生电路和逻辑信号输出部分构成。在这里使用一片小单片机AT89C2051作为信号发生器,通过8路开关设置循环移位元逻辑信号序列,输入AT89C51的P1口,由2051内部定时在P3.7产生100Hz的时钟信号,在P3.2输出预置波形,通过移位寄存器74HC164产生8路循环移位元信号。如下图所示。(2)主控系统模块的电路设计与实现该模块由最小系统和信号处理电路组成。最小系统由一片STM32F103VE、一片RS232构成,其硬件连接图如图5所示。e.信号处理部分设计思路:由STM32内部DAC输出门限电压给集成电压比较器,比较器将比较结果以逻辑1(高电平)或逻辑0(低电平)输出给STM32内部ADC然后经STM32输出给CPLD点阵扫描控制部分。如下图所示图5STM32最小系统(3)按键实现电路采用4*4标准的行列键盘,通过8个I/O口控制16个键,如图6所示。键盘接的前4个I/O口为行接线,后4个位列接线。每个键都对应一个行的位置和一个列的位置。例如左上角的那个对应第一行和第四列,即STM32的GPIOA9和GPIOA10两个I/O口。键盘由微动开关组成,微动开关的特性是当有按键按下时开关的两个引脚闭合导通。无按键时两个引脚断开。这样我们按下图左上角的键时GPIOA9、10口在物理上是导通的,其他I/O口都处于独立状态。这里我们用的方法是将4个行线的I/O口置为”0”(低电平),将列线的I/O口置为”1”(高电平)。这样当有键按下某一行的I/O口就和某一列中的I/O口导通了,因为行线的口都是”0”,而其余的列线移位开始时是”1”又没和其他的行线导通,所以依然是”1”。这样我们就可以找出了按键所在的列了。反过来确定行的位置也是一样。图6按键实现电路(4)CPLD点阵扫描控制CPLD点阵扫描控制部分由可编程逻辑阵列(CPLD)、数模转换器(DAC)和X、Y、Z轴扫描信号放大电路组成,并在CPLD控制下工作;其电路如下图所示。CPLD向通过输出中断CPLD-INT请求(单片机的INT0)从单片机系统获得采样字节;对每个采样字节按顺序进行8路逻辑信号位波形(或时标线)的点阵扫描的信息处理,并控制数模转换(DAC)、信号放大、信号扫描显示和回扫信号消隐处理。在处理一个页面(1/3数据区)16个采样字节后,重复处理过程。CPLD内部由计数器链(2分频器,点、位、字节计数器)、数据接收器、X轴位边界定位器、加法器、Y轴定位输出器、2选1多路器、消隐控制器等部分组成,如图5所示。CPLD外部引脚CLK(CPLD-CLK)、EN(使能)、TR(信息类型控制)、DI[7~0](CPLD-DATA)、CP(锁存)、-INT(CPLD-INT)分别连逻辑分析仪单片机的ALE、P1.7、P3.1、P0[0~7]、P3.0、P3.2引脚(见图4的引脚标注);-WR、A0(通道选择)、DO[7~0]分别连DAC的-WR、A0、D[7~0]引脚;Zout连信号放大器的Z轴输入端。CPLD工作原理说明如下:消隐控制CPTRDI[7~0]2分频器CLKA0YXcCLK1ZoutDO[7~0]INTEN图5CPLD的内部结构XX1BitCByteCDI[4~0]位计数器Y轴定位输出加法器2选1多路器DI[7~0]WR3448888点计数器字节计数器Z3Z2Z184数据接收器X轴位边界定位器8开机后,CPLD内部复位,EN=0,CPLD处于保持状态。1.数据传送——首先设置EN=0,CPLD处于保持;然后,CP的上升沿,将外部数据送入数据接收器;设置TR=0,传送8路信号采样字节;TR=1,传送触发字或时标线位置的4位编码(给出16个位置信息)。传送数据后,设置EN=1,CPLD工作。2.逻辑信号扫描——在EN=1,TR=0前提下,外部时钟CLK的上升沿驱动计数器链工作。字节计数器(采样字节计数)值ByteC经过X轴位边界定位器处理后的值X1(X1=ByteC*10H)与点计数器(位内点计数)值Xc再经过加法器处理,产生当前扫描点X轴数字量X=X1+Xc=ByteC*10H+Xc。位计数器(采样字节各位计数)值BitC和数据接收器(存放采样字节)值DI[7~0]经过Y轴定位输出器处理,产生当前扫描点Y轴数字量的Y有两种:①当DI[BitC]=0,Y=0E0H-(BitC*20H)+05H;②当DI[BitC]=1,Y=0E0H-(BitC*20H)+15H。在A0正(A0=1)、负(A0=0)状态对2选1多路器的驱动下,分时将Y、X送到DO[7~0]总线上;以此同时,在两个-WR(-CLK)的上升沿(A0正、负半个周期的中间)驱动下,将送到DO[7~0]总线上的Y和X分别写入数模转换器DAC的两个通道。位计数器值BitC=7时,表示一个采样字节处理完,CPLD发出传送下一个字节的中断请求-INT。逻辑分析仪单片机收到中断请求后,进行一次数据传送处理。3.触发字和时间线位置扫描——在EN=1前提下,TR=1将数据接收器DI[3~0](位置信息)送入字节计数器,并控制点计数器值Xc=0,经过X轴位边界定位器和加法器处理后,产生扫描点X轴数字量X=X1+Xc=DI[3~0]*10H+0;同时TR=1控制Y轴定位输出器的值Y按计数方式工作,在CLK1驱动下,输出Y=00~0FFH的计数值,在示波器屏上显示竖线,表示触发字或时间线位置。当Y=0FFH时,表示位置信息扫描完毕,发出传送下一个字节的中断请求信号。4.消隐处理——在Xc=0FH,即开始下1路时钟位各点扫描时,点计数器输出Z1=1;在BitC=7,即开始8路信号下一组各时钟位(下一个采样字节)扫描时,Y轴定位输出器输出Z2=1;在Y=OFFH,即触发字和时间线位置扫描结束时,Y轴定位输出器输出Z2=1;在A0=1时,为了消除当前传送的Y轴数字量与前一次X轴数字量产生的干扰扫描点,2分频器输出的A0使Z3=1;Z1、Z2、Z3信号经过消隐控制器(或非门电路)处理,使Zout为低电平,经反相放大器处理后,向示波器Z轴输出+12V电压,以消除回扫线和干扰点。双踪信号示波器调整到X-Y工作方式,探头Y1为X轴输入,探头Y2为Y轴输入,显像管电子枪控制端为Z轴输入。CPLD输出的X、Y轴数字量X、Y经过数模转换和放大处理后,产生示波器X、Y轴扫描的模拟信号,在示波器屏上显示8路逻辑信号。CPLD输出的Zout信号经放大后,控制示波器的Z轴,以消隐回扫线和干扰点,使8路逻辑信号更清晰的显示。6软件设计软件设计部分有逻辑信号检测及数据采集处理、键盘显示扫描处理、采样字节输出处理和CPLD内部结构设计VHDL(硬件描述语言)编程四部分。本文主要介绍逻辑信号检测及数据采集处理和CPLD结构设计VHDL编程部分。6.1逻辑信号检测及数据采集处理逻辑信号检测及数据采集处理是通过单片机