1、基于EDA与单片机技术的逻辑分析仪设计目录1 概述- 1 -2 总体设计及方案论证- 1 -3 基于EDA技术的显示控制设计- 3 -4 显示部分CPLD芯片的VHDL程序设计- 8 -5 调试- 15 -6 结束语- 16 -致谢- 17 -参考文献- 18 -附录- 19 -1 概述随着数字技术的发展和广泛应用,而普通的示波器最多只能测试两路信号波形,无法满足电路的测试的需求因而需要一种新的仪器来对数字电路进行测试。逻辑分析仪正是能满足这一需求的一种新型的数字测试仪器。它应用于微机等数字系统的软件、硬件调试,故障检查,性能分析等过程中。它可以监测硬件电路工作时的逻辑电平,并加以存储,用图形
2、的方式直观地表达出来,便于用户检测,分析电路设计中的错误。本系统的设计电路由8位数字信号发生器电路、数据采集电路、功能控制系统、显示电路四部分构成。8位数字信号发生器电路可以产生8路循环移位逻辑信号序列,并能设定、调节并显示预置值。数据采集电路:由单片机控制,含有RAM及8位输入电路等,能够采集并存储输入的8位逻辑序列。功能控制系统:它也是由单片机控制,完成设定、显示、调整系统各功能项的任务。显示电路:主要由可编程逻辑器件CPLD和电平移位及扫描电路组成,用于将RAM中的8路逻辑序列取出,将其高速送入示波器稳定显示。2 总体设计及方案论证本设计的逻辑分析仪系统包括四个部分:1、8位数字信号发生
3、器;2、数据采集电路;3、功能控制电路;4、显示电路。整个系统框图如图1所示:图1 系统方框简图2.1 8位数字信号发生器产生8路可预置的循环移位逻辑信号序列,输出信号为TTL电平,序列时钟频率为100Hz,并能够重复输出。这里有两种方案供选择:方案1、采用中、小规模器件实现;方案2、用单片机AT89S52来完成。如果使用中、小规模器件,虽然不需要使用软件编程,但使用的芯片很多,不仅电路复杂,而且由于电路内部接口信号烦琐,中间关联多,抗干扰能力差。而单片机作为一个智能化的可编程器件,可以通过软件完成相关功能。因此,我们采用方案2来完成8位数字信号发生器电路。2.2 数据采集电路该部分数据采集电
4、路的实现有三种方案。方案1:由8选1采样模拟开关(CD4051)和模数转换器ADC(TLC0820)组成。方案2:用单片AT89S52机完成数据采集及存储。方案3:用可编程逻辑器件CPLD来实现。由于本设计所要求采集的是100Hz的低频时钟序列,方案们2和方案3的系统都比较复杂。所以,我们使用方案1实现数据采集电路。2.3 功能控制电路此系统实现控制简易逻辑分析仪的某些特殊功能。有两种方案:方案1、元件组成控制系统。方案2、用单片机AT89S52完成。如前所述,与中、小规模元件组成的控制系统相比,单片机有着先天的优势,不仅系统更加稳定,而且易于操作。 因此方案2更合理。第四部分显示系统也可以有
5、两种方案:方案1、使用CPLD完成控制;方案2、用单片机AT89S52实现控制。2.4 显示电路本题要求在示波器上清晰稳定地显示信号序列,显示系统必须高速地从RAM中提取数据并传送到示波器的输入端口。普通的单片机数据传送速率很难满足这个要求,AT89S52也是一样。而可编程逻辑器件CPLD工作速度快,为ns量级,可以完成题中高速采样及显示工作。因此,这里选用方案1。经过论证,我们可以确立各部分电路的组成。8位数字发生器由单片机(AT89S52)实现。功能控制系统由单片机(AT89S52)、点阵液晶显示模块和44键盘三部分组成。由8选1采样模拟开关(CD4051)和模数转换器ADC(TLC082
6、0)组成。显示电路由可编程逻辑器件(CPLD)、数模转换器(DAC)和X、Y、Z轴扫描信号放大电路组成,并在CPLD控制下工作。3 基于EDA技术的显示控制设计本设计的显示控制部分在设计时应用了EDA技术,显示部分的主要功能由CPLD芯片完成。3.1 显示控制部分的工作原理本设计的显示控制部分由CPLD芯片、DA7528数模转换器、运放、和示波器组成。完成数据接收、CPLD点阵扫描、数模转化和示波器显示这几部分功能。3.1.1 数据接收单片机通过控制信号控制CPLD接收要进行扫描的信号。CPLD和单片机之间有8条数据通道,分别传输8路逻辑信号,每个通道一次可以发送一位数据,即8条通道一次可以发
7、送一个字节的数据。CPLD完成一次的数据接受后通过中断请求使单片机发送下一个数据。其原理图如图2所示:图2 CPLD数据接收原理图3.1.2 CPLD点阵扫描CPLD接收到单片机发送过来的信号后对其进行扫描,产生出8路信号的显示控制信号。本设计中CPLD输出的X、Y轴数字量都是8位,即使8路信号在一个256256的点阵上显示。CPLD通过确定每路信号的高电平、低电平的Y轴数字量使8路信号从上到下在点阵上的不同区域显示(例如:第一路信号的高电平、低电平的Y轴数字两分别为11110101、11100101,则第一路信号在Y轴数字两为1111010111100101的区域内显示,高电平、低电平分别显
8、示在Y=11110101、Y=11100101这两条直线上)。通过确定X轴数字量确定每路逻辑信号的边沿。各路信号显示的位置如图3所示:图3 各路信号的显示位置3.1.3 数模转换各路信号通过CPLD处理后,产生显示控制信号是数字信号。由于本设计中是用示波器显示,而示波器的控制信号是模拟信号,所以CPLD产生的控制信号还要经过数模转换和放大后再输入到示波器上。在本设计中使用的是DA7528,DA7528有8个输入通道能将两路8位数字信号转换为模拟信号,并同时输出,其工作状模式如表1所示:表1 DA7528的工作模式DA7528的内部结构如图4所示:图4 DA7528的内部结构3.1.4 示波器显
9、示双踪信号示波器的工作方式X-Y,探头Y1为X轴输入,探头Y2为Y轴输入,显像管电子枪控制端为Z轴输入。CPLD输出的X、Y轴数字量X、Y经过数模转换和放大处理后,产生示波器X、Y轴扫描的模拟信号,在示波器屏上显示8路逻辑信号。3.2 CPLD芯片的内部结构和工作原理 CPLD芯片是本设计显示部分的核心,实现数据接收和产生点阵扫描控制信号的功能,CPLD芯片通过下载VHDL语言程序,实现程序所描述的功能。3.2.1 本设计中CPLD芯片的内部结构CPLD内部由计数器链(2分频器,点、位、字节计数器)、数据接收器、X轴位边界定位器、加法器、Y轴定位输出器、2选1多路器、消隐控制器等部分组成。如图
10、12所示:图12 CPLD的内部结构3.2.2 本设计中的CPLD芯片的工作原理开机后,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=ByteC10H)与点计数器(位内点计数)值Xc再经过加法
11、器处理,产生当前扫描点X轴数字量X=X1+Xc=ByteC10H+Xc。位计数器(采样字节各位计数)值BitC和数据接收器(存放采样字节)值DI70经过轴定位输出器处理,产生当前扫描点轴数字量的Y有两种:当DIBitC=0,Y=0E0H-(BitC20H)+05H;当DIBitC=1,Y=0E0H-(BitC*20H)+15H。在A0正(A0=1)、负(A0=0)状态对2选1多路器的驱动下,分时将Y、X送到DO70总线上;以此同时,在两个-WR(-CLK)的上升沿(A0正、负半个周期的中间)驱动下,将送到DO70总线上的Y和X分别写入数模转换器DAC的两个通道。位计数器值BitC=7时,表示一
12、个采样字节处理完,CPLD发出传送下一个字节的中断请求-INT。逻辑分析仪单片机收到中断请求后,进行一次数据传送处理。(3)触发字和时间线位置扫描在EN=1前提下,TR=1将数据接收器DI30(位置信息)送入字节计数器,并控制点计数器值Xc=0,经过X轴位边界定位器和加法器处理后,产生扫描点X轴数字量X=X1+Xc=DI30 10H+0;同时TR=1控制Y轴定位输出器的值Y按计数方式工作,在CLK1驱动下,输出Y=000FFH的计数值,在示波器屏上显示竖线,表示触发字或时间线位置。当Y=0FFH时,表示位置信息扫描完毕,发出传送下一个字节的中断请求信号。(4)消隐处理在Xc=0FH,即开始下1
13、路时钟位各点扫描时,点计数器输出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轴数
14、字量X、Y经过数模转换和放大处理后,产生示波器X、Y轴扫描的模拟信号,在示波器屏上显示8路逻辑信号。CPLD输出的Zout信号经放大后,控制示波器的Z轴,以消隐回扫线和干扰点,使8路逻辑信号更清晰的显示。CPLD点阵扫描控制电路在每次输出8路1位信号波形后,向单片机系统发出采样字节输出中断;对每次采样字节输出中断的服务,单片机要对CPLD进行一次采样字节输出及写操作控制。输出的采样字节有波形数据、触发字和时标线位置三种数据类型。4 显示部分CPLD芯片的VHDL程序设计 通过下载使用硬件描述语言编写的程序程序可以使CPLD芯片具有不同的功能,本设计中使用的硬件描述语言是VHDL。下面简单讲述本
15、设计的显示部分的CPLD芯片的VHDL程序的设计。4.1 设计中使用的硬件描述语言简介VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware escription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行
16、了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体
17、的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。 (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支
18、持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。4.2 本设计的CPLD芯片设计4.2.1设计时使用的编程软件MAX+plusII是Altera提供的FPGA/CPLD开发集成环境。MAX+plusII界面友好,使用便捷,它不需设计者精通器件内部的复杂结构,可以用自己熟悉
19、的设计输入方式(原理图输入或硬件描述语言输入)建立设计项目。设计处理一般在数分钟内完成。特别是在原理图输入等方面,MAX+plus II开发软件被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。MAX+plusII具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在适配之后,MAX+plusII生成供时序仿真用的不同格式的网表文件。4.2.2 CPLD芯片的设计流程使用MAX+plusII进行设计包括四个阶段:设计输入、设计处理、设计验证和器件编程。CPLD设计流程如图5所示图5 CPLD设计流程图4.2.3 VHDL程序的设计界面(1) MAX-plu
20、sII的开始界面MAX-plusII的主界面如图6所示:图6 MAX-plusII的主界面(2)VHDL语言的编辑界面在MAX-plusII的文本编辑器中编写VHDL程序,VHDL语言的编辑界面如图7所示:图7 VHDL语言的编辑界面(3) 选择CPLD芯片的型号在把程序下载到CPLD芯片之前要指定所使用的CPLD芯片的型号,在本设计中选用的是EPM7128SLC84-7。CPLD的选择界面如图8所示:图8 CPLD芯片选择界面(4) 选定引脚指定了了所用的芯片型号后还要为每个端口指定相对应的芯片I/O引脚。如图9所示:图9 CPLD的引脚选定界面(5) 编译VHDL程序编写好后就要进行编译,
21、MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后对设计进行布局布线,放到一个器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。逻辑综合:就是把VHDL语言或原理图翻译成最基本的与或非门的连接关系。布局布线:把这种与或非门的连接关系用芯片的内部的结构和连线来实现。如果设计正确,将图10,点确定图10VHDL程序的编译界面(6) 查看芯片I/O布局编译完后可以看到各个端口在CPLD芯片上的分布。如图11所示图11 各端口在CPLD芯片上的分布4.3 部分VHDL程序设计及解释Y轴定位输出器设计的编程if TR=0 then - TR=0逻辑信号扫描,由位计数
22、器值和数据接收器值确定Y值if BitC=000 then 第1路逻辑信号,对应字节内的最高位,示波器上端if DI(7)=0 then Y=11100101; - DI(7)=0,Y=E5Helse Y=11110101; - DI(7)=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
23、)=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 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 the
24、n 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; - 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
25、触发字和时标线位置扫描,Y轴定位输出器按计数方式工作if Y11111111 then - Y11111111时,计数增1,从下到上扫描位置线Y=Y+1;Z2=0; - Z2=0,正常显示else - Y=11111111时,消隐控制,发出中断申请Z2=1, INT=0;end if;end if;5 调试 5.1 调试时使用的仪器双踪示波器;万用电表;电源。5.2 调试中遇到的问题刚开始时单片机有输出CPLD无输出,判断为CPLD的程序有错误,通过多次修改程序后,CPLD能够输出正确的波形。CPLD正常工作后发现DA7528只有outA有输出,用万用电表对DA7528的连线进行检查,发现DA
26、C A/DAC B脚虚焊,重新焊接后故障排除。最后连接好示波器,发现没有正确图象显示,检查后发现运放无法工作,更换新的运放后故障排除。5.3 调试结果采用先分别测试各单元模块,测试通过后再进行整机调试的方法,很好地提高了调试效率。(1)经测试可得8路可预置的循环移位逻辑信号序列。(2)用示波器显示序列脉冲,满足要求100HZ。用示波器v/div调至5v,t/div调至5ms,测试循环序列码波形能满足要求。(3)可设置单级触发字,当被测信号电平与触发字所设定的逻辑状态相同时,即满足触发条件,能够对被测信号进行一次采集存储。(4)利用示波器看到8路波形,并能够显示触发点的位置经测试。(5)通过调节
27、电位器,、用电压表测得逻辑信号门限电压在0.254v之间且可按16级变化。6 结束语运用EDA技术进行数字逻辑电路的的设计,设计者可以只考虑的行为和所要实现的功能,不需要考虑电路的硬件实现和具体的步线等底层问题。而且可以在计算机上看到所设计的电路的模拟结果,所以在设计时就可以快速的找出问题进行修改和优化,开阔了设计者的设计空间,加快了设计的速度。运用EDA技术进行电子电路的设计开发在功能、性能和效率等指标上对比传统方法有着显著的提高,而且可以有效的降低设计、开发的成本。通过这次的毕业设计不仅锻炼了我们的动手能力,激发了我们的创新思维,提高了我们的团队合作精神,而且培养了我们面对挫折勇于克服的意
28、志品质和吃苦耐劳的精神。我们也深深的体会到理论结合实际的重要性,体会到知识的海洋是无穷无尽,激发我们去追求。致谢在做这个毕业设计的过程中得到了很多人的关心和帮助。能够完成这次的毕业设计,首先我要感谢我的指导老师夏新恩老师和洪远泉老师,在做这个毕业设计的过程中,他们两位帮助了我很多,不但教了我完成这个毕业设计所需要的EDA的知识,帮我明确自己的目标,对于这个设计老师也给了很多宝贵的意见和建议。我要感谢我们组的其他成员,在做毕业设计的这段时间里,他们给了我很多帮助,遇到问题的时候大家也一起讨论解决。还要感谢在这段时间里给予我关心和帮助的各位同学、朋友们。参考文献1潘松,黄继业. EDA技术实用教程
29、M.科学出版社,20022赵刚. EDA技术简明教程M.四川大学出版社,20043林明权等.VHDL数字控制系统设计范例.电子工业出版社,20034顾乃级,孙续. 逻辑分析仪原理与应用M. 北京:人民邮电出版社,1973.5李华. MCS-51系列单片机实用接口技术M. 北京:北京航空航天大学出版社,19936江国强. EDA技术与应用M. 电子工业出版社,20047汉泽西等. EDA技术及其应用M. 北京航空航天大学出版社,20048曾繁泰,李冰,李晓林.EDA工程概论M. 清华大学出版社,2002附录VHDL语言主要源程序library ieee;use ieee.std_logic_11
30、64.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(clk:in std_logic;syn:in std_logic;enable:in std_logic;address:in std_logic_vector(1 downto 0);din:in std_logic_vector( 7 downto 0);interrupt:out std_logic;qout:buffer std_logic_vector(7 downto 0);a0,wr,cs:out s
31、td_logic;z:out std_logic);end display;architecture a of display issignal q:std_logic_vector(7 downto 0);signal trigline:std_logic_vector(3 downto 0);signal trigbit:std_logic;signal count:std_logic_vector(1 downto 0):=00;signal xvalue:std_logic_vector(7 downto 0):=00000000;signal yvalue:std_logic_vec
32、tor(7 downto 0):=00000000;signal addr:std_logic_vector(3 downto 0);signal xcount:std_logic_vector(3 downto 0):=0000;signal ycount:std_logic_vector(2 downto 0):=000;beginpro1:process(syn)beginif synevent and syn=1 thenif address=00 thenaddr=din(3 downto 0);q=q;trigbit=0;elsif address=01thenaddr=addr;
33、q=din;trigbit=0;elseaddr=0000;q=q;trigbit=1;trigline=din(3 downto 0);end if;-if trigg=0 then-addr=address;-addr=q(3 downto 0);-q=din;-trigline=0000;-trigbit=0;-else- trigline=address;-trigline=q(3 downto 0);-trigbit=1;-end if;end if;end process pro1;process(clk)beginif clkevent and clk=1 thenif enab
34、le=1 thencount=count+1;if count=00 thenwr=0;cs=0;a0=0;if trigbit=0 thenif ycount=000 thenif q(7)=0 thenyvalue=11100101;elseyvalue=11110101;end if;elsif ycount=001 thenif q(6)=0 thenyvalue=11000101;elseyvalue=11010101;end if;elsif ycount=010 thenif q(5)=0 thenyvalue=10100101;elseyvalue=10110101;end i
35、f;elsif ycount=011 thenif q(4)=0 thenyvalue=10000101;elseyvalue=10010101;end if;elsif ycount=100 thenif q(3)=0 thenyvalue=01100101;elseyvalue=01110101;end if;elsif ycount=101 thenif q(2)=0 thenyvalue=01000101;elseyvalue=01010101;end if;elsif ycount=110 thenif q(1)=0 thenyvalue=00100101;elseyvalue=00
36、110101;end if;elsif ycount=111 thenif q(0)=0 thenyvalue=00000101;elseyvalue=00010101;end if;end if;if xcount=1111 thenif ycount=111 thenxcount=1111;ycount=111;interrupt=0;z=0;yvalue=00000000;-xvalue=xvalue+00010000;elseycount=ycount+1;xcount=xcount+1;interrupt=1;z=1;end if;elsexcount=xcount+1;interr
37、upt=1;zxvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvalue=11110000;end case;end if;elsexcountxvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvaluexvalu
38、exvaluexvaluexvaluexvaluexvalue=11110000;end case;if yvalue=11111111 theninterrupt=0;z=0;elseyvalue=yvalue+1;interrupt=1;z=1;end if;end if;qout=xcount+xvalue;elsif count=01 thenwr=1;cs=1;a0=0;qout=qout;elsif count=10 thenwr=0;cs=1;a0=1;qout=yvalue;elsif count=11 thenwr=1;cs=1;a0=1;qout=qout;end if;elsexcount=0000;ycount=000;end if;end if;end process;end a;- 28 -