基于VerilogHDL的背景噪声扣除电路设计
时间:08-20
来源:互联网
点击:
1 引言
在微弱信号检测方法中,常需要使直流量经光电调制后转变为交流信号进行测量,以扣除背景噪声来提高系统信噪比。星载紫外遥感仪器同样采用了压频转换和调制解调实时扣除背景噪声、零点飘移的方案,但其原有实现背景噪声扣除功能的单元在与MCU接口及软件控制上稍显繁琐,而且布线面积较大。如能将背景噪声扣除功能设计成为具有通用接口和易操作的专用集成电路,对该仪器的升级换代有积极的意义。
硬件描述语言VerilogHDL 提供了是一种在广泛的抽象层次上描述数字系统的方式,以其C语言风格,容易掌握等特点赢得了众多硬件设计师的青睐。通过软件编程来实现硬件功能后,下载到FPGA或CPLD大规模可编程逻辑器件,能将电路板级产品集成为芯片级产品。
为此,本文使用VerilogHDL进行编程,采用自顶向下的设计方法,经仿真验证和综合后,得到了具有通用接口和软件易于操作的背景噪声电路,弥补了原有单元的不足,取得了较好结果。
2 背景噪声扣除电路原理
紫外光谱遥感仪器电控部分由斩光器,精密高压电源及光电倍增管,单片机控制单元,同步累加解调单元,前置低噪声放大器,压频转换组成。其中斩光器将空间辐射光斩切成为交替的“信号+背景”和“背景”的光信号,使得光电倍增管输出的信号如图1所示。调制后的信号放大后,经压频转化后变为频率信号,通过同步累加单元的处理。同步累加解调单元采用四片四位二进制加减计数器SN54HC193进位位相连组成16位加减计数器,并配以逻辑门电路组成实现的。背景噪声的扣除功能是依靠16位加减计数器由时序控制,在通光状态下加计数,在遮光状态下减计数,经多周期计数实现。
图1经斩光器调制后由光电倍增管输出的信号
背景噪声扣除原理简单,但时序控制较繁琐。原有电路因布线面积和硬件芯片不易过多等诸多考虑,计数周期及启停控制采用软件两次中断设置来实现。如图2所示第一次为中断本文课题来源于国家自然科学基金资助项目项目批准号:60538020为启动计数,查询到斩光器信号第一个上升沿时进入,设置好计数周期后再次启动MCU片内计数器,以保证准确的查询到第一个上升沿时启动计数器。第二次为停止中断,采集计数周期溢出后停止计数。
图2 软件控制采集计数启停流程图
(a) MCU查询计数完成流程图 (b)中断执行计数器的启停控制流程图
易见原背景噪声扣除功能单元需要与MCU接口的数据线较多,需16条,且因不同微处理器片内资源不同,软件操作可能会更繁琐,可移植性不强。
综上,如果将背景噪声扣除功能单元设计成一个8位数据总线接口,高低字节分时复用,能对16位二进制数预置数和计数周期进行设置,操作上仅由MCU给出启动信号后,等查询完成信号便可读取计数结果的电路,则可大大减少线路板面积,使接口更简单,提高可操作性和移植性。
3 背景噪声扣除电路的VerilgHDL设计
依据自顶向下设计思想和自底向上的实现方法,背景噪声扣除电路的可划分为主模块(backnoise_deduct),16位二进制加减计数模块(bit16addsub),采集控制模块(Ctrol),读写接口模块(Addselec)四个模块。
主模块负责调用其它三个模块,并将输入输出接口进行连接。16位二进制加减计数模块负责在信号脉冲到来时,对给定的预置数在调制周期的高电平时加计数,在低电平时减计数。采集控制模块负责当MCU给出允许计数命令后,自动查询调制频率的第一个上升沿启动计数,在计数周期达到后停止计数,完成计数后通知MCU。读写接口模块负责与MCU接口,接收储存计数周期(斩光器信号或调制信号的周期数)和16位的预置数,并将最后计数结果返回MCU。
主模块的外部接口如图3所示。FREQU1, FREQU2为采样频率输入1和2;CHOP_IN斩光器或调制频率输入,CLR为清零信号,高电平有效;cpu_alw为MCU发出的允许信号,高电平有效;stopsign是采集完成信号,高电平为完成;WD,RD,CS为是写、读、片选信号;DB为8位双向数据总线;a2_0为3线片内寄存器地址译码选择接口。
图3 背景噪声扣除主模块综合生成原理图的外部接口
16位二进制加减计数模块(bit16addsub)是背景扣除电路的具体实现单元,代码如下所示。
module bit16addsub(
input wire FREQU,//采样频率输入
input wire CHOP_IN,//斩光器输入
input EN,//启停控制
input wire CLR,//请零
input wire [15:0] STA_NUM,//初始数值
output reg[15:0] result_num //计数结果输出
);
always @(posedge FREQU or posedge CLR)//对采集信号和清零信号敏感
begin
if(CLR==1)//清零
result_numelse if(EN==1&&CHOP_IN==1&&FREQU==1)
result_numelse if(CHOP_IN==0&&EN==1&&FREQU==1)
result_numend
endmodule
采集控制模块(Ctrol)是整个设计的时序控制核心,它输出的ctrol与16位二进制加减计数模块(bit16addsub)的EN向连接便可实现自动控制计数的启动,待计数周期溢出时停止,计数完成后由stopsign后给出高电平信号通知MCU。其完整代码如下:
module Ctrol(input wire reset, //复位信号
input wire cpu_alw, //MCU允许信号
input wire chop_in, //斩光器输入计数
input wire [16:0] status_in, //计数周期数值
output reg ctrol, //加减计数器的启停控制信号
output reg stopsign //计数完成信号
);
reg [16:0]num_count;//内部计数周期寄存器
always @(posedge reset or posedge chop_in)
begin
if(reset)//复位
begin
num_countctrolstopsignend
else if(chop_in==1&&cpu_alw==1)//允许计数
begin
if(num_count>0) //采集未完成
begin
ctrolnum_countend
else
begin
ctrolstopsignend
end
end
endmodule
读写接口模块(Addselec)在编程时采用通用的双向数据总线输入输出方法,经过a2_0的3线译码选择寄存器地址,可对计数周期和预置数进行赋值,并可读出最后计数结果。表1给出了译码对应的寄存器地址。
表1 a2_0译码选择真值表
图4给出了使用ModelSim 软件对写信号有效的仿真波形,显示最后计数周期低、高8位写入的数值为00000101、00000000,预置数低、高8位数值为00000011、00000000。
图4 计数周期和预置数在总线写入时的波形仿真结果
4 背景噪声扣除电路与MCU接口及软件操作
图5背景噪声扣除电路的软件操作流程
采用上述设计的集成背景噪声扣除电路在与MCU接口时十分方便。以MCS51系列单片机8051为例,最简单的连接方式为采用P1口与CLR、cpu_alw、stop_sign相连接,址线与CS、a2_0连接(可据电路规模设置片选方式),数据线、读写正常连接即可。软件操作不需要中断,操作流程如图5所示。更简单的做法是在系统初始化时将预置数和计数周期赋值为固定值即可。
5 结束语
本文介绍了采用计数器与门电路组成的背景噪声扣除电路的实现原理和工作方式,并分析了其局限性,然后提出了一种基于VerilogHDL 语言的背景噪声扣除电路的设计,使电路接口更为简单,软件更易操作,增强了移植性。该设计已经应用于在研的紫外遥感仪器中,为仪器的更新换代提供了技术支持。本文以通用性和简便性出发设计的背景噪声扣除电路的设计,将适用于以光电调制微弱直流量转换为交流信号测量的方案。
本文作者创新点:针对原有背景噪声扣除功能单元的局限性,用VerilogHDL语言设计出了接口方便、易操作的背景噪声扣除电路,使其有具备了较强的通用性和适用性。
在微弱信号检测方法中,常需要使直流量经光电调制后转变为交流信号进行测量,以扣除背景噪声来提高系统信噪比。星载紫外遥感仪器同样采用了压频转换和调制解调实时扣除背景噪声、零点飘移的方案,但其原有实现背景噪声扣除功能的单元在与MCU接口及软件控制上稍显繁琐,而且布线面积较大。如能将背景噪声扣除功能设计成为具有通用接口和易操作的专用集成电路,对该仪器的升级换代有积极的意义。
硬件描述语言VerilogHDL 提供了是一种在广泛的抽象层次上描述数字系统的方式,以其C语言风格,容易掌握等特点赢得了众多硬件设计师的青睐。通过软件编程来实现硬件功能后,下载到FPGA或CPLD大规模可编程逻辑器件,能将电路板级产品集成为芯片级产品。
为此,本文使用VerilogHDL进行编程,采用自顶向下的设计方法,经仿真验证和综合后,得到了具有通用接口和软件易于操作的背景噪声电路,弥补了原有单元的不足,取得了较好结果。
2 背景噪声扣除电路原理
紫外光谱遥感仪器电控部分由斩光器,精密高压电源及光电倍增管,单片机控制单元,同步累加解调单元,前置低噪声放大器,压频转换组成。其中斩光器将空间辐射光斩切成为交替的“信号+背景”和“背景”的光信号,使得光电倍增管输出的信号如图1所示。调制后的信号放大后,经压频转化后变为频率信号,通过同步累加单元的处理。同步累加解调单元采用四片四位二进制加减计数器SN54HC193进位位相连组成16位加减计数器,并配以逻辑门电路组成实现的。背景噪声的扣除功能是依靠16位加减计数器由时序控制,在通光状态下加计数,在遮光状态下减计数,经多周期计数实现。
图1经斩光器调制后由光电倍增管输出的信号
背景噪声扣除原理简单,但时序控制较繁琐。原有电路因布线面积和硬件芯片不易过多等诸多考虑,计数周期及启停控制采用软件两次中断设置来实现。如图2所示第一次为中断本文课题来源于国家自然科学基金资助项目项目批准号:60538020为启动计数,查询到斩光器信号第一个上升沿时进入,设置好计数周期后再次启动MCU片内计数器,以保证准确的查询到第一个上升沿时启动计数器。第二次为停止中断,采集计数周期溢出后停止计数。
图2 软件控制采集计数启停流程图
(a) MCU查询计数完成流程图 (b)中断执行计数器的启停控制流程图
易见原背景噪声扣除功能单元需要与MCU接口的数据线较多,需16条,且因不同微处理器片内资源不同,软件操作可能会更繁琐,可移植性不强。
综上,如果将背景噪声扣除功能单元设计成一个8位数据总线接口,高低字节分时复用,能对16位二进制数预置数和计数周期进行设置,操作上仅由MCU给出启动信号后,等查询完成信号便可读取计数结果的电路,则可大大减少线路板面积,使接口更简单,提高可操作性和移植性。
3 背景噪声扣除电路的VerilgHDL设计
依据自顶向下设计思想和自底向上的实现方法,背景噪声扣除电路的可划分为主模块(backnoise_deduct),16位二进制加减计数模块(bit16addsub),采集控制模块(Ctrol),读写接口模块(Addselec)四个模块。
主模块负责调用其它三个模块,并将输入输出接口进行连接。16位二进制加减计数模块负责在信号脉冲到来时,对给定的预置数在调制周期的高电平时加计数,在低电平时减计数。采集控制模块负责当MCU给出允许计数命令后,自动查询调制频率的第一个上升沿启动计数,在计数周期达到后停止计数,完成计数后通知MCU。读写接口模块负责与MCU接口,接收储存计数周期(斩光器信号或调制信号的周期数)和16位的预置数,并将最后计数结果返回MCU。
主模块的外部接口如图3所示。FREQU1, FREQU2为采样频率输入1和2;CHOP_IN斩光器或调制频率输入,CLR为清零信号,高电平有效;cpu_alw为MCU发出的允许信号,高电平有效;stopsign是采集完成信号,高电平为完成;WD,RD,CS为是写、读、片选信号;DB为8位双向数据总线;a2_0为3线片内寄存器地址译码选择接口。
图3 背景噪声扣除主模块综合生成原理图的外部接口
16位二进制加减计数模块(bit16addsub)是背景扣除电路的具体实现单元,代码如下所示。
module bit16addsub(
input wire FREQU,//采样频率输入
input wire CHOP_IN,//斩光器输入
input EN,//启停控制
input wire CLR,//请零
input wire [15:0] STA_NUM,//初始数值
output reg[15:0] result_num //计数结果输出
);
always @(posedge FREQU or posedge CLR)//对采集信号和清零信号敏感
begin
if(CLR==1)//清零
result_numelse if(EN==1&&CHOP_IN==1&&FREQU==1)
result_numelse if(CHOP_IN==0&&EN==1&&FREQU==1)
result_numend
endmodule
采集控制模块(Ctrol)是整个设计的时序控制核心,它输出的ctrol与16位二进制加减计数模块(bit16addsub)的EN向连接便可实现自动控制计数的启动,待计数周期溢出时停止,计数完成后由stopsign后给出高电平信号通知MCU。其完整代码如下:
module Ctrol(input wire reset, //复位信号
input wire cpu_alw, //MCU允许信号
input wire chop_in, //斩光器输入计数
input wire [16:0] status_in, //计数周期数值
output reg ctrol, //加减计数器的启停控制信号
output reg stopsign //计数完成信号
);
reg [16:0]num_count;//内部计数周期寄存器
always @(posedge reset or posedge chop_in)
begin
if(reset)//复位
begin
num_countctrolstopsignend
else if(chop_in==1&&cpu_alw==1)//允许计数
begin
if(num_count>0) //采集未完成
begin
ctrolnum_countend
else
begin
ctrolstopsignend
end
end
endmodule
读写接口模块(Addselec)在编程时采用通用的双向数据总线输入输出方法,经过a2_0的3线译码选择寄存器地址,可对计数周期和预置数进行赋值,并可读出最后计数结果。表1给出了译码对应的寄存器地址。
表1 a2_0译码选择真值表
图4给出了使用ModelSim 软件对写信号有效的仿真波形,显示最后计数周期低、高8位写入的数值为00000101、00000000,预置数低、高8位数值为00000011、00000000。
图4 计数周期和预置数在总线写入时的波形仿真结果
4 背景噪声扣除电路与MCU接口及软件操作
图5背景噪声扣除电路的软件操作流程
采用上述设计的集成背景噪声扣除电路在与MCU接口时十分方便。以MCS51系列单片机8051为例,最简单的连接方式为采用P1口与CLR、cpu_alw、stop_sign相连接,址线与CS、a2_0连接(可据电路规模设置片选方式),数据线、读写正常连接即可。软件操作不需要中断,操作流程如图5所示。更简单的做法是在系统初始化时将预置数和计数周期赋值为固定值即可。
5 结束语
本文介绍了采用计数器与门电路组成的背景噪声扣除电路的实现原理和工作方式,并分析了其局限性,然后提出了一种基于VerilogHDL 语言的背景噪声扣除电路的设计,使电路接口更为简单,软件更易操作,增强了移植性。该设计已经应用于在研的紫外遥感仪器中,为仪器的更新换代提供了技术支持。本文以通用性和简便性出发设计的背景噪声扣除电路的设计,将适用于以光电调制微弱直流量转换为交流信号测量的方案。
本文作者创新点:针对原有背景噪声扣除功能单元的局限性,用VerilogHDL语言设计出了接口方便、易操作的背景噪声扣除电路,使其有具备了较强的通用性和适用性。
MCU 集成电路 Verilog C语言 FPGA CPLD 电路 仿真 单片机 放大器 总线 ModelSim 相关文章:
- 我的FPGA学习历程(05-23)
- FPGA设计学习经验小谈(05-23)
- 在单个FPGA平台上采用多种工业以太网标准进行设计(03-13)
- FPGA的在应用编程技术研究(04-24)
- 基于CPLD与单片机的高速数据采集系统(04-08)
- Actel数模结合FPGA的远程控制器设计(05-13)