汽车组合仪表通用校验仪的可编程信号源软件设计

2022-03-19 09:04:39 | 浏览次数:

作者简介作者简介:杨健(1982-),男,硕士,汉口学院计算机科学与技术学院讲师,研究方向为计算机软件与理论。0引言

汽车仪表是人和汽车的交互界面,为驾驶员提供所需要的汽车运行参数、故障、里程等信息,是每一部车辆必不可少的部件。汽车电子公司为了适应汽车仪表的快速发展,鉴于仪表精度在国内外需求的快速增加,因此需要一种能提供高稳定度和高精度校验信号的校验仪以对汽车仪表进行校验,即对各类汽车组合表进行校验时为组合表提供各种模拟传感器信号。本文在对信号源进行研究的基础上,结合先进的DDS技术[1]来实现信号源的高精度和高稳定性。

1信号源软件设计

1.1设计方案定量计算

本设计采用N=32位的相位累加器,fclk=262KHz基准时钟,8位D/A转换器模拟输出,其中相位累加器位宽及对应采样点数如表1所示[2]。

表1相位累加器位宽和采样点关系

相位累加器宽对应采样点数8256124 0961665 536201 048 5762416 777 21628268 435 456324 294 967 296在此选相位累加器位宽为32,一个周期采样点数为4 294 967 296,于是分辨率为1/4 294 967 296。由式fout=(M/2n)×fclk可得输出频率fout=0.011 6×M。调整输入的相位步进量 M可以改变输出的频率,这样可实现频率的调整。相关参数计算如下:

频率分辨率:Δf=fclk/2n=0.011 6Hz

最低相位分辨率: Δp=360°/4 294 967 296

若想得到N(Hz)的频率步进量,则频率控制字的改变量为K=NΔf。

1.232位相位累加器设计

其功能是完成相位的累加,实质就是一个加法器,模块如图1所示。

图132位相位累加器模块

基本实现语句如下:

architecture behav of ADDER32B is

begin

S <= A + B; -- A、B为32位的输入信号

end architecture behav;

其仿真波形如图2所示。

图232位累加器仿真波形

由仿真波形可以看出,输出的确完成了两输入的加法功能,验证了程序的正确性。

1.332位寄存器设计

其功能是完成32位累加器的输出暂时锁存功能,以完成前后数据速率的匹配,模块如图3所示。

图332位累加器模块

基本实现语句如下:

if load"event and load = "1"

then dout <= din;

其仿真结果如图4所示。

图432位寄存器仿真波形

由图4可知,当load上升沿到来时,该寄存器将输入的值din送给输出dout。

1.4相位调制器设计

其功能是完成寄存器与相位字的相加,实质上是一个8位加法器,因此除了输入数据位宽不同之外,其实现语句与32位相位累加器相同,其模块如图5所示。

图5相位调制器模块

基本实现语句如下:

architecture behav of ADDER32B is

begin

S <= A + B;--A、B为8位的输入信号

end architecture behav;

其仿真结果如图6所示。

图6相位调制器仿真结果

1.5正弦rom查找表定制

查找表中数据位数为模数转换器DAC的位数,其长度则为波形存储深度M。rom中正弦波采样点的数据文件可以用程序语句生成。

正弦表查询模块如图7所示。其中,ADDRESS[7..0]是输入的8位地址,Q[7..0]是通过查找正弦rom表得到的离散幅度值,INCLOCK是时钟输入,用于协调DDS整体部件工作的同步性。方波及三角波与正弦波类似,仅仅是rom表中的数据不同。

1.6频率控制模块设计

频率控制模块用以实现频率的控制,由上述介绍可知,对频率控制字的调整,即可实现对输出频率的调整。由式△f=f0min=fc/2n可得到频率分辨率,若需要频率步进量是M(Hz),则频率控制字每次改变量应为K=M/△f,其模块如8所示。

图7正弦表查询模块

图8频率控制模块

其中,clk为系统输入时钟,f[3..0]为频率控制,其中f(0)、f(1)为频率粗调,实现每次1kHz步进量的调整,f(2)、f(3)为频率微调,实现每次1Hz步进量的调整。

其仿真结果如图9所示。

