简易逻辑分析仪设计Word格式文档下载.docx
《简易逻辑分析仪设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易逻辑分析仪设计Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
![简易逻辑分析仪设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/31/02c853a0-cd7f-4278-8981-4dc1951d9fe4/02c853a0-cd7f-4278-8981-4dc1951d9fe41.gif)
(2天)
3、建立简易逻辑分析仪的框图。
4、绘制框图。
5、对系统进行仿真,确定PID控制参数,分析系统性能。
6、撰写、打印设计说明书(1天)
指导教师评语及成绩
平时:
论文质量:
答辩:
总成绩:
指导教师签字:
学生签字
年月日
注:
成绩:
平时20%论文质量60%答辩20%以百分制计算
摘要
本系统的设计电路由8位数字信号发生器电路、数据采集电路、功能控制系统、显示电路四部分构成。
8位数字信号发生器电路:
由单片机、液晶、按键等元器件组成,可以产生8路循环移位逻辑信号序列,并能设定、调节并显示预置值。
数据采集电路:
由单片机控制,含有RAM及8位输入电路等,能够采集并存储输入的8位逻辑序列。
功能控制系统:
它也是由单片机控制,完成设定、显示、调整系统各功能项的任务。
显示电路:
主要由可编程逻辑器件CPLD和电平移位及扫描电路组成,用于将RAM中的8路逻辑序列取出,将其高速送入示波器稳定显示。
关键词:
可编程器件CPLD;
电平位移;
扫描电路;
第1章绪论
逻辑分析仪在数字科技中的地位
数字科技对检测仪器的需求20世纪70年代以来,大规模集成电路、可编程逻辑器件、高速数据信号处理器和计算机技术等高新技术得到迅猛发展,为解决数字设备、计算机及VLSI等电路在研制、生产、检修和维护中的测试问题,出现了一类新的测试设备。
因为其被测系统的信息载体主要是二进制数据流,为区别于频域或时域的测量,把这一类测试统称为数据域(DataDomain)测试,即有关数字系统的测试称为数据域测试。
以离散时间或事件出现的次序为自变量,状态值为因变量的函数关系属数据域范畴。
因此数据信息是由状态空间概念、数据格式和数据源构成的。
它与频域或时域的信息不一样,具有以下一些特征:
1数字信息几乎都是多位传输的。
2数字信息是按时序传递的。
3许多信号仅发生一次。
有些信号虽然可以重复发生,但是它们是非周期性的。
4造成系统出错的误码常混在一串正确的数据流中,实际上只有错误已经发生以后才能辨认出来。
5信号的速度变换范围很大(如高速运行的主机和低速的外围设备)系统的检测不可能象对模拟系统那样。
本文研究内容
1.具有采集8路逻辑信号的功能,并可设置单级触发字。
2.能利用模拟示波器清晰稳定地显示所采集到的8路信号波形,并显示触发点位置。
3.8位输入电路的输入阻抗大于50kΩ,其逻辑信号门限电压可在0.25~4V范围内按16级变化,以适应各种输入信号的逻辑电平。
4.每通道的存储深度为20bit。
第2章方案论证
简易逻辑分析仪系统包括四个部分:
(1)8位数字信号发生器
(2)数据采集电路(3)功能控制电路(4)显示电路。
整个系统框图如图
(1)所示:
第一部分是8位数字信号发生器。
本题要求能产生8路可预置的循环移位逻辑信号序列,输出信号为TTL电平,序列时钟频率为100Hz,并能够重复输出。
这里有两种方案供选择:
1、采用中、小规模器件实现;
2、用单片机AT89C52来完成。
如果使用中、小规模器件,虽然不需要使用软件编程,但使用的芯片很多,不仅电路复杂,而且由于电路内部接口信号烦琐,中间关联多,抗干扰能力差。
而单片机作为一个智能化的可编程器件,可以通过软件完成相关功能。
因此,我们采用方案2来完成8位数字信号发生器电路。
第二部分为功能控制系统。
此系统实现控制简易逻辑分析仪的某些特殊功能。
有两种方案:
1、用中小规模元件组成控制系统。
2用单片机AT89C52完成。
如前所述,与中、小规模元件组成的控制系统相比,单片机仅系统更加稳定,而且易于操作。
因此方案2更合理
第三部分数据采集电路的实现也有两种方案。
方案1:
用单片AT89C52机完成数据采集及存储。
方案2:
用可编程逻辑器件CPLD来实现。
由于题目要求采集的是100Hz的低频时钟序列,用普通单片机可以轻松实现,不需要使用复杂的CPLD系统。
所以,我们使用方案1实现数据采集电路。
第四部分显示系统也可以有两种方案:
1、使用CPLD完成控制;
2、用单片机AT89C52实现控制。
本题要求在示波器上清晰稳定地显示信号序列,显示系统必须高速地从RAM中提取数据并传送到示波器的输入端口。
普通的单片机数据传送速率很难满足这个要求,AT89C52也是一样。
而可编程逻辑器件CPLD工作速度快,为ns量级,可以完成题中高速采样及显示工作。
因此,这里选用方案1。
经过论证,我们可以确立各部分电路的主控器件:
单片机AT89C52(8位数字发生器)
单片机AT89C52(功能控制系统)
单片机AT89C52(数据采集电路)
可编程逻辑器件CPLD(显示电路)
第3章系统原理框图
前面的方案论证为各个部分电路确立了主控器件。
以此为基础,根据题目的基本要求和发挥部分的需要,进一步完善各部分电路的具体实现,作出了此分析仪的系统原理框图,如图
(2)所示:
第4章系统电路
根据前面的讨论,本系统需要设计的电路共四块,现在我们就每一块具体电路进行具体分析。
8位数字信号发生器具体电路如下图
依据题目要求,要产生100Hz循环移位逻辑信号序列,需要给AT89C52定时器设定10ms中断,利用中断程序来实现这个目的。
电路中使用了两个按键分别控制序列的高8位和低8位。
中文液晶显示器用来显示预置值的设定情况。
4.2功能控制系统
本系统使用AT89C52设定触发字,送给采集系统,同时产生16选1的数字控制信号,送给模拟开关4067,以便从0.25V~4.0V之间的16个等级选出一级送到高速比较器,作为不同逻辑电平转换的参考电压。
4.3数据采集电路。
本模块以AT89C52为控制器,外接RAM,采用分时复用的方式,进行数据的采集。
4.4显示系统
为了将CPLD还原的八路TTL逻辑电平清晰稳定地显示在逻辑示波器上,首先需要将八路信号分别移位到不同的电平等级上。
为此,我们采用了8个T型电阻组成的网络来进行电平移位。
T型电阻的结构如下:
设Vin=0
V时,V0=V1;
Vin=5V时,V0=V2。
根据KCL原理,利用下列二元一次方程组求出R1、R2:
V1/R0=(5-V1)/R1-V1/R2
V2/R2=(5-V2)/R0+(5-V2)/R1
其中,V1为脉冲序列的低电平,电压从1V开始,每路信号增加0.1V。
V2为脉冲序列的高电平,电压为V1+0.2V
设R0=51KΩ
解此方程组可得R1、R2列如下表:
1路
2路
3路
4路
5路
6路
7路
8路
R1/KΩ
10.00
7.692
6.250
5.263
4.545
4.000
3.571
3.226
R2/KΩ
2.632
2.857
3.125
3.448
3.846
4.348
5.000
5.882
V1/V
1.0
1.3
1.6
1.9
2.2
2.5
2.8
3.1
V2/V
1.2
1.5
1.8
2.1
2.4
2.7
3.0
3.3
其次,需要一个8路转换开关。
在此采用了模拟开关4051,通过一个8进制计数器循环转换8个通道的信号。
只要信号还原的速率和转换的速率符合一定的关系,就能在模拟示波器上清晰的显示8路通道的信号。
第5章系统软件设计
信号发生器内控制器的软件流程图如下:
采集系统的软件流程图为
用VHDL语言设计的数据还原电路顶层框图如下
第6章调试过程及功能实现
系统的调试先分模块进行,最后进行整机调试。
(一)分模块调试
1、8路信号源调试。
由信号源产生的8路循环移位逻辑信号序列按照题目要求接入8路显示电路的输入端。
输出端则接到示波器上。
经过几次测试,模拟示波器上显示的波形基本符合题目要求,测试波形如下:
2、采集电路调试,在采集电路数据输入部分加入标准信号,由单片机将其写入RAM指定的地址中,在将其读出后显示在LED显示。
3、显示电路的调试,调节T型电阻网络,用高精度电位器确定电阻阻值,并进行微调,结果显示正常。
(二)整机电路的调试。
由电路整体连接电路后,经断电检测后,没发现短路、接地和开路现象,然后进行整机上电测试。
(三)功能实现
(1)检测门限电压可调部分,能够完成题目要求。
(2)通过游标在示波器上显示触发位置,并由按键调节触发位置。
(3)由高频信号源产生窄脉冲,由二选一电路控制窄脉冲输出,
从而在示波器上显示时间标志线。
(4)由CPLD输出8位信号,用LED显示当前时间标志线上的
逻辑状态。
(5)由单片机输入三级触发字,实现三级触发,从而完成题目要求
第7章结果分析
1设定信号序列预置值55H,单级触发字55H,门限电平为2V。
按单次触发键后。
示波器上显示的波形如下:
2为了在示波器上同时显示8路信号,必须采用电平移位电路,采用T型电阻网络,。
与此同时采用了8路模拟开关4051循环显示。
为了使模拟开关自动切换通道用CPLD制作了8位循环记数器。
为了使门限电平可调制作了高精密度的电阻分压网络,通过16选一模拟开关4067输出后送到高速比较器LM393上,输入信号与之比较后送到单片机进行采集。
第8章总结
我本次设计简易逻辑分析仪是将由八位数字信号发生器、八位数据采集系统、单片机系统和示波器显示扩展电路组成。
八位数字信号发生器产生预置的循环移位逻辑信号序列,并送入八位数据采集系统中去。
单片机系统是整个系统的核心部分,它控制着采集、数据处理、显示等功能。
简易逻辑分析仪是既可显示波形,也可显示状态表。
它是用单片机来实现的。
单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。
但它还可以用PLD技术来实现,能够借助PLD高速实现和修改功能性硬件,以极短的时间推出原形,进而实现Internet的远距离控制;
与此同时,由于PLD所具有的灵活性,现场可编程特性使产品极容易由用户自行配置,使其在维持硬件原有水平的同时,能够根据实际的需要或者变化进行调整。
在此次论文完成之际,我要向我的指导老师给予我的指导与帮助表示感谢。
参考文献
[1]江波,叶丽.基于51单片机的简易逻辑分析仪[J].广西大学学报(自然科学版)2008年6期
[2]咸德勇,张建,喻小虎.简易逻辑分析仪(D题)[J].电子世界.2009年7期:
25—31
[3]黄任,杨芳芳,张万能.简易逻辑分析仪[J].电子世界.2009年6期:
42--48
[4]罗鹏,张文强,周斌.简易逻辑分析仪设计[J].信息与电脑.2009年7期25—30
[5]黄烁,梅忠义.简易逻辑分析仪设计,阜阳师范学院学报:
自然科学版2010年2期
[6]朱振华,楚晚琴。
简易逻辑分析仪的设计与实现.实验室研究与探索2001年4月第20卷第2期
[7]孔冬莲,基于示波器现实的简易逻辑分析仪设计,鄂州大学学报2006年3期
[8]鲜永菊.示波器功能拓展电路:
简易逻辑分析仪的研制,重亲邮电学院学报:
自然科学版2000年1期
附录1
一、单片机主要源程序
1、数字信号发生器
#include<
reg52.h>
intrins.h>
def.c>
ocmjb.c>
getkey.c>
initial.c>
voidmain(void)
{
uchari;
ucharj;
initial();
for(;
;
)
{
for(i=0x02,j=0x00;
i<
0x09;
i++,j=j+2)
WriteScr(0xf0,i,0x00,menu[j]-0xa0,menu[j+1]-0xa0,0x04);
}
if((signalword&
0xf0)<
0xa0)
WriteScr(0xf9,0x04,0x10,((signalword>
>
4)&
0x0f)+0x30,0x00,0x03);
else
0x0f)+0x37,0x00,0x03);
0x0f)<
0x0a)
WriteScr(0xf9,0x05,0x10,(signalword&
}
voidtime0_int(void)interrupt1
TH0=TH0NUM;
TL0=TL0NUM;
shiftword=_crol_(shiftword,1);
clkout=1;
signal=shiftword;
_nop_();
clkout=0;
voidint0(void)interrupt0
GetKeyInput();
2、功能控制
lg.c>
main()
{
EX0=1;
IT0=1;
EA=1;
chufa=chufazi;
write_128321(0,0x0c);
write_128321(0,0x80);
for(i=0;
10;
i++)
write_128321(1,menu1[i]);
write_128321(1,0x3a);
if((chufazi&
write_128321(1,((chufazi>
0x0f)+0x30);
else
0x0f)+0x37);
write_128321(1,(chufazi&
write_128321(0,0x90);
write_128321(1,menu2[i]);
write_128321(1,menu3[4*menxian]);
write_128321(1,menu3[4*menxian+1]);
write_128321(1,menu3[4*menxian+2]);
write_128321(1,menu3[4*menxian+3]);
write_128321(1,0x56);
3、数据采集
delay.c>
PX0=1;
EX1=1;
IT1=1;
);
delay(3000);
if(INT0==1)
return;
if(flag==0)
flag=1;
intrd=0;
addrzi=0x00;
voidint1(void)interrupt2
if(flag==1)
chufazi=chufa;
caijizi=caiji;
if(mmm==0)
if(caijizi==chufazi)
mmm=1;
}
if(mmm==1)
{
delay(100);
if(addrzi<
20)
{
address=addrzi;
cs=0;
_nop_();
wr=0;
wr=1;
cs=1;
addrzi++;
flag=0;
intrd=1;
mmm=0;
二、VHDL语言主要源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityrdis
port(clk4M,pdata,intrd:
instd_logic;
rami:
instd_logic_vector(7downto0);
cs,we,oe,tong:
outstd_logic;
addr,dout:
outstd_logic_vector(7downto0));
endrd;
architecturerd_arcofrdis
begin
process(clk4M,intrd)
variableabc:
std_logic_vector(7downto0);
variablestate:
integerrange0to499;
begin
ifintrd='
0'
then
we<
='
1'
cs<
oe<
tong<
abc:
="
00000000"
state:
=0;
elsifclk4M'
eventandclk4M='
casestateis
when0=>
addr<
=abc;
=1;
when1=>
oe<
=2;
when2=>
dout<
=rami;
=3;
when3=>
=4;
when499=>
state:
=abc+1;
whenothers=>
=state+1;
endcase;
ifabc>
19then
endif;
ifpdata='
ifabc="
00001010"
endprocess;
endrd_arc;
entitycounter8is
port(clk,clr:
q:
outstd_logic_vector(2downto0));
endcounter8;
architecturecounter8_arcofcounter8is
process(clk,clr)
variabletemp:
std_logic_vector(2downto0);
ifclr='
temp:
000"
elsifclk'
eventandclk='
=temp+1;
q<
=temp;
endcounter8_arc;