如何实现CPLD计数功能的调试

如何实现CPLD计数功能的调试,第1张

一、实验目的

1 熟悉CPLD的开发软件的基本使用。

2 掌握CPLD逻辑电路设计方法。

3 会用逻辑分析仪进行数字电路的测试分析。

二、实验任务和内容

1 在CPLD中设计一个多位计数器电路,设计要求为:

(1)6位十进制加法/减法计数器,运行过程中可改变加法或减法;

(2)输入计数信号频率最高1MHz,信号电平为0~5V的脉冲信号。

(3)6位数码管动态扫描显示,显示亮度均匀,不闪烁。

(4)有手动清零按键。

2.对设计的电路进行软件仿真

3.计数器电路的CPLD下载、实验调试。

4.使用虚拟逻辑分析仪进行调试和测试

三、实验器材

1 1SJ-8002B电子测量实验箱 1台

2.计算机(具有运行windows2000和图形化控件的能力 1台

3.函数发生器 1台

4 SJ-7002 CPLD实验板 1块

5 短接线若干

四、实验原理

41 CPLD介绍

可编程逻辑器(PLD)是70年代发展起来的一种划时代的新型逻辑器件,一般来说,PLD器件是由用户配置以完成某种逻辑功能的电路。80年代末,美国ALTERA和XILINX公司采用E2CMOS工艺,分别推出大规模和超大规模的复杂可编程逻辑器件(CPLD)和现场可编程逻辑门阵列器件(FPGA),这种芯片在达到高度集成度的同时,所具有的应用灵活性和多组态功能是以往的LSI/VLSI电路无法比拟的。到90年代,CPLD/FPGA发展更为迅速,不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性。另外,外围I/O模块扩大了在系统中的应用范围和扩展性。较常用的有XILIN X公司的EPLD和ALTERA及LATTICE公司的CPLD。

CPLD/FPGA的设计开发采用功能强大的EDA工具,通过符合国际标准的硬件描述语言(如VHDL或VERILOG-HDL)来进行电子系统设计和产品开发,开发工具的通用性,设计语言的标准化以及设计过程几乎与所用的CPLD/FPGA器件的硬件结构没有关系,所以设计成功的逻辑功能软件有很好的兼容性和可移植性,开发周期短;易学易用,开发便捷。

尽管CPLD、FPGA以及其它类型的PLD器件的结构各有其特点和长处,但是概括起来它们都是由三大部分组成的:(1)一个二维的逻辑块阵列,构成器件的逻辑组成核心;(2)输入/输出块(3)连接逻辑块的互联资源,连线资源由各种长度的线段组成,也包括用于连接逻辑块之间,逻辑块与输入输出部分的可编程连接开关。

本CPLD实验电路板选用ALTERA公司的EPM7128SLC84器件,EPM7128SLC84的特点为:84引脚Pin,内部有128个宏单元、2500个等效逻辑门、15ns的速度、PLCC84封装形式。除电源引脚、地线引脚、全局控制引脚和JTAG引脚外,共提供了64个可用I/O脚,这些引脚可以任意配置为输入、输出和双向方式。

图1 CPLD芯片EPM7128SLC84外形图

42 CPLD(FPGA)器件的设计和验证步骤

一般可分为设计输入、编译、功能仿真和时延仿真、器件下载(编程)、硬件电路三个设计步骤以及相应的功能仿真、时序仿真和器件测试三个设计验证过程。

(1).设计输入:设计输入有多种方式,目前最常用的有电路图和硬件描述语言两种,对于简单的设计,可采用原理图的方式设计,对于复杂的设计可使用原理图或硬件描述语言(Verilog、AHDL、VHDL语言),或者两者混用,采用层次化设计方法,分模块层次地进行描述。原理图设计方法主要是按照数字系统的功能采用具体的逻辑器件组合来实现的,把这些由具体器件实现逻辑功能的电路图输入到软件当中。这种设计方法比较直观。硬件描述语言设计方法主要把数字系统的逻辑功能用硬件语言来描述

(2)编译:编译前先选择器件的系列、型号,分配输入/输出管脚进行管脚,然后开始编译编译是指从设计输入文件到熔丝图文件(CPLD)或位流文件(FPGA)的编译过程。在该过程中,编译软件自动地对设计文件进行综合、优化,并针对所选中的器件进行映射、布局、布线、产生相应的熔丝图或位流数据文件。

(3)仿真:分为功能仿真(Functional)和时延(Timing)仿真:编译成功的设计并不一定完全正确,可通过仿真来验证电路是否达到设计要求,基本思路是首先用波形编辑器编辑仿真文件,给输入加载不同的激励信号,然后运行仿真器,产生对应的输出,根据输入和输出的关系,以此判别设计的正确性。

(4)器件编程:器件编程就是将熔丝图文件或位流数据文件下载到相应的CPLD或FPGA器件中。

(5)系统硬件电路测试

图2 CPLD设计流程

43 设计软件的使用

对CPLD的设计可使用ALTERA公司的MAX-PLUSⅡ或Quartus Ⅱ,设计的主要步骤为:

(1)创建或打开一个工程。

(2)原理图输入方式:新建一个图形文件,输入符号(代表子模块或元件、输入输出引脚),连线,存盘。如图4所示为采用两片74190级联的两位十进制计数器电路,文件名为Z74190gdf。

(3)文本输入方式:新建一个文本文件,输入HDL语言编写的电路,存盘。

(4)选择芯片为CPLD实验电路板选用的EPM7128SLC84器件,分配引脚。

(5)波形仿真,首先新建空白的波形文件,导入本设计电路的输入输出节点,给输入节点按照需要指定时钟信号和高低电平,开始仿真,得到结果,再分析结果。如图5为Z74190gdf的仿真文件波形。

(6)CPLD程序的下载:我们采用的是并口下载电缆ByteBlaster,它可以对MAX7000S系列进行在线编程。该下载电缆具有以下几个部分:与PC机并行口相连的25针插座头、与PCB板插座相连的10针插头。其示意图如3所示。

图 3 并行电缆下载示意图

设计举例:图 4和图 5分别是用原理图方式设计的2位十进制计数器的原理图和软件仿真波形图。

图4两位十进制计数器电路图 图11-5 两位十进制计数器电路仿真波形图

44 CPLD实验电路板原理和虚拟逻辑分析仪使用

实验电路板的组成和虚拟逻辑分析仪的使用在本实验指导书的“实验四 逻辑分析仪的原理和应用”中已作了说明,请读者参考。图6 为CPLD板的详细电路图。CPLD与62芯插座定义表见表1和CPLD可供用户自定义的引脚见表2。

使用CPLD板的1000MHz的晶振时钟,需放置CPLD板上S1短路块位置在右面。

表1 CPLD和62芯插座连线引脚定义

引脚名称 CPLD

芯片引脚

62芯插座引脚

说明

引脚名称

CPLD对应脚

62芯插座引脚

说明

DO0

P40

16

连接逻辑分析仪的24个输入通道

DO24

P63

28

系统保留

DO1

P36

48

DO25

P76

60

DO2

P41

17

DO26

P64

29

DO3

P44

49

DO27

P75

61

DO4

P45

18

DO28

P68

30

DO5

P46

50

VCC

P3,P13,

P26,P3

P43,P5,

P66,P78

31,62

+5V电源

DO6

P48

19

DO7

P49

51

DO8

P50

20

DO9

P51

52

GND

P1,P7,

P19,P32,

P42,P47,

P59,P72,

P82,P84

13,44

电源地

DO10

P55

21

DO11

P52

53

DO12

P54

22

DO13

P65

54

DO14

P57

23

CPLD时钟源

sourceCLK

P83

45

由S1短路

选择接

CPLD-CLK1

DO15

P67

55

DO16

P56

24

DO17

P69

56

DO18

P58

25

outsideclk

P39

15

选择接(P83)

DO19

P70

57

allCLR

P35

47

系统总清零

DO20

P61

26

outside_tri

P37

14

外部触发

DO21

P73

58

DO22

P60

27

DO23

P74

59

表2 用户可用的CPLD自定义I/O引脚

P4 P5

P6

P8

P9

P10

P11

P15

P16

P17

P18

P20

P21

P22

P24

P25

P27

P28

P29

P30

P31

P77

P79

P80

P81

图6 CPLD实验板电路原理图

五、设计指导:

设计和调试的过程是:①任务分析,层次分解,得到顶层设计框图,大致确定每个子模快(子电路)的功能、输入和输出;②子模快电路设计和软件仿真;③完成顶层电路设计,顶层仿真;④分配引脚,下载,连线和调试。

软件仿真注意尽量给定符合实际电路工作的输入电平、时钟,仿真最小间隔不小于20ns,仿真时间长短适中。

51 设计任务分析

根据设计任务,可分为两大部分:多位计数器电路和计数结果动态显示电路。根据CPLD电路的层次化设计功能,设计出如图7所示的顶层设计框图。

6位十进制的计数器对输入的脉冲计数,有加减计数控制和清零计数值控制,输出6位十进制计数值,每位都用4位BCD码表示,共有24根线。

根据动态扫描显示的需要,必须设计一个6位BCD选1的多路数据选择器,输出的一位BCD码(4根线)送给BCD-七段译码器译成段信号,从CPLD输出给数码管的7段。同时多路数据选择器的控制选通信号需要3根,必须与6位数码管的位选信号同步。

位选信号来自电路板的时钟(1MHz)分频,在用译码器译码(每次只能选中一个数码管)。要保证多位显示均匀和不闪烁,请计算和设计分频的频

电路的设计均有原理图设计和HDL语言文本设计两种方法,根据电路的特点和各人的情况,自己选用。

对每个子模快进行软件仿真,先创建波形文件,设定时间间隔和解释时间,编辑输入波形,运行仿真,分析结果是否正确。若不正确,则修改设计,重新编译后,再仿真,直到正确为止。

(1)6位十进制的计数器子模块设计:

没有现成电路可用,所以必须自己设计。

为什么不选用二进制计数器?(从显示要求、二进制转换为BCD电路的难易等考虑)

设计方法一:选用6个1位的可逆带清零十进制计数器级联得到。注意进位/借位信号的时序。

设计方法二:使用HDL语言编程,注意同时满足十进制、加、减的进位和借位。

(2)6位BCD选1的多路数据选择器设计:

没有现成电路可用,所以必须自己设计。

可选用多个数据选择器来组合。要求控制选通信号需要3根,按000-001-010-011-100-101变化,只有6个状态。

(3)BCD-七段译码器设计:

有现成电路选用,注意共阴和共阳数码管的区别。

位选信号产生

①位选译码:每次选中一个,可选用什么译码器?注意位选电平是高电平有效还是低电平有效。

②位选控制:要求为6个状态,设计电路可采用状态机的方法,但仔细分析6个状态之间的关系后,可得出符合_________的计数器。

设计方法:语言和图形均可。

分频电路:位选信号来自电路板的时钟(1MHz)分频,要保证多位显示均匀和不闪烁,先计算分频电路要求的输出频率,在设计分频电路。可使用计数器分频。

53分配引脚和编译、下载

引脚分配要满足CPLD电路板上已有的连线情况,把主要的输入信号和重要的中间结果同时分配给逻辑分析仪的输入通道A0~A23,可以利用逻辑分析仪进行测试,观察到电路实际的内部工作时序。每次分配引脚后,需重新编译后,再下载。

六、调试和测试结果

61实验硬件连接

根据各人设计的计数器电路和分配的引脚连线,计数器输入控制信号连接开关和按键,计数脉冲信号连接到函数发生器的TTL(CMOS)输出端。计数器的输出位选分别连接6个数码管的为选端L1~L6注意,左边的数码管为低位,7段信号分别连接。

62调试和测试

按照以下顺序对计数器电路进行测试,如不正确,请按下面步骤检查:连线——引脚分配——CPLD电路设计。改正错误,再测试,若是CPLD电路错误,需重新编译和重新下载。

①检查动态扫描电路

数码管7段信号全部直接接地,位选分别连接CPLD输出位信号,这时,6个数码管应该稳定显示“888888”。

②检查加法计数器是否正确

连接数码管7段信号到CPLD指定输出引脚,位选分别连接CPLD输出位信号,选计数器输入连接函数发生器的TTL电平信号输出端,设置函数发生器为方波,频率为1~2Hz,加/减控制信号输入“加”有效,观察数码管的显示,应是加1计数,更新频率即为输入信号频率。提高输入信号频率,使计数更新快,检查计数器进位和高位计数是否正确。

③检查减法计数器是否正确

加/减控制信号输入“减”有效,测试方法同上。

④检查“清零”控制是否正确。

实了解芯片解密方法之前先要知道什么是芯片解密,网络上对芯片解密的定义很多,其实芯片解密就是通过半导体反向开发技术手段,将已加密的芯片变为不加密的芯片,进而使用编程器读取程序出来。

芯片解密所要具备的条件是:

第一、你要有一定的知识,懂得如何将一个已加密的芯片变为不加密。

第二、必须有读取程序的工具,可能有人就会说,无非就是一个编程器。没错,就是一个编程器,但并非所有的编程器是具备读取的功能。这也就是为什么我们有时候为了解密一个芯片而会去开发一个可读编程器的原因。那我们就讲讲,芯片解密常有的一些方法。

1、软件攻击

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。攻击者利用了该系列单片机擦除 *** 作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的 *** 作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。

至于在其他加密方法的基础上,可以研究出一些设备,配合一定的软件,来做软件攻击。近期国内出现了一种凯基迪科技51芯片解密设备(成都一位高手搞出来的),这种解密器主要针对SyncMosWinbond,在生产工艺上的漏洞,利用某些编程器定位插字节,通过一定的方法查找芯片中是否有连续空位,也就是说查找芯片中连续的FFFF字节,插入的字节能够执行把片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了。

2、电子探测攻击

该技术通常以高时间分辨率来监控处理器在正常 *** 作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。

这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。至于RF编程器可以直接读出老的型号的加密MCU中的程序,就是采用这个原理。

3、过错产生技术

该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误 *** 作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。

4、探针技术

该技术是直接暴露芯片内部连线,然后观察、 *** 控、干扰单片机以达到攻击目的。

5、紫外线攻击方法

紫外线攻击也称为UV攻击方法,就是利用紫外线照射芯片,让加密的芯片变成了不加密的芯片,然后用编程器直接读出程序。这种方法适合OTP的芯片,做单片机的工程师都知道OTP的芯片只能用紫外线才可以擦除。那么要擦出加密也是需要用到紫外线。

目前台湾生产的大部分OTP芯片都是可以使用这种方法解密的,感兴趣的可以试验或到去下载一些技术资料。OTP芯片的封装有陶瓷封装的一半会有石英窗口,这种事可以直接用紫外线照射的,如果是用塑料封装的,就需要先将芯片开盖,将晶圆暴露以后才可以采用紫外光照射。由于这种芯片的加密性比较差,解密基本不需要任何成本,所以市场上这种芯片解密的价格非常便宜,比如SONIX的SN8P2511解密,飞凌单片机解密等价格就非常便宜。

6、利用芯片漏洞

很多芯片在设计的时候有加密的漏洞,这类芯片就可以利用漏洞来攻击芯片读出存储器里的代码,比如我们以前的文章里提到的利用芯片代码的漏洞,如果能找到联系的FF这样的代码就可以插入字节,来达到解密。

还有的是搜索代码里是否含有某个特殊的字节,如果有这样的字节,就可以利用这个字节来将程序导出。这类芯片解密以华邦、新茂的单片为例的比较多,如W78E516解密,N79E825解密等,ATMEL的51系列的AT89C51解密是利用代码的字节漏洞来解密的。

另外有的芯片具有明显的漏洞的,比如在加密后某个管脚再加电信号的时候,会使加密的芯片变成不加密的芯片,由于涉及到国内某家单片机厂家,名称就不列出来了。目前市场上能看到的芯片解密器都是利用芯片或程序的漏洞来实现解密的。

不过外面能买到的解密其基本上是能解得型号很少,因为一般解密公司都不会将核心的东西对外公布或转让。而解密公司自己内部为了解密的方便,自己会使用自制的解密工具,如果致芯科技具有可以解密MS9S09AW32的解密器、能专门解密Lpc2119LPC2368等ARM的解密器,使用这样的解密器解密速度快,客户到公司基本上立等可取。

7、FIB恢复加密熔丝方法

这种方法适用于很多的具有熔丝加密的芯片,最具有代表性的芯片就是ti的msp430解密的方法,因为MSP430加密的时候要烧熔丝,那么只要能将熔丝恢复上,那就变成了不加密的芯片了,如MSP430F1101A解密、MSP430F149解密、MSP430F425解密等。

一般解密公司利用探针来实现,将熔丝位连上,也有的人因为自己没有太多的解密设备,需要交由其它半导体线路修改的公司来修改线路,一般可以使用FIB(聚焦离子束)设备来将线路连接上,或是用专用的激光修改的设备将线路恢复。这些设备目前在国内的二手设备很多,也价格很便宜,一些有实力的解密公司都配置了自己的设备。这种方法由于需要设备和耗材,不是好的方法,但是很多芯片如果没有更好的方法的时候,就需要这种方法来实现。

8、修改加密线路的方法

目前市场上的CPLD以及DSP芯片设计复杂,加密性能要高,采用上述方法是很难做到解密的,那么就需要对芯片结构作前面的分析,然后找到加密电路,然后利用芯片线路修改的设备将芯片的线路做一些修改,让加密电路失效,让加密的DSP或CPLD变成了不加密的芯片从而可以读出代码。如TMS320LF2407A解密,TMS320F28335解密、TMS320F2812解密就是采用这种方法。

了解了这些破解芯片的方法,相应的,我们在设计芯片时也要对这些漏洞尽量加以规避,使自己的芯片更加安全。对于新手来说,设计一款单片机不是容易的事,如果有现成的模块可以使用将会大大节省时间和精力,就有专门为电子工程师提供的电子设计模块,并且全部使用立创商城的正品元器件,质量可靠、售后有保障,可以帮助大家快速搭建产品原型,缩短制作周期

首先在Altera中打开工程->processing菜单下 start compilation->tool菜单下programmer ->新窗口中 add files 添加你工程目录下编译后的pof文件->program/configur 下打钩 ->mode选JTAG ->点击左上角的Hardware setup ,选择你已经安装好驱动的usb blaster -> 点击start

你先照着做一下

以上就是关于如何实现CPLD计数功能的调试全部的内容,包括:如何实现CPLD计数功能的调试、能不能解析一块芯片的系统、如何给cpld芯片 下载烧录程序具体型号是altera epm7064 请高手指点下!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10103831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存