图9频率控制模块仿真波形

1.7DDS顶层文件设计

元件例化就是一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前设计实体中的指定端口相连接,从而为当前设计实体引进一个新的低一级的设计层次。元件例化语句是VHDL设计实体构成自上而下层次化设计的一个重要途径。

元件例化可以是多层次的,一个调用了较低层次元件的顶层设计实体本身也可以被更高层次的设计实体所调用,成为该设计实体中的一个元件。任何一个被例化语句声明并调用的设计实体都可以以不同的形式出现,它可以是一个设计好的VHDL设计文件,可以是来自FPGA元件库中的元件或是FPGA元件库中的元件或是FPGA器件中的嵌入式元件功能块,或是以别的硬件描述语句,还可以是IP核。

其模块如图10所示。

图10DDS模块

其中,fword是频率字输入,用以实现调频,pword是相位字输入,用以实现调相,clk为系统时钟输入,f1out[7..0]是8位正弦波幅值输出,f2out[7..0]是8位方波幅值输出,f3out[7..0]是8位三角波幅值输出。

其仿真波形如图11所示。

图11DDS模块仿真结果

1.8多路选择开关设计

多路选择开关用以实现多选一信号的输出,以控制输出的波形,其模块如图12所示。

图12多路选择开关模块

其仿真结果如图13所示。

图13多路选择开关仿真波形

其中,s[1..0]是选择信号,f0、f1、f2是正弦波、方波、三角波查找表幅值输入,连接DDS_VHDL模块中的f1out、f2out、f3out,fout是选择后的输出。

由图13可知,当选择信号位s1=0、s0=0时选择频率f0输出;当s1=0、s2=1时将频率f1输出,其它情况,即s1=1、s0=0;s1=1、s0=1输出均为f2,达到多路选择开关的功能。

2信号源软件调试与测试

2.1软件调试

虽然对MUX+PLUSII[3]有了比较深入的了解,但在程序编写中却还是碰到了很多错误,在编译时MUX+PLUSII会对出错信息给出提示并且可以自动锁定到错误所在的附近。

VHDL文本编辑中还可能出现许多其它错误,如:

(1)将设计文件存入了根目录,并将其设定成工程,由于没有了工作库,报告信息是:

Error : Can’t open VHDL “WORK”

(2)将设计文件的后缀写成.tdf而非.vhd,在设定工程后编译时,报错信息如下:

Error : Line1,File e:\\qipeihong\\mux3.tdf: TDF sytax error: …

(3)未将设计文件名存为其实体名,如错写为mux.vhd,编译时,报错信息如下:

Error : line1, … VHDL Design File “mux.vhd”must contain …

仿真波形会出现毛刺,称为“冒险”现象。冒险往往会影响到逻辑电路的稳定性。时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,可以通过改变设计来破坏毛刺的条件,从而减少毛刺的产生。毛刺并不是对所有的输入都有危害,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成影响。

2.2软件测试

系统硬软件设计、调试工作结束后,就可以进行测试工作。程序编译仿真无误,锁定管脚后可下载到FPGA芯片EPF10K10LC84-4[4]里,将实验箱上输出与搭接的硬件电路连接起来,用示波器观察仿真波形,并调试频率控制和幅度控制。

频率初始值为1KHz,测得各波形如图14所示。

图14频率为1KHz时的各波形

3结语

仪表能提供准确的数值是汽车仪表设计中的一个关键问题,必须对所生产出来的仪表进行校验。如果能提供高精度的校验信号源,则将使校验变得简单化。本文对汽车组合仪表通用校验仪的可编程信号源软件部分进行了设计,并通过调试、测试,最后得到了高稳定度和高精度的校验信号。

参考文献参考文献:

\[1\]潘松,黄继业.EDA技术使用教程[M].北京:科学出版社,2005.

[2]侯博亨.硬件描述语言与数字逻辑电路设计[M].西安: 西安电子科技大学出版社,1999.

[3]陈萍.现代通信实验系统的计算机仿真[M].北京:国防工业出版社,2003.

[4]郑亚民,董晓舟.可编程逻辑器件开发软件 Quartus II[M].

推荐访问: 可编程 信号源 组合 仪表 通用