基于STM32的微型数字逻辑分析仪设计_第1页
基于STM32的微型数字逻辑分析仪设计_第2页
基于STM32的微型数字逻辑分析仪设计_第3页
基于STM32的微型数字逻辑分析仪设计_第4页
基于STM32的微型数字逻辑分析仪设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STM32的微型数字逻辑分析仪设计 姓名: 耿闯 学院: 信息学院 班级: 13级一班 学号: 131405105 邮箱:1916156075 时间: 2016年5月30号 基于STM32的微型数字逻辑分析仪设计摘要:本设计采用单片机控制8路逻辑信号电平采集;采用EDA技术设计的CPLD芯片处理逻辑信号,控制点阵扫描和分析结果在示波器上显示;单片机和CPLD间采用中断方式交换数据。该设计具有1、3级触发方式,触发字位置和浮动时标线显示等功能,以及友好操作界面和波形稳定显示等特点,并拓宽示波器使用功能。关键字:点阵扫描控制;逻辑分析;CPLD;VHDL编程1. 引言 逻辑分析仪是数字电路调试

2、和信号分析中不可缺少的工具。本设计参照“2003年全国大学生电子设计竞赛”的题目,用双踪信号示波器作为逻辑分析结果显示设备;用单片机控制逻辑信号采集和逻辑分析仪的各项功能操作;用EDA(电子设计自动化)技术设计的CPLD(复杂可编程逻辑器件)芯片处理逻辑信号,控制逻辑分析结果波形的点阵扫描;达到一般逻辑分析仪应有的功能和指标。本设计的逻辑分析仪特点是性能稳定、成本低,并拓宽了示波器使用功能。2. 基本要求(1) 制作数字信号发生器能产生8路可预置的循环移位逻辑信号序列,输出信号为TTL电平,序列时钟频率为100Hz,并能够重复输出。逻辑信号序列示例如下图所示。(2)制作简易逻辑分析仪a. 具有

3、采集8路逻辑信号的功能,并可设置单级触发字。信号采集的触发条件为各路被测信号电平与触发字所设定的逻辑状态相同。在满足触发条件时,能对被测信号进行一次采集、存储。b. 能利用模拟示波器清晰稳定地显示所采集到的8路信号波形,并显示触发点位置。c. 8位输入电路的输入阻抗大于50k,其逻辑信号门限电压可在0.254V范围内按16级变化,以适应各种输入信号的逻辑电平。d. 每通道的存储深度为20bit。3. 方案选择与可行性论证(1) 数字信号发生器模块方案一:采用555定时器和可预置移位寄存器。用74LS194A接成8位可预置循环移位寄存器,方波发生器提供一时钟信号给移位寄存器,预置数用8个波段开关

4、接入(即循环系列)。此方案简单可靠,但信号频率不易更改(当需要的时候),硬件复杂,不易扩展。方案二:用PC通过软件编程可以从并行口输出信号波形,不需要硬件电路,且设计灵活,但不适合电子设计竞赛,并且PC体积大,携带不方便。方案三:采用中规模FPGA,使用VHDL语言设计移位寄存器。此方案可以实现精确定时产生信号,且信号频率可调,体积小,但其显示电路占用资源多,这样设计出来的电路系统将大且复杂。方案四:采用一片AT89C2051单片机产生波形序列。用单片机产生数字信号,设计简单,设置灵活,频率调节方便,并且易扩展其他功能。综合分析上述各方案,比较其优缺点,包括灵活性、可靠性、可扩展性和易操作性,

5、所以选择方案四。(2) 主体控制模块方案一:以8031单片机为核心。但8031无片内ROM,需外扩EPROM(例如27526)作为程序存储器。这样会增加电路的复杂性。方案二:采用AT89C51单片机为主控制核心的双CPU串行通信方式。AT89C51芯片,其内部含有可重复编程的FLASH ROM,可进行1000次擦除操作,在设计调试过程中可十分容易进行程序的修改,达到最佳的设计。利用存储器(EEPROM)实现掉电存储功能。但需要外接D/A转换器(如DAC0832),也增加了硬件的复杂性。方案三:选择STM32F103VET6芯片,利用AD接口和GPIO口实现数据采集,利用芯片的SRAM实现数据的

