简易逻辑分析仪设计(DOC)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

辽宁工业大学
电子综合设计与制作课程设计(论文)题目:简易逻辑分析仪
院(系):电子与信息工程学院
专业班级:电子081
学号: 080404009
学生姓名:东宇
指导教师:(签字)
起止时间:2011.12.26—2012.01.06
课程设计(论文)任务及评语
院(系):电子与信息工程学院 教研室:电子信息工程 注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算 学 号 080404009
学生姓名 东宇 专业班级 电子081 课程设计
题目
简易逻辑分析仪









务 任务和要求:
设计并制作一个8路数字信号发生器与简易逻辑分析仪。

(1)制作数字信号发生器
能产生8路可预置的循环移位逻辑信号序列,输出信号为TTL 电平,序列时钟频率为100Hz ,并能够重复输出。

(2)制作简易逻辑分析仪 a .具有采集8路逻辑信号的功能,并可设置单级触发字。

信号采集的触发条件为各路被测信号电平与触发字所设定的逻辑状态相同。

在满足触发条件时,能对被测信号进行一次采集、存储。

b .能利用模拟示波器清晰稳定地显示所采集到的8路信号波形,
并显示触发点位置。

c .8位输入电路的输入阻抗大于50k Ω,其逻辑信号门限电压可
在0.25~4V 范围内按16级变化,以适应各种输入信号的逻辑电平。

d .每通道的存储深度为20bit 。

进度计划
1、布置任务,查阅资料,理解掌握系统的控制要求。

(1天)
2、设计简易逻辑分析仪的系统接线图。

(2天)
3、建立简易逻辑分析仪的框图。

(2天)
4、绘制框图。

(2天)
5、对系统进行仿真,确定PID 控制参数,分析系统性能。

(2天)
6、撰写、打印设计说明书(1天) 指导教师评语及


平时: 论文质量: 答辩:
总成绩: 指导教师签字:
学生签字
年 月 日
摘要
本系统的设计电路由8位数字信号发生器电路、数据采集电路、功能控制系统、显示电路四部分构成。

8位数字信号发生器电路:由单片机、液晶、按键等元器件组成,可以产生8路循环移位逻辑信号序列,并能设定、调节并显示预置值。

数据采集电路:由单片机控制,含有RAM及8位输入电路等,能够采集并存储输入的8位逻辑序列。

功能控制系统:它也是由单片机控制,完成设定、显示、调整系统各功能项的任务。

显示电路:主要由可编程逻辑器件CPLD和电平移位及扫描电路组成,用于将RAM中的8路逻辑序列取出,将其高速送入示波器稳定显示。

关键词:可编程器件CPLD;电平位移;扫描电路;
目录
第1章绪论 (1)
1.1逻辑分析仪在数字科技中的地位 (1)
1.2本文研究内容 (1)
第2章方案论证 (2)
第3章系统原理框图 (4)
第4章系统电路 (5)
4.18位数字信号发生器 (5)
4.2功能控制系统 (5)
4.3数据采集电路 (6)
4.4显示系统 (6)
第5章系统软件设计 (7)
第6章调试过程及功能实现 (10)
第7章结果分析 (12)
第8章总结 (13)
参考文献 (14)
附录1 (15)
辽宁工业大学课程设计说明书(论文)
第1章绪论
1.1逻辑分析仪在数字科技中的地位
数字科技对检测仪器的需求 20 世纪 70 年代以来,大规模集成电路、可编程逻辑器件、高速数据信号处理器和计算机技术等高新技术得到迅猛发展,为解决数字设备、计算机及 VLSI 等电路在研制、生产、检修和维护中的测试问题,出现了一类新的测试设备。

因为其被测系统的信息载体主要是二进制数据流,为区别于频域或时域的测量,把这一类测试统称为数据域(DataDomain)测试,即有关数字系统的测试称为数据域测试。

以离散时间或事件出现的次序为自变量,状态值为因变量的函数关系属数据域范畴。

因此数据信息是由状态空间概念、数据格式和数据源构成的。

它与频域或时域的信息不一样,具有以下一些特征:
1 数字信息几乎都是多位传输的。

2 数字信息是按时序传递的。

3 许多信号仅发生一次。

有些信号虽然可以重复发生,但是它们是非周期性的。

4 造成系统出错的误码常混在一串正确的数据流中,实际上只有错误已经发生以后才能辨认出来。

5 信号的速度变换范围很大(如高速运行的主机和低速的外围设备)系统的检测不可能象对模拟系统那样。

1.2本文研究内容
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章系统电路
根据前面的讨论,本系统需要设计的电路共四块,现在我们就每一块具体电路进行具体分析。

4.18位数字信号发生器
具体电路如下图
依据题目要求,要产生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型电阻的结构如下:
设V
in
=0
V 时,V
0=V
1

V in =5V时,V
=V
2。

根据KCL原理,利用下列二元一次方程组求出R
1
、R
2

V
1
/ R
= (5 - V
1
) / R
1
- V
1
/ R
2
V
2
/ R
2
= (5 - V
2
) / R
+ (5 - V
2
) / R
1
其中,V
1
为脉冲序列的低电平,电压从1V开始,每路信号增加0.1V。

V 2为脉冲序列的高电平,电压为 V
1
+ 0.2V
设R
= 51KΩ
解此方程组可得R
1
、R
2
列如下表:
1路2路3路4路5路6路7路8路
R1/ KΩ
10.
00
7.6
92
6.2
50
5.2
63
4.5
45
4.0
00
3.5
71
3.2
26
R2/ KΩ
2.6
32
2.8
57
3.1
25
3.4
48
3.8
46
4.3
48
5.0
00
5.8
82
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>
#include<intrins.h>
#include<def.c>
#include<ocmjb.c>
#include<getkey.c>
#include<initial.c>
void main(void)
{
uchar i;
uchar j;
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
WriteScr(0xf9,0x04,0x10,((signalword>>4)&0x0f)+0x37,0x00,0x03);
if((signalword&0x0f)<0x0a)
WriteScr(0xf9,0x05,0x10,(signalword&0x0f)+0x30,0x00,0x03);
else
WriteScr(0xf9,0x05,0x10,(signalword&0x0f)+0x37,0x00,0x03);
}
}
void time0_int(void)interrupt 1
{
TH0=TH0NUM;
TL0=TL0NUM;
shiftword=_crol_(shiftword,1);
clkout=1;
signal=shiftword;
_nop_();
clkout=0;
}
void int0(void)interrupt 0
{
GetKeyInput();
}
2、功能控制
#include<reg52.h>
#include<intrins.h>
#include<def.c>
#include<lg.c>
#include<getkey.c>
main()
{
uchar i;
EX0=1;
IT0=1;
EA=1;
chufa=chufazi;
for(;;)
{
write_128321(0,0x0c);
write_128321(0,0x80);
for(i=0;i<10;i++)
{
write_128321(1,menu1[i]);
}
write_128321(1,0x3a);
if((chufazi&0xf0)<0xa0)
write_128321(1,((chufazi>>4)&0x0f)+0x30);
else
write_128321(1,((chufazi>>4)&0x0f)+0x37);
if((chufazi&0x0f)<0x0a)
write_128321(1,(chufazi&0x0f)+0x30);
else
write_128321(1,(chufazi&0x0f)+0x37);
write_128321(0,0x90);
for(i=0;i<10;i++)
{
write_128321(1,menu2[i]);
}
write_128321(1,0x3a);
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);
}
}
void int0(void)interrupt 0
{
GetKeyInput();
}
3、数据采集
#include<reg52.h>
#include<intrins.h>
#include<def.c>
#include<delay.c>
void main(void)
{
EX0=1;
IT0=1;
PX0=1;
EX1=1;
IT1=1;
EA=1;
for(;;);
}
void int0(void)interrupt 0 {
delay(3000);
if(INT0==1)
return;
if(flag==0)
{
flag=1;
intrd=0;
addrzi=0x00;
}
}
void int1(void)interrupt 2 {
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;
_nop_();
wr=1;
_nop_();
cs=1;
addrzi++;
}
else
{
flag=0;
intrd=1;
mmm=0;
}
}
}
}
二、VHDL语言主要源程序library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; entity rd is
port(clk4M,pdata,intrd:in std_logic;
rami:in std_logic_vector(7 downto 0);
cs,we,oe,tong:out std_logic;
addr,dout:out std_logic_vector(7 downto 0)); end rd;
architecture rd_arc of rd is
begin
process(clk4M,intrd)
variable abc:std_logic_vector(7 downto 0); variable state:integer range 0 to 499;
begin
if intrd='0' then
we<='1';
cs<='1';
oe<='1';
tong<='0';
abc:="00000000";
state:=0;
elsif clk4M'event and clk4M='1' then
case state is
when 0=>addr<=abc;
state:=1;
when 1=>oe<='0';
cs<='0';
state:=2;
when 2=>dout<=rami;
state:=3;
when 3=>oe<='1';
cs<='1';
state:=4;
when 499=>state:=0;
abc:=abc+1;
when others=>state:=state+1;
end case;
if abc>19 then
abc:="00000000";
end if;
if pdata='1' then
if abc="00000000" then
tong<='1';
else
tong<='0';
end if;
else
if abc="00001010" then
tong<='1';
else
tong<='0';
end if;
end if;
end if;
end process;
end rd_arc;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity counter8 is
port(clk,clr:in std_logic;
q:out std_logic_vector(2 downto 0)); end counter8;
architecture counter8_arc of counter8 is begin
process(clk,clr)
variable temp:std_logic_vector(2 downto 0); begin
if clr='1' then
temp:="000";
elsif clk'event and clk='1' then temp:=temp+1;
end if;
q<=temp;
end process;
end counter8_arc;。

相关文档
最新文档