基于并口通讯的双路高速可编程数字及模拟信号源设计
应用EPP模式的并口通讯实现了一种可同时输出数字和模拟信号的双路可编程信号源;使用一片CPLD实现所有的接口逻辑和控制逻辑,并给出了相应的PCB布线技巧。可广播应用于各种DSP系统的调试。 关键词:EPP 数字信号处理(DSP) 信号源 可编程 虚拟仪器 大多数DSP应用系统都包括一个前端的模/数转换电路(ADC)。在测试高速数字信号处理(DSP)系统时,通常是做一个专用的模拟信号源(如雷达中频模拟信号源等),
加上一个为实际应用特制的模/数转换电路(ADC),以获取与实际应用相当的专用信号数据来调试该DSP系统。通常,模拟信号源、ADC及DSP系统是由不同的开发人员设计制作的。为了调试DSP系统,需要各方人员协作,调试任务相当繁杂。且不同的DSP系统调试需要不同的信号源和ADC,也是系统研发阶段的难点。 在多种调试DSP系统之后,设计并制作了一种高速双路可编程信号源。它的输出具有数字和模拟两种形式;信号的内容、输出速率、数据托度等都可以通过PC机并口来进行设置和控制;数据输出速率可高达75M字/s,相应的模拟输出信号最大频率为37.5MHz,数据重复长度最大为128K字;可广泛应用于各类DSP系统的调试。由于该信号源运用计算机产生所需的数据和控制信息,因此它也属于通常所称的虚拟仪器范畴。其应用形式有两种:①利用输出的模拟信号替代专用的模拟信号源;②利用直接输出的数字信号替代模拟信号源和ADC。两种应用分别如图1和图2所示。 1 可编程信号源电路原理 该信号源的基本设计思路是,
由计算机编程产生所需的两路信号数据(包括加噪数据)。通过计算机并口(EPP模式)将数据分别传到信号源的两个高速数据缓冲区(两个128K×8的SRAM),在信号源的内部时钟推动下将数据高速输出;同时将相应数据经过两路高速数/模转换器(DAC)电路转换成模拟信号同步输出。其中数据输出的长度以及输出速率是可以设置的。 信号源的所有逻辑及时序功能由一片CPLD(MACH4-128/64)完成,包括EPP模式并口的接口控制、数据存储器的地址及读写信号产生、数据缓冲隔离控制、DAC控制、内部时钟控制、数据时钟同步的产生。整个电路的原理结构如图3所示。 1.1 EPP模式并口逻辑设计 EPP模式的并口I/O空间除了标准接口(SPP)用到的3个端口以外,还增设了两个双向的8位端口,即地址端口和数据端口,它们分别占用基地址(通常为378H)的偏移量3和4处。正是这两个新增的双向端口使得并口EPP模式被广泛开发应用。这两个端口从时序上是一样的,由各自的选通脉冲信号来区分。在本信号源设计中,采用地址端口锁存数据作为控制命令,数据端口用于传送数据,包括数据内容、长度和输出数率选择。在EPP并口通讯协议中,地址写周期时序如图4所示。 为正确完成一个EPP地址或数字的读写周期,需要正确产生一个等待信号(Waite#)。在EPP协议时序图上,它比地址选通信号要推迟一些(如图4)。
如何产生这个等待信号是经常困惑设计人员的问题。通过仔细研究协议规则,发现一个正常的读写周期是由等待信号来推动的。比如当计算机向地址端口写数据时,计算机的EPP接口逻辑首先使写信号有效,然后监视等待信号,如果为低,才施加选通信号(AddrStrobe#),之后继续监视等待信号,如果等待信号为高表明终端设备已取得数据,从而撤消选通信号并结束写周期。数据周期与地址周期类似。了解这一点之后,在读写数据或地址端口时,等待信号可以直接用选通信号取反来产生,只要速度上能保证在选通信号结束时可以正确读出或者保存数据;由于存在地址和数据两个选通信号(Addr Strobe#和Data Strobe#),用它们的与非来产生该等待信号即可。 1.2 地址产生 本信号源的地址产生逻辑实际上是一个同步加计数器,用以产生顺序加1的地址,只是它的同步时钟有两个来源。当计算机通过并口写数据时,它的计数时钟由数据选通信号(Data Strobe#)来驱动,保证计算机每写一个数据使得高速缓存器的地址加1;而当信号源高速输出数据时,计数时钟由信号源的内部时钟驱动。它们的切换是由CPLD内的控制寄存器来控制的。每次在计算机写数据时,应当由计算机通过控制寄存器给计数器清零;而在信号源输出数据时,清零信号由数据长度寄存器和当前地址值的比较结果来确定,一旦地址值与数据长度寄存器相等,立即产生一个清零信号,以使数据从零地址处周期性重复输出。该地址产生器的逻辑原理如图5所示。 1.3 内部时钟控制
对内部时钟的控制决定了最终输出的数据的速率。基基本时钟由一个有源晶振产生,可以通过更换晶振来取得特定的输出时钟速率。同时提供对该时钟的分频选择。该分频器实际上是一个7位同步2进制计数器,输出晶振时钟的2/4/8...128分频量,由此提供一种有限但却简单的时钟选择。对时钟的选择可以用简单的AHDL语言来完成设计。假设分频器的输出为Q6~Q0,时钟为JTCLK,分频选择控制位为F2~F0,输出时钟为OUTCLK,相应AHDL语言的Equations段如下: [Q6..Q0]:=[Q6..Q0]+1; "设计7位的二进制计数器 [Q6..Q0].clk=JTCLK; "计数器时钟为晶振输出 WHEN[F2..F0]=^b 000) THEN OUTCLK=JTCLK;"不分频 WHEN([F2..F0]=^b001) THEN OUTCLK=Q0;"1/2分频 WHEN([F2..F0]=^b010) THEN OUTCLK=Q1;"1/4分频 WHEN ([F2..F0]=^b011) THEN OUTCLK=Q2;"1/8分频 WHEN ([F2..F0]=^b100) THEN OUTCLK=Q3;"1/16分频 WHEN ([F2..F0]=^b101) THEN OUTCLK=Q4;"1/32分频 WHEN ([F2..F0]=^b110) THEN OUTCLK=Q5;"1/64分频 WHEN ([F2..F0]=^b111) THEN OUTCLK=Q6;"1/128分频 输出时钟OUTCLK分别用于地址计数器的计数时钟驱动、DAC的转换时钟驱动以及产生输出数据同步时钟(包括正、反两种相位)。
2 信号源PCB板设计 由于该信号源PCB板含有数字及模拟两种电路,使得PCB板的设计非常关键。如PCB设计不当,将使DAC电路输出的模拟信号噪声增大,从而影响信号源的性能。 在该PCB设计中,主要考虑两个因素,一是电源滤波,另一个是接地。 在电源入口处,应当接入一个几十微法的钽电解电容和一个0.1μF的独石电容。数字电路部分的电源滤波一般只需在数字IC的电源端用一只0.1μF或0.01μF的独石电容进行旁路滤波。该电容必须尽量靠近数字IC的电源引脚处,并且接地端要直接接入大面积的地线,否则收效甚微(见图6)。模拟电路的5V电源应当和数字电路的5V电源分开走线,中间用磁珠加以隔离,以消除数字电路引起电源波动对模拟电路的影响。DAC电路的运放要同时进行高频低频滤波,即在各运放在正负电源端同时采用数微法的钽电解和0.1μF的独石电容进行旁路。如果使用开关电源,则运放的正负12V电源都要用磁珠串联以减轻开关噪声对输出信号的影响。 相对于电源滤波,接地问题尤为重要。接地问题的关键是采用单点共地技术,即数字电路和模拟电路两部分的地线在PCB板上严格分开,只在一点进行共地连接,该点称为星点(STAR POINT)。该技术能抑制大部分模数混合电路中特有的数字噪声对模拟电路的影响。而且根据理论和实际经验,模拟部分应当置于靠近电源入口的一端。
3 软件设计 软件采用专为虚拟仪器设计的LabWindows/CVI来完成程序的主体及界面设计,使得该信号源的软件界面具有真实仪器的面板风格。由于计算机并口只使用I/O空间,并且多数操作系统(如WINDOWS9X)都没有对I/O端口进行屏蔽,软件的控制和数据传输部分就非常简单,直接使用I/O函数即可(LabWindows/CVI提供相应函数支持)。软件的主要工作是产生所需特定信号的数据。根据需要,可以产生两路8位或单路16位的信号数据,其中16位的数据信号要分为高低8位两部分数据分别传送。需要注意的是,如果信号数据是16位,则DAC电路输出的两路模拟信号与输出数据是不一致的,只有其中一路可以粗略地观察到该信号波形(数据高8位的波形)。为了使用多种工具(如Matlab等)产生的信号数据,软件在产生常用信号的基础上,可选择读取数据文件的方式,从而可以更快更灵活地得到各种特定信号的输出。
|