6、存储。方案三硬件简单,软件实现方便,大大提高了系统的设计性能。故采用方案三。(3)信号检测模块信号检测模块主要用来提高输入阻抗,并设置逻辑电平的门限电压。方案一:电阻分压,利用电阻网络把电压分级作为触发门参考电压,用模拟开关4067在把每个通道的信号和这个参考电压用电压比较器来比较,判断输入信号高低,输入单片机处理。方案二:采用D/A和比较器实现。单片机控制D/A的输出,作为比较器的参考电压,即可改变门限电压,D/A可使用STM32内部D/A。与方案一比具有精确可调的优点。故选方案二。(4) 用户接口模块和显示模块用户接口模块包括显示,键盘等几个部分。LCD液晶显示。例如采用COM1286液晶

7、显示模块可以显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线,接口电路简单控制方便。故采用此方案。4. 系统总体方案框图 5. 单元电路设计(1) 数字信号发生器模块的实现 数字信号由8路信号产生电路、循环移位寄存器、100Hz时钟产生电路和逻辑信号输出部分构成。在这里使用一片小单片机AT89C2051作为信号发生器,通过8路开关设置循环移位元逻辑信号序列,输入AT89C51的P1口,由2051内部定时在P3.7产生100Hz的时钟信号,在P3.2输出预置波形,通过移位寄存器74HC164产生8路循环移位元信号。如下图所示。(2) 主控系统模块的电路设计与实现

8、该模块由最小系统和信号处理电路组成。最小系统由一片STM32F103VE、一片RS232构成,其硬件连接图如图5所示。e. 信号处理部分设计思路:由STM32内部DAC输出门限电压给集成电压比较器,比较器将比较结果以逻辑1(高电平)或逻辑0(低电平)输出给STM32内部ADC然后经STM32输出给CPLD点阵扫描控制部分。如下图所示 图5 STM32最小系统(3) 按键实现电路采用4*4标准的行列键盘,通过8个I/O口控制16个键,如图6所示。键盘接的前4个I/O口为行接线,后4个位列接线。每个键都对应一个行的位置和一个列的位置。例如左上角的那个对应第一行和第四列,即STM32的GPIOA9和

9、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点阵扫描控制

10、部分由可编程逻辑阵列(CPLD)、数模转换器(DAC)和X、Y、Z轴扫描信号放大电路组成,并在CPLD控制下工作;其电路如下图所示。CPLD向通过输出中断CPLD-INT请求(单片机的INT0)从单片机系统获得采样字节;对每个采样字节按顺序进行8路逻辑信号位波形(或时标线)的点阵扫描的信息处理,并控制数模转换(DAC)、信号放大、信号扫描显示和回扫信号消隐处理。在处理一个页面(1/3数据区)16个采样字节后,重复处理过程。CPLD内部由计数器链(2分频器,点、位、字节计数器)、数据接收器、X轴位边界定位器、加法器、Y轴定位输出器、2选1多路器、消隐控制器等部分组成,如图5所示。CPLD外部引脚

11、CLK(CPLD-CLK)、EN(使能)、TR(信息类型控制)、DI70 (CPLD-DATA)、CP(锁存)、-INT(CPLD-INT)分别连逻辑分析仪单片机的ALE、P1.7、P3.1、P007、P3.0、P3.2引脚(见图4的引脚标注);-WR、A0(通道选择)、DO70分别连DAC的-WR、A0、D70引脚;Zout连信号放大器的Z轴输入端。CPLD工作原理说明如下:开机后,CPLD内部复位,EN=0,CPLD处于保持状态。1数据传送首先设置EN=0,CPLD处于保持;然后,CP的上升沿,将外部数据送入数据接收器;设置TR=0,传送8路信号采样字节;TR=1,传送触发字或时标线位置的

