基于单片机的高速信号测试接口板的实现

发布者:konglingdeyuan最新更新时间:2012-03-14 来源: 现代电子技术 关键字:单片机  FIFO  电路测试 手机看文章 扫描二维码
随时随地手机看文章

  在数字电路设计和调试中,对设计单元电路的性能进行实时测试是必不可少的环节。很多情况下,需要通过计算机的比较和分析,来测试设计的电路的性能是否达到要求。这就需要设计一个测试接口板,将计算机产生的测试数据送入单元电路,再将单元电路的输出结果送回计算机。

  在电路测试接口板的设计过程中,常常会遇到总线时钟频率较高(如40 MHz以上)、总线宽度较宽(如36 b)、要求测试的数据量较大(几Mb/s)的单元电路。这时实时地进行数据的双向传输比较困难,因为不论采用总线频率较高的PCI数据总线或USB总线[1],都达不到系统要求的数据传输速率,所以必须进行数据的缓存。考虑到PCI总线和USB总线的接口电路复杂、开发周期长,本文介绍一种采用单片机为控制单元,通过RS232C接口,使用高速FIFO存储器件作为缓冲,在单元电路与计算机之间传输数据的方案。该方案实现简单,开发周期短,完全可以满足对于上述的数字单元电路的测试要求。

  这里以测试总线频率40 MHz,数据宽度32 b的单元电路为例,介绍用单片机和FIFO实现的高速信号测试接口板方案,整个测试系统结构如图1所示。


系统示意图

1 系统概述

  整个系统主要由单片机、FIFO芯片、MAX232芯片以及D触发器芯片构成。图2是系统的原理简图,图中给出 了一些重要的器件和控制信号。


系统实现原理简图

  系统的工作流程如下:首先将测试数据从计算机的RS232C口送入单片机,单片机将其变为8 b并行数据写入FIFO1,这期间不对FIFO1进行读操作。FIFO1满后,被测板以40 MHz的总线时钟频率并行读取FIFO1,同时被测板的输出以同样速率写入FIFO2。FIFO2满后,再通过RS232C口将FIFO2中的数据读入PC机,其中的控制操作由单片机及外围电路来完成。下面将分4个步骤介绍系统的工作过程,其中前2个步骤是测试数据从计算机传送到被测板的过程,后面2个步骤描述了被测板的输出结果送回计算机的过程。 [page]

1.1 RS232C口与FIFO1的通信(数据从RS232C口输入)

  测试数据以串行方式从计算机的RS232C口输出,通过MAX232电平转换后进入单片机的RXD口,再转换为 8 b并行数据从P2口写入到FIFO1。单片机除了控制FIFO1和FIFO2的复位RES(图2中未标出)、FIFO1的写使能WEN1以及FIFO1的写时钟WCLK,还发出一个信号用来辅助读取FIFO1。

  由于FIFO1的读取被设置为在数据写入时无效,只有写满了以后才允许被测板读取,因此对于FIFO1满状态的判断及控制非常重要。这里通过计数方式和查询方式同时确定其满状态,方法如下:在单片机内设置一个计数值为256 k的计数器,每送出一个字节,计数器值减1。当计数器减到0,查询FIFO1的管脚的状态,若为低电平,则开启,允许被测板从FIFO1中读出数据,否则向计算机发出错误信号,重新接收数据。

1.2 FIFO1与被测板的通信(数据输入被测板)

  FIFO1与被测板的通信连接包括数据线以及读允许REN1。REN1的的作用是控制被测板的读取过程,只有当此信号为低电平,被测板才能从FIFO1中读数据。

  由于被测板的读取速度很高,而单片机的指令周期相对慢得多,当FIFO1被读空后,如果使用单片机来控制读允许使其恢复到高电平,可能在关闭读允许以前被测板已经读入了很多无用数据,所以这里采用FIFO1的空标志位通过D触发器,和单片机的读允许端一起组成控制信号具体电路如图3(a)所示。

控制信号产生


  当单片机发出读允许信号,被测板开始读取数据,当FIFO1为空,EF1通过D触发器关断使被测板停止读数,同时,单片机关闭FIFO1的读有效信号。

