导言
依据P89C51RD2和FPGA的信号延时模块首要用在传输时钟信号、数字同步信号等对信号推迟有高要求的点对点传输体系中,它可对多路信号进行独自的恰当延时调整。形成信号的推迟原因有:不同的传输线路、信号处理时刻不同以及器材速度存在差异等。不管何种原因,延时模块能够对输入的已存在有延时堆集的信号进行不同精度、不同规模的延时量调理,使信号抵达终端后相对推迟时刻符合要求。因为利用了可编程器材FPGA和增强型单片机,延时模块不仅能较好地完结其功用,并且完结了体系的模块化和微型化,利于模块在体系中的运用和模块的二次开发。
体系结构及硬件规划
体系结构框图如图1。其硬件结构比较简略,首要由单片机P89C51RD、RS-232/TTL接口电路MAX232和可编程逻辑器材FPGA三部分组成。单片机P89C51RD2是上位PC机和FPGA的衔接枢纽,它经过并口发送数据给FPGA,另一边经过RS-232/TTL接口芯片与PC机进行串行通讯;PC机首要功用是完结延时调整的可视化操作;FPGA是延时调整处理的硬件完结,单片机将PC送过来的延时调整参数输入FPGA,FPGA在单片机的操控下对信号进行推迟处理,最终送入相应传输通道。某些体系运用现场存在较强的电磁搅扰,模块的规划考虑信号阻隔问题,故对串行接口进行了电气阻隔,强化了PC机和模块通讯的安全系数。
延时模块正常上电后,单片机P89C51RD2首要从数据存储区读出最近一次存储的推迟时刻、信号通道等参数,并转发到FPGA数据接口。FPGA依据接纳到的参数,首要筛选出方针地址以便切换到对应的信号通道,然后再依据时刻对该通道进行预订的延时,康复从前调整好的延时信号。在模块运转期间,P89C51RD2实时监测、接纳来自上位PC机发送的新延时数据。假如需求对某一路信号的延时量进行调理,经过PC机的串口发新数据,P89C51RD2中止收到新数据后,将数据分红两路处理:一路进入到单片机的数据存储区,待下次上电读取运用;另一路则转发至由FPGA操控的延时操控,完结信号的推迟时刻调整。
块运用的P89C51RD2是PHILIPS公司内核依据8 位80C51单片机的派生产品,它们在彻底保存80C51 指令体系和硬件结构的大结构外,还具有多方面的功用加强、扩展、翻新和立异,其间在运用中编程(IAP:In-Application Programming)是最显著特色之一。在运用中可编程是指MCU能够在体系中获取新代码并对自己从头编程,即用程序来改动程序。P89C51RD2的IAP功用完结是经过PHILIPS 公司供给的BootROM 固件来完结的,它坐落0FC00H?0FFFFH空间,与闪存空间堆叠(见图2)。固件中现已固化有擦除和编程等子程序,PHILIPS 公司供给了寻址该固件的办法,只需用户程序简略调用BootROM中带恰当参数的公共进口,即可完结所需求的操作。
P89C51RD2闪存结构见图2,它具有如下特色:
1. 其闪存空间是分块的64kB的闪存空间,共分5块,由低到高分别为8kB(BLOCK0)、8kB(BLOCK1)、16kB(BLOCK2)、16kB(BLOCK3)以及16kB( BLOCK4);
2. 每一块都能够独自擦除;
3. 在程序中能够调用IAP功用对闪存中的每一字节进行独自编程。
正是因为上述三个特色,在不过扩展存储器状况下,将程序空间剩余下的闪存空间作为数据空间,把单片机接纳中止收集到的信号通道、推迟时刻等参数存储下来,完结掉电数据保存。
软件规划
整个延时模块的软件包含了PC机发送参数程序,单片机接纳并存储参数程序和FPGA信号延时处理程序。
PC机发送参数程序是用户将PC机的串口与模块衔接,经过PC机的发送程序界面,很简略对信号进行延时调整。发送程序选用VC作为编程言语,调用串口控件,规划便利且界面简练,界面如图3所示。发送的每个数据帧8位,包含推迟时刻和信号通道两个参数,其间高三位是要调整的信号通道,后五位表明推迟的时刻。发送程序中,对界面中的“+”或“?”进行一次操作,PC就经过串口向单片机接连发送8路信号延时参数,即只需调理了任一路信号的延时,PC机就会接连发送8个数据帧。
单片机软件规划
单片机首要完结与PC之间的通讯,数据的存储和上电数据的读取。程序选用C51编写,编译选用当时编译功率最高的C51编译器KEIL。软件流程图见图4。
在P89C51RD2的64k闪存空间中,地址为0000H-7FFFH的32kB闪存空间作为程序空间,整个单片机程序编译后为15k,所以32k的程序空间足够大。余下的8000H?FFFFH的32kB 闪存空间留作数据存储空间。两块数据存储空间轮番运用,当数据量存满其间一块时经过程序跳转到另一块,在运用前先将该块擦除。
各函数介绍如下:
main()——主程序;
InitUart(void)——串口初始化;
IapInit(void)——IAP功用初始化,运用IAP功用前必调用;
PowerOnRead(void)——上电读取最近一次存储的参数。模块对上电时刻要求不严苛,最新数据的地址可经过查表办法寻觅。每一个数据帧占一个数据存储空间,因为单片机每次中止都接纳到8个数据帧,所以将每8个数据存储空间划分红一组,这样只需查询每组的头一个地址就能便利地完结查询,大大节省了查询时刻。
EraseBlock (uint AddressRestore)——判别当时数据存储空间块满,并擦除;
RestoreData(void)——数据存储在数据存储空间;
FPGADataUp(uchar DataRec)——更新FPGA接口数据。
在程序中,要屡次调用BootROM固件中的子程序。因为IAP子程序接口是汇编言语,为了编写便利,一起使程序结构明晰,编写了一个IAPLIB.A51汇编言语接口函数库和IAPLIB.H头文件。在程序中加上IAP.H头文件,调用固件程序时就不需在C51程序中嵌入汇编,而是像调用C言语函数相同简略,这大大简化了编程。
FPGA规划
FPGA首要规划了DECODE延时通道译码器、CS片选信号操控器、N阶SHIFTER移位寄存器。其间译码器用于完结对单片机并口送来的数据进行通道、时刻参数的别离,用通道参数进行寻址和译码,这是一种简略的译码逻辑和触发电路。N阶移位寄存器用于完结对信号进行N阶的延时处理,是延时处理的中心单元。单路信号延时调理的根本框图见图5。
延时通道译码器将单片机并口送来的延时参数送入锁存器,一起输出操控电路将移位寄存器对应的延时阶切换到输出端。从不同的阶引出信号即可取得不同的延时量。操控时钟和移位寄存器的阶数决议了延时步进调理精度和延时调理规模。假如守时模块有N个信号通道,每个守时模块集成N个彻底相同的延时调理单元,就可完结独立调理各个通道信号延时巨细的功用。集成的延时调理单元越多,占用可编程芯片的资源就越多,这能够依据实际需求挑选可编程逻辑器材。
FPAG软件的规划选用“自顶向下”、“软硬兼施”的规划办法,首要的各单元规划选用VHDL言语描绘完结,而整个多路信号的延时功用处理选用图形输入规划办法。软件规划完结后,依据电路原理图进行引脚确定,然后发动编译程序来编译项目。编译器将进行过错查看、网表提取、逻辑归纳和器材适配,然后进行行为仿真、功用仿真和时序仿真。最终经过编程器办法将POF文件下载到EPROM中。加电后,FPGA将EPROM中数据读入片内编程RAM中,完结装备,然后生成硬件电路。
模块功用调试完结
模块在调试中呈现P89C51RD2有时上电程序运转不正常,读取程序空间是空的。可是只需上电作业起来,就康复正常。置疑因为上电复位时序紊乱,形成误调用固件擦除芯片子程序。选用专用复位芯片替换%&&&&&%电阻加二极管的复位电路,使问题得到了处理。相同,在单片机正确送数状况下,FPGA上电呈现不能正常康复预设好的延时信号,信号总是零推迟(第一次上电,单片机数据存储空间内没有数据,信号就处于零延时状况),但在作业状况下,能够很好地完结延时调理。置疑这种状况是因存在复位问题而导致,但专用复位芯片不能处理问题。经屡次查看程序,发现硬件言语程序中触发句子是电平触发,改写为脉冲上升触发后问题得以处理。
结束语
选用单片机和FPGA规划的延时调理模块,硬件结构简略,规划集成度高。软件方面,单片机程序将C言语和汇编言语很好地结合,FPGA充分发挥了硬件言语易改动电路结构和算法的优越性。进步FPGA中移位寄存器的时钟频率,一起相应添加移位寄存器程序输出阶数,可完结更高精度的延时步进调理和增大延时调理规模。因而能够在不改动模块硬件结构根底的上,经过软件晋级来进步模块的功能,然后扩展模块的运用领域。