12、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和数据接收器(存放采样字节)值DI70经过轴定位输出器处理,产生当前扫描点轴数字量的Y有两种:当DIBitC=0,Y=0E0H-(BitC*20H)+05H;当DIBitC=1,Y=0E0H-(

13、BitC*20H)+15H。在A0正(A0=1)、负(A0=0)状态对2选1多路器的驱动下,分时将Y、X送到DO70总线上;以此同时,在两个-WR(-CLK)的上升沿(A0正、负半个周期的中间)驱动下,将送到DO70总线上的Y和X分别写入数模转换器DAC的两个通道。位计数器值BitC=7时,表示一个采样字节处理完,CPLD发出传送下一个字节的中断请求-INT。逻辑分析仪单片机收到中断请求后,进行一次数据传送处理。3触发字和时间线位置扫描在EN=1前提下,TR=1将数据接收器DI3(位置信息)送入字节计数器,并控制点计数器值Xc=0,经过X轴位边界定位器和加法器处理后,产生扫描点X轴数字量X=X

14、1+Xc=DI3*10H+0;同时TR=1控制Y轴定位输出器的值Y按计数方式工作,在CLK1驱动下,输出Y=000FFH的计数值,在示波器屏上显示竖线,表示触发字或时间线位置。当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使

15、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内部结构设

16、计VHDL(硬件描述语言)编程四部分。本文主要介绍逻辑信号检测及数据采集处理和CPLD结构设计VHDL编程部分。6.1 逻辑信号检测及数据采集处理逻辑信号检测及数据采集处理是通过单片机的INT1中断服务程序来完成。其中1级触发字逻辑信号检测中断服务程序和数据采集处理子程序流程如图6、图7所示。当各项参数设定后,按“确认键”保存参数,并打开逻辑信号检测中断(INT1),关闭采样字节输出中断(INT0)。每次逻辑信号发生器的位传送时钟(B-CLK)触发一次逻辑信号检测中断服务程序的执行,每次服务程序执行要进行8次路选和8次AD转换启动,并分别检测转换结束状态和读取转换结果。每次逻辑信号检测中断服务

17、,要调用8路逻辑信号数据采集处理子程序,将8路信号状态转换成1个采样字节,并存入采样数据区。当数据区存满后,关闭逻辑信号检测中断,打开采样字节输出中断,等待CPLD输出中断请求(CLPD-INT)。CPLD点阵扫描控制电路在每次输出8路1位信号波形后,向单片机系统发出采样字节输出中断;对每次采样字节输出中断的服务,单片机要对CPLD进行一次采样字节输出及写操作控制。输出的采样字节有波形数据、触发字和时标线位置三种数据类型。6.2 CPLD结构设计的VHDL编程CPLD内部结构各部分设计采用硬件描述语言VHDL编程来实现3。由于篇幅所限,仅给出部分设计的编程及解释说明。1点计数器设计的编程if

18、TR=0 then - TR=0时,逻辑信号时钟位的扫描点计数。 if f=0 then - f为回扫时钟插入标志位,f=0时,正常的点计数扫描。 Xc=Xc+1; - 点计数增1。 else Xc=Xc; - f=1时,Xc保持1个时钟时间。 end if; if Xc=1111 then f=1; - 计完1个时钟位16个点后,f置1控制插入一个回扫时钟 BitC=BitC+1; - 采样字节的位计数增1 Z1=1; - 控制下一时钟周期不显示 else f=0; - 控制正常计数 Z1=0; - 控制正常显示 end if;else - TR=1时,触发字和时标线位置扫描 Xc=0000