1.3 被测板与FIFO2的通信(数据从被测板输出)
  被测板与FIFO2的通信连接包括数据线、写允许、反馈线NW、部分复位PRS以及时钟CLK。PRS 的作用是部分复位FIFO,即将FIFO的读写指针归零,其他设置不变。CLK由被测板提供,作为FIFO1的读时钟和FIFO2的写时钟,这里为40 MHz,当测试不同的单元电路时,CLK的频率也可以随着被测对象的总线频率改变而改变。

  被测板对测试信号进行处理后,首先通过PRS将 FIFO2部分复位,防止由于两者没有同时复位带来的数据误读。接着被测板将BWEN2置为低,开始向FIFO2写数据。

  当FIFO2被写满,同样存在一个及时关闭其写允许的问题。这里采用FIFO2的满标志位FF2通过D触发器关断同时触发NW信号反馈给被测板,通知被测板停止输出数据,如图3(b)所示。

1.4 FIFO2与RS232口通信(数据从RS232口输出)

  FIFO2的满状态除关断其写允许WEN2外,还给单片机一个中断信号,单片机收到此中断后,立即开启读允许REN2(将其置为低电平),开始从FIFO2的空读取数据,FIFO2的空状态判别同样由计数方式和查询方式同时确定,当计数器为0时,测试FIFO2的空状态输出管脚EF2,若结果为低电平,则通知计算机读取过程结束,同时关闭REN2,禁止读出数据,否则通知计算机出错。

  至此,一次完整的测试数据处理传输过程已经全部完成。单片机对FIFO进行复位,准备下一次工作。用户可以分析被测板送回的数据,从而测试单元电路的性能。

2 器件选择

  本方案中单片机采用AT89C51芯片,包括4个8 b并行I/O口、1个全双工的串行口、2个16 b的定时/计数器以及2个中断源。晶振的工作频率选用11.095 2 MHz,每个机器周期约1μs。单片机在这里主要完成与RS232C口和FIFO通信以及整体流程控制的工作。相对于被测电路的数据速率,单片机的处理速度很低,因此如何用相对低速的器件控制高速信号是本方案要解决的关键问题之一。本文的方法是采用FIFO和TTL芯片来实现数据缓冲和辅助控制。辅助控制器件中的D触发器采用速度较高的74S系列芯片,最高工作频率为110 MHz。

[page]

  FIFO是一种先进先出存储器,允许同时异步进行读写操作,读写之间互相独立。这里选用的FIFO为IDT72V36100芯片,容量为64 k×36 b,工作频率高达133 MHz,是IDT公司SuperSyncⅡ系列高性能同步FIFO中的一种。该系列芯片相比以前的FIFO器件有很多独特的优点。例如具有总线匹配功能(即输入输出数据总线宽度可以不同,有几种匹配方式供用户设置),还有标志位可编程功能以及重发功能,使得设计者能够根据需要设置标志位的地址,并且可以重新读取已经读过的数据。这些 优点大大增加了设计灵活性,给使用者带来很大方便。

  本方案中用到FIFO的主要管脚包括写使能WEN1(低有效)、读使能REN1(低有效)、数据输入/输出、总线匹配设置、空标志位(低有效)、满标志位(低有效)以及读写时钟等。IDT72V36100芯片的总线宽度有5种匹配方式,分别为36 b/36 b,36 b/18 b,36 b/9 b,18 b/36 b及9 b/36 b,本方案选用的是36 b/9 b和9 b/36 b的总线匹配方式。实际应用中,根据被测电路的实际情况可以选择不同的总线匹配方式,使用者根据所选的匹配方式将相应的FIFO总线设置管脚置为高电平或低电平。

3 软件流程

  系统所用到的软件包括PC机的串口通信程序与单片机程序。PC机的串口通信程序完成的是单纯的通过RS232口与单片机通信的功能,这方面的技术资料很多,因此不再赘述。这里主要介绍的是单片机程序,该程序执行流程控制功能和与PC机通信功能。

  单片机与PC机通信时,接收采用中断方式,发送采用查询方式。图4是单片机主程序流程图。单片机程序中要用到两个标志位,即联络标志位和数据结束标志位,主程序在初始化过程中应该先将这两个标志位清零并设置好计数器。经过初始化以及开中断后,单片机处于等待方式,不断查询数据结束标志位,判断数据是否接收完毕。当查询到标志位被置1后,继续查询FIFO1的满状态管脚,若FIFO1为满,证明数据接收正确,单片机允许读FIFO2,进入等待状态,等待FIFO2变满产生的中断,然后转向发送子程序。


