基于MCU+FPGA的CCB测试盒实现方法
扫描二维码
随时随地手机看文章
引言
在石油测井行业,csu系统中的地面系统先通过电缆遥测系统(CTS)与遥测仪通信,遥测仪再通过电缆传输系统(CCS)与井下仪进行通信。CTS—般采用经过调制的双相差分编码实现通信,而CCS则使用3根信号传输线来实现通信,俗称三总线。CCB测试盒则可以模拟地面系统,它工作于两种模式下,分别对遥测仪和井下仪进行检测。
CCB测试盒通过预置拨码开关的值来实现命令下发,然后从遥测仪或井下仪获取数据,最后显示在数码管上。由于设计的比较早,原先的CCB测试盒里面通过使用大量的分离元器件来实现时序控制功能,这直接造成了测试盒体积庞大、设备笨重的缺点。而现在使用高度集成的FPGA芯片来实现电路中的逻辑控制功能,可大大简化电路设计、降低设备成本。此外,釆用MCU+键盘+液晶显示屏来实现人机交互,显示的信息也更为丰富,输入的方式更加灵活。
1 MCU+FPGA构架
新的CCB测试盒方案采用的MCU+FPGA构架系统框图如图1所示。本系统中的FPGA专注于逻辑控制和通信的编解码,而MCU负责人机交互部分。MCU通过8位并口总线来访问FPGA,可向FPGA中的DDATA存储区写入下发命令字,并向FrmLen存储区写入“帧长”,然后从UDATA存储区读取上行解码数据。
为实现上述功能,MCU选择带有外部存储器扩展接口的51类型处理器C8O51F5OO,该处理器采用流水线结构,时钟频率最高可达50MHz。由于该器件的大部分指令仅需要1〜2个机器周期就可执行,故该处理器的运算速度相对于标准的MCS51处理器提高了几十倍。FPGA选择ACTEL公司的现场可编程器件A3P060,它内部包含约1500个通用逻辑单元,带有4块RAM(每块4kb),釆用FLASH结构,故可省去外接配置芯片,也简化了应用复杂性。
MCU与FPGA之间连接方式框图见图2所示。其中FPGA中各个存储区块的地址分配如下:
2 三总线接口
三总线接口有3根总线,分别是下行命令传输线DSIGNAL、上行时钟传输线UCK、上行数据传输线UDATAGOo
DSIGNAL下行命令传输线是用于控制井下仪器工作状态的信号线。该线传输的是具有100KBPS控制信号与100kHz时钟信号的DCK混合信号。信号电平为0V,+1.2V,—1.2V三种。
UCK上行时钟传输线可作为数据上传的标准时钟,其频率为100kHz,电平为0V和十1.2V,在不进行数据传输时,此信号线为高电平。
UDADAGO为启动信号和数据信号传输线,这是双向传输的信号线。首先由地面下发启动信号GO脉冲,接下来由井下仪将数据准备好,在GO脉冲后400”,地面下发出的UCK时钟作用下,井下数据通过UDATAGO信号线上传。GO的电平为3.6V,脉宽为10”,周期为20ms;UDATA的电平是0V〜﹢1.2V。此波形图如图3所示。
由于DSIGNAL信号是双极性信号,需要由两路 数字信号分别控制正负电源导通来实现,这里使用DSigP和DSigN来分别控制正、负电源的导通。下面是用Verilog语言编写的、可产生DSigP、DSigN 的FPGA程序代码:
UCK信号的产生比较简单,使用100kHz的时钟进行门控就可以产生,只是要注意门控信号应该在主时钟的下降沿产生,否则会产生毛刺。
考虑到篇幅限制,这里就不列出UCK生成和UDATA数据接收的代码和仿真波形了。
3 双相码接口
当CCB测试盒挂接井下遥测仪进行检测工作的时候,测试盒与遥测仪之间可通过电缆调制信号进行通信,这种调制信号进行解调就变成了双相编码信号。测试盒挂接遥测仪和测试盒挂接井下仪采用的是一样的工作方式,而仅仅是通信方式不一样。双相码的编码特征是:比特边界信号跳变,比特中间“1”变“0”不变,图5所示是其双相码的编码特征波形。
双向码解码过程的具体代码如下:
双相码接口的仿真结果如图6所示。
4 测试盒人机界面
原先的测试盒采用6段数码管来显示命令和接收的数据,并采用拨轮来预置命令。采用这种方式不光电路中的连接线十分繁琐,而且功能上也不够灵活。现在采用液晶显示模块,可以同时显示很多内容,而使用矩阵键盘不光可以输入命令字,而且可以用多余的码字组合实现特殊的功能,键盘和液晶显示屏的组合可以在实现原有功能的基础上使测试盒增添许多新的特色。
测试盒中的显示屏可选用金鹏电子有限公司的OCMJ5X10B液晶模块,该模块的点阵大小为160X80,模块内部含有GB231215X15中文字库,并支持光标功能,可通过并口与主机通信。
按键可采用4X4矩阵键盘直接将键盘的8个输出端连接到MCU的一个并行端口上(需要加上拉电阻),在有键按下时,相应的行与列端口会变成低电平,这样,通过查找键码表格,就可以判断出按键的值,按键的编码如表1所列。
由于按键过程中,不可避免地会产生抖动。为了避免由于按键抖动产生误判的现象,本设计使用了一种软件消抖的方法。
一般情况下,键按下过程中都会产生几到十几毫秒的抖动,而键维持按下的状态时间至少大于20ms,所以,可以利用MCU的20ms定时中断去检测按键的状态。操作时可以设置4个变量,即上一个周期的按键状态Key_before、这个周期的按键状态Key_now、先前有效按键状态Key_N-l和当前判定的有效的按键状态Key_N,这4者之间的关系如下:
在定时中断程序中实现上面3个公式,便可以通过程序检测出有效的按键状态,然后再进入按键处理程序中去进行相应的功能处理。以往人们消除按键抖动时,主要是通过RS触发电路的方法,但那样会增加很多额外的硬件成本,而本文所介绍的这种软件定时消抖,不仅消抖可靠,而且效率高,容易实现。
5 结语
本文给出了一种基于MCU+FPGA设计的CCB测试盒,详细地阐述了测试盒中的三总线接口、双相码接口的FPGA实现方法,然后介绍了测试盒的人机交互部分,其中重点分析了键盘按键软件定时消抖的原理。这种新型的测试盒不仅具有体积小巧、外形美观的特点,而且成本也得到很大的降低,同时它还具有可升级更新功能的特点,具有很大的灵活性。