19、; - 点计数器值Xc 置0end if; 程序中的“Xc=Xc+1”语句仅为点计数器增1作准备,只有下一个时钟到来后,才计数增1变化;因此,对后边的“if Xc=1111 then”语句,判断到Xc=1111时,已经为点计数器Xc变成0做好了准备。程序中的“-”为注释标志。2Y轴定位输出器设计的编程if TR=0 then - TR=0逻辑信号扫描,由位计数器值和数据接收器值确定Y值if BitC=000 then 第1路逻辑信号,对应字节内的最高位,示波器上端if DI(7)=0 then Y=11100101; - DI(7)=0,Y=E5Helse Y=11110101; - DI(7

20、)=1,Y=F5Hend if;elsif BitC=001 then - 第二路if DI(6)=0 then Y=11000101; - DI(6)=0,Y=C5Helse Y=11010101; - DI(6)=1,Y=D5Hend if;elsif BitC=010 then - 第三路if DI(5)=0then Y=10100101; - DI(5)=0,Y=A5Helse Y=10110101; - DI(5)=1,Y=B5Hend if;elsif BitC=011 then - 第四路if DI(4)=0then Y=10000101; - DI(4)=0,Y=85Helse

21、 Y=10010101; - DI(4)=1,Y=95Hend if;elsif BitC=100 then - 第五路if DI(3)=0 then Y=01100101; - DI(3)=0,Y=65Helse Y=01110101; - DI(3)=1,Y=75Hend if;elsif BitC=101 then - 第六路if DI(2)=0 then Y=01000101; - DI(2)=0,Y=45Helse Y=01010101; - DI(2)=1,Y=55Hend if;elsif BitC=110 then - 第七路if DI(1)=0 then Y=00100101

22、; - DI(1)=0,Y=25Helse Y=00110101; - DI(1)=1,Y=35Hend if;elsif BitC=111 then - 第八路if DI(0)=0 then Y=00000101; - DI(0)=0,Y=05Helse Y=00010101; - DI(0)=1,Y=15Hend if;end if;else - TR=1触发字和时标线位置扫描,Y轴定位输出器按计数方式工作if Y11111111 then - Y11111111时,计数增1,从下到上扫描位置线Y=Y+1;Z2=0; - Z2=0,正常显示else - Y=11111111时,消隐控制,发

23、出中断申请Z2=1, INT1) ADC_TIMEOUT=0;ADC_R=1;/设置界面显示用ADC采样完毕标志OSSemPost(ADC_SEM); /传送ADC采样信号量接收端的主要代码如下:While(1)OSTimeDlyHMSM(0,0,0,100);/延时100msOSSemPend(ADC-SEM,0,&err);/等待ADC信号量(2)数据存储模块 数据存储模块将采样模块采集进来的数据存储起来,然后传送给显示模块在LCD上显示出来。数据存储需要时钟来控制其读取数据。该模块的设计采用分配片内SRAM来实现数据的存储。因此要先配置系统所需的时钟,由于AHB和APB域的最大频率是72

24、MHz。APB1域的最大允许频率是36MHz。因此时钟配置如下:#define SYSCLK_FREQ_72MHz7200000配置高级高性能总线AHB(HCLK)时钟=SYSCLK,这是DMA挂靠的总线:RCC_HCLKConfig(RCC_SYSCLK_Div1);配置APB2(PCLK2)时钟=AHB时钟,这是AD、I/O挂靠的总线时钟:RCC_PCLK2Config(RCC_HCLK_Div1);配置APB1(PCLK1)钟=AHB 1/2时钟:RCC_PCLK1Config(RCC_HCLK_Div2);配置ADC时钟=PCLK2/6,此时ADC时钟频率达到12MHz:RCC_ADC

25、CLKConfig(RCC_PCLK2_Div6);配置PLL时钟=外部高速晶体时钟*9RCC_PLLConfig (RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);这里时钟配置基本结束。接下来就是要定义一个ADC1的外设地址:#define ADC1_DR_Address(u32)0x4001244C)定义一个变量来存储AD1通道1017的采样数据:EXT volatile unsigned short int ADC_ConvertedValue800定义DMA外设基地址,让DMA到ADC1_DR_Address读取数据并存入ADC_ConvertedValue中:DMA_InieStructure.DMA_PeripheralBaseAddr =ADC1_DR_Address;DMA_InieStructure.DMA_MemoryBa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论