单片机主程序流程图


  图5是中断接收子程序的流程图。串口每进入一个字节就产生一次串口中断,进入到该子程序中。每次中断都要先检查联络标志位,若该标志位为0,则表明送入的是联络字节,检查该字节和约定的联络信号是否一致,若一致, 表明通信正常,将联络标志位置1;如果联络标志位已被置1,则检查数据结束标志位,若该标志位为0,则将数据以字节为单位写入FIFO1,每次中断写入一个字节,并将计数器减1,若计数器减到零,表明数据传输结束,将数据结束标志位置1并跳出中断。


单片机中断接收程序流程图


  发送子程序执行的是将数据从FIFO2发送到PC机的过程,与接收子程序流程基本相同,只是前者为查询方式,后者为中断方式,故不赘述。

[page]

4 测试结果

  根据以上方案进行了电路设计和调试。被测FPGA(Field Programme Gate Array)单元电路的数据总线频率为40 MHz,数据总线宽度为32 b,要求测试的数据量为2 Mb。RS232口采用19.2 k的波特率,数据输出或输入需要约2.5 min,但比起使用PCI或USB接口的开发代价,这种时间上的微耗是完全可以接受的。

  为了验证测试接口板,先令单元电路不对数据做任何处理,只与测试接口板进行时序上的配合,两者进行联调。可以看到从计算机产生的数据文件与送回的数据文件完全相同,这就证明该测试接口板能够准确无误地传送数据。然后再令单元电路在时序配合的基础上加载自己的功能程序,就可以在计算机内分析和比较单元电路的输出结果了,测试结果表明单元电路的输出与计算机仿真的结果完全符合,进一步证明了该测试方案的正确性。

  如果需要测试不同数据总线宽度的电路,只需根据需要改变FIFO的总线匹配设置管脚的电平,并修改单片机程序中的相应语句即可。可以看出,该测试接口板在应用方面有较大的灵活性。

5 结语

  迄今为止,基于本方案的测试接口板已经成功地完成了多项单元电路的性能测试工作。实践证明其工作稳定可靠,实现简单,并且可以测试不同数据总线速率(110 MHz以下)、数据宽度(36 b以下)以及各种不同功能的单元电路。这种以相对低廉的控制器件为主测试较高速数字单元电路的方案,在通信系统的设计和调试方面有重要的实际应用价值。 

关键字:单片机  FIFO  电路测试 引用地址:基于单片机的高速信号测试接口板的实现

上一篇:具有学习功能的智能遥控器
下一篇:基于单片机系统的红外遥控器应用

推荐阅读最新更新时间:2024-03-16 12:55

