基于FPGA的控制和运算电路的设计

基于FPGA的控制和运算电路的设计,第1张

0 引言

液体密度是许多工业中的重要参数,它可以直接参与生产过程中的控制和决策,因此对液体密度进行快速而准确的在线检测有着重要的意义。尤其是在石油、化工、食品、医药等工业领域,对密度的测量直接关系到国民经济和消费者的人身安全。

1 超声波液体密度计的工作原理

用超声波来测量液体的密度有多种方法,随着电子技术的飞速发展,借助于声速测量密度的方法得到了广泛的应用。这是因为超声波在液体中传播时,其声速与液体的密度之间遵从下面的关系式:

基于FPGA的控制和运算电路的设计,第2张(1-1)

式中C是超声波在液体中传播的速度;ρ为液体的密度;K为压缩系数。对于特定的液体,其压缩系数K是常数,只要测得超声波在液体中的传播速度,就可以计算出液体的密度。而速度的测量则可由超声波在液体中所经过的声程以及传播时间所决定。

2. 基于FPGA的控制和运算电路的设计

由于FPGA芯片的频率很高,容易设计实现几十兆甚至上百兆的时钟电路,因此很适合于用来设计高速计时电路。本设计中选用Altera公司的CycloneⅡ系列芯片,该系列芯片的工作频率可高达400MHz,足以满足本设计的需要。软件开发平台为QuartusⅡ。电路(包括模拟、数字部分)的整体系统框图如图1所示。

基于FPGA的控制和运算电路的设计,基于FPGA的控制和运算电路的设计,第3张

图1 系统电路原理图

2.1方脉冲生成模块

方脉冲生成模块的作用是产生一定频率的方脉冲用以激励发射探头工作。方脉冲频率的选择范围应该是探头压电晶片振动频率(本设计中为2MHz)的1/10,因此选择200KHz,其产生是由基于FPGA的方脉冲信号发生器来实现[1]。其外部引脚结构如图4所示,图中输入信号为clk(时钟) 和en(使能端) ,输出信号为dout[7…0]。

2.2 高速计数器的设计

高速计数器的设计是实现精确测量时间的核心。本设计中,为了获得精确的计数频率,采用了QuartusⅡ中內嵌的锁相环,外部的参考时钟由16MHz的晶振提供,锁相环所采用的倍频为6倍,这样就能获得稳定的96MHz的内部时钟。整体的原理图结构如图2所示。锁相环(PLL3)的频率输出作为计数器的计数时钟,计数器(cnter)由四个十进制计数器组成,内部设有FIFO,主要用于计数结果的读取,当wrreq(写允许)信号为高电平时,将计数结果写入FIFO,FIFO的时钟与计数器的时钟同步;当接收电路的信号经过光电耦合器到达rdreq(读允许)端时,该端电平变为高电平,同时wrreq为低电平,此时计数结束,同时将计数结果送到输出端,输出计数结果。

基于FPGA的控制和运算电路的设计,基于FPGA的控制和运算电路的设计,第4张

图2 高速计数器原理图

Fig.2 Principle picture of the high-speed counter

2.3 运算、补偿模块

运算、补偿模块分为计算和补偿两个部分。其作用是根据计数器的计数结果和补偿电路对温度修正后的结果计算液体的密度。本设计中发射和接收探头之间的距离为2cm;声波在两探头之间传递的时间可由计数器的计数结果(cntvalue)得到,因为单位计数的时间是计数频率的倒数,所以有:

基于FPGA的控制和运算电路的设计,第5张(2-1)

运算器结构如图3所示。输入c1和c2是计数值,经过并行乘法器运算后的结果送入并行除法器;因为压缩系数K是常数,但每一种液体的K都不相同,因此整个密度计需要有对液体进行选择的功能,图中的sel模块是实现这一功能的部分,输入信号用来选择待测液体,本设计中的密度计能够测量300种液体,因此选择信号为9位编码的二进制数,选择模块的实质是一个存储了各种液体压缩系数的存储器,根据选择信号寻找待测液体密度的系数,其结果也送入除法器。

图中的tem为温度补偿模块。温度对声速的影响很大,在液体中,温度每变化1℃将引起声速约为2%的变化,而在实际环境中,一般会有40℃以上的温度变化范围,由此造成的声速8%以上的变化就可能给实际测量引入8%以上的误差。在利用超声波声速对液体密度进行测量时,为了提高精度,势必就要对温度进行补偿[2]。

2.4 控制和运算电路

控制和运算电路的整体结构如图4所示。其中pulse为方脉冲产生模块;count为高速计数器;operate为运算和补偿模块;adc为A/D转换控制模块。整个系统的工作过程为:pulse模块的使能端为高电平时,模块开始工作,产生方脉冲;因为计数器的使能端与pulse的使能端共用,所以计数器在产生方脉冲的同时开始计数;pulse 的输出pulse_out 经过处理后送入后续的模拟电路;计数器(count)在接收到rdreq端的高电平时停止计数,该信号来自于接收电路,此时计数结果送入运算补偿模块(operate)进行后续运算,同时,计数器的clr端清零,等待下一次计数;adc模块控制A/D转换器将温度补偿电路的信号转换成数字量并且送入到运算补偿模块的补偿部分进行查表运算。运算模块负责最后的运算输出。

基于FPGA的控制和运算电路的设计,基于FPGA的控制和运算电路的设计,第6张

图3 运算、补偿模块结构

Fig.3 operaTIon and compensaTIon module

基于FPGA的控制和运算电路的设计,第7张

图4 控制、运算整体结构图

Fig.4 The construcTIon of control and operaTIon

3. 结论

实验在常温(20℃)、常压(1标准大气压)下进行,待测液体为常用的水,其压缩系数K=5×10-5/大气压。通过仿真(图5)可以得到水的密度为1Kg/m3。这与实际结果相同。由于输入信号多,这里只选择了部分仿真信号。通过对时序的分析,可以得到整个电路整体上的延时为230ns,可见,系统地响应速度很高。

基于FPGA的控制和运算电路的设计,第8张

图5 系统仿真结果

Fig.7 result for system simulation

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2603479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存