EP1C6Q在水轮机组转速测量中的应用
2.3 硬件实现
(1) 信号调理电路
由于EP1C6Q输入/输出逻辑高电平仅能支持4.1V,而不能直接与标准的TTL电平信号相连,因此,神经元芯片和EP1C6Q之间的连接以及脉冲输入电路都必须加限幅电路。芯片的设计已经考虑到与5V设备的连接问题,
其解决方法是在连接线路中串接一个162Ω电阻。
(2) EP1C6Q和神经元间的物理连接
在转速测量模块中,EP1C6Q主要起信号边沿检测、脉宽测量以及实现神经元芯片外围逻辑电路的作用。由于许多功能是在EP1C6Q内部利用软件实现的,所以二者之间的连接很简单。控制信息的传递主要有两个途径:一是通过神经元芯片的I/O引脚,由于I/O引脚较长的建立时间会影响系统的实时性,因此,设计电路仅使用IO0、IO1两个通道来作为整个系统的异步清零(clr)和读取数据标志(read_time);另外一个途径是通过神经元芯片的数据总线(D0~D7)和地址总线?A0~A15?,即在EP1C6Q的内部设立状态寄存器,并由神经元芯片向寄存器中写入不同的数据,然后由寄存器根据写入的数据来使相应的控制信号有效。
2.4 软件设计
a.EP1C6Q内部程序
EP1C6Q的内部程序是在QUARTUS2开发软件中实现的。QUARTUS2能够支持原理图输入和硬件描述语言两种编程方式。整个程序包括译码电路、分频电路、计数控制电路、计数器模块和数据的锁存和读取等五个部分。具体如下:
(1)计数控制电路
EP1C6Q内部的程序是在神经元芯片的控制下运行的。其控制部分电路如图3所示。信号fin代表六十五路脉冲输入信号的一路,clk0代表标准的计数时钟。在clr信号由低电平变为高电平、且start置为高电平后,脉冲信号fin输入有效。当第一个上升沿到来后,计数器的PUL引脚变为高电平,此时,计数器开始计数;当第二个上升沿到来后,PUL变为低电平,计数器停止计数;而当第三个上升沿到来后,read_time信号变高电平,数据锁存。
(2)计数器的设计
由于水轮机组的转速比较慢,产生的脉冲信号频率一般在0.01Hz~10Hz之间,因此,转速快和转速慢时的信号周期差别比较大。为满足±1/10000个计数时钟的精度要求,计数器的计数位数应设计为20位。计数器的最大设定值为1000000,这样,当脉冲信号周期在10Hz~0.1Hz之间时,计数时钟为100kHz;而当脉冲信号的周期在0.1Hz~0.01Hz之间时,计数时钟自动转换为10kHz。计数时钟的自动切换是由计数器的溢出标志控制的,当计数器的计数值超出设定的最大值(1000000)后,溢出标志由低电平变为高电平,这样,经过全局时钟分频计数的时钟分频次数也会相应地扩大10倍,从而保证了计数器不会再次溢出。
(3)状态寄存器设计
为了减小神经元芯片控制功能对IO引脚的依赖,EP1C6Q在其内部设立了两个状态寄存器。这两个状态寄存器可根据神经元芯片写入的控制字来使相应的控制信号有效。使用的控制信号如下:
start:通过神经元芯片要求EP1C6Q进入信号采集状态控制,高电平有效。
lck:数据锁存信号,低电平有效。当EP1C6Q的输出信号read_time有效后,神经元芯片向状态寄存器写入命令字以使lck信号有效。为了保证所有通道的计数器已经停止工作,神经元芯片接收到read_time后将延迟ΔT时间后再锁存计数器的数据。
h1?h2:计数值高八位、中八位、低八位的选择控制。为了满足系统要求的测量精度, EP1C6Q内部采用二十位计数器对每一路信号进行计数,而神经元芯片的数据总线是八位,因此需要分三次读出。
(4)译码电路设计
神经元芯
《EP1C6Q在水轮机组转速测量中的应用(第2页)》