数码显示管显示按键序号 89c51单片机编程实例
题目:AT89C51单片机P1口接8个按键(button),P2口接1个共阴极数码显示管,当有键按下时,数码显示管显示按键的序号 电路图: 源码如下: org 00h sjmp start org 30h start: mov P2,#00h start1: mov r1,#00h mov dptr,#table next: mov a,p1 cpl a jz next mov r5,#1 acall delay mov a,p1 cpl a jz next clr c shift: rrc a jc d
[单片机]
基于51单片机的四路抢答器仿真
当主持人按下开始按键后,开始倒计时60秒,选手开始抢答,当有选手抢答后其它选手抢答无效。 并且选手抢答后倒计时停止。 由于我没有设置新一轮按键,如果需要使用新一轮抢答可以加按键开启新一轮抢答 定时器配置代码 #include REGX52.H void Timer0_Init(void) { TMOD &= 0xF0; //配置定时器模式 TMOD |= 0x01; //设置定时器0模式 TL0 = 0x3c; //设置定时初值50ms产生一次中断 TH0 = 0xb0; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计
[单片机]
基于51<font color='red'>单片机</font>的四路抢答器仿真
PIC单片机的特点以及不足之处全面分析
据调查,pic单片机是相关人员使用的最多硬件之一。因此,凡入门者需对pic单片机保持一定的了解。为此,本文为大家带来三部分内容:1.pic单片机简介,2.pic单片机特点,3.pic单片机不足之处。通过本文,希望大家对pic单片机存在一个简单的了解。 一、pic单片机简介: PIC单片机(Peripheral Interface Controller)是一种用来可开发的去控制外围设备的可编程集成电路(IC)。由美国Microchip(微星)公司推出的PIC单片机系列产品,首先采用了RISC结构的嵌入式微控制器,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。现在PIC系列单片机在世
[单片机]
PIC<font color='red'>单片机</font>的特点以及不足之处全面分析
PC机与单片机串行通信中实现命令批处理
    摘要: 介绍PC机与MCS-51单片机通信批处理命令的实现思想、方法、通信协议和C51程序平台。为PC机与单片机间串行通信程序设计提供一种方法上的新思路。     关键词: 批处理 MCS-51单片机 通信协议 在PC机与MCS-51单片机之间进行串行通信时,基本是一对一的,即用PC机向单片机每发1条命令,就等待单片机的1条返回信息。这样可能把大量时间浪费在PC机与单片机的通信过程中了。为此笔者经过实践,设计出可以批处理执行PC机发给单片机的命令,就像DOS操作系统中的批处理命令一样,可连续批处理信息,结果当然提高了系统速度。文中提供了部分平台式C51软件源代码,以供大家参考。 1 通信协议
[工业控制]
单片机数码管显示-消影问题
看郭天祥的单片机书中数码管部分,使用 P0=0xff 的方法可以消除段选数据对位选的干扰,另外使用我下面的方法可以达到同样的效果。但即便这样数码管仍有影子,这种状况是,当前数码管有下一个数码管的影子,或者当前数码管有前一个数码管的影子。 分析一下产生原因,当我们点亮一个数码管后,总要先将段选或者位选改为下一个数码管的值,而不能同时改变。当先改变段选时,那么当前数码管就会有短暂的时间显示下一个数码管的数字。当先改变位选时,下一个数码管就会有短暂的时间显示当前数码管的数字。 那么解决方法是,先将段选置0送入锁存器,改变位选的值为下一个数码管,最后再改变段选值。同理另一种方法是,先将位选赋值 0xff 即关闭所有数码管,改变段选
[单片机]
PIC单片机低功耗系统的设计方法介绍
引言 20世纪90年代以来,随着集成电路特征线宽的持续缩小以及芯片密度和工作频率的相应增加,降低功耗已经成为亚微米和深亚微米超大规模集成电路设计中的一个主要考虑因素。功耗的增加会带来一系列问题,例如电路参数漂移、可靠性下降、芯片封装成本增加等。因此,系统的功耗在整个系统设计中,尤其是在采用电池供电的系统中显得十分重要。 MICroChip公司PIC系列的单片机为设计高性能、低功耗的单片机系统提供了很好的解决方案。下面从低功耗设计方法及具体例子来介绍PIC单片机低功耗应用。 1 低功耗设计方法 为使系统工作在低功耗状态,必须正确设置单片机的配置及工作方式。下面结合最常用的PIC12、PIC16等单片机介绍低功耗系统的设计方法
[单片机]
PIC<font color='red'>单片机</font>低功耗系统的设计方法介绍
51单片机之音乐代码
世上只有妈妈好音乐源代码。 #include reg51.h sbit speaker = P3^7; unsigned char timer0h, timer0l, time; //-------------------------------------- //单片机晶振采用11.0592MHz // 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据 code unsigned char FREQH = { 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xF
[单片机]
51单片机串口接收和发送数据
第一种方法:在中断中处理 typedef unsigned char UINT8; volatile UINT8 u8Uart_Data; void InitialUART0_Timer1() { SCON = 0x50; //2015-05-04 TMOD = 0x20; TH1 = 0XFD; // 9600BPS 2015-05-04 TL1 = 0XFD; TR1 = 1; // start timer0 ES = 1; // Enable serial interrup
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved