搜档网
当前位置:搜档网 › MATLAB在FPGA设计中的应用 (1)

MATLAB在FPGA设计中的应用 (1)

MATLAB在FPGA设计中的应用 (1)
MATLAB在FPGA设计中的应用 (1)

M AT LAB 在FPGA 设计中的应用

杜 勇,刘帝英

(酒泉卫星发射中心,甘肃省酒泉市732750)

摘 要:在FPG A (现场可编程门阵列)设计过程中,由于设计环境只能显示测试数据的时域波形,无法显示数据的频谱等其他特征,从而为程序的设计及调试带来困难。文中提出了利用文本文件传递数据,用MAT LAB 软件对FPG A 测试数据进行分析的方法。实例分析表明,该方法简单有效,可为FPG A 设计带来极大的方便。

关键词:FPG A 设计;MAT LAB 软件;数据分析中图分类号:T N402

收稿日期:2006205226;修回日期:2006207210。

0 引 言

FPG A (现场可编程门阵列)因其功能强大、开发

周期短、可反复编程修改等特性,而在数字信号处理领域得到了广泛应用。目前FPG A 的设计调试环境(如Quartus Ⅱ、I SE 、Modelsi m 等)中只能直观地显示仿真测试数据的时域波形,无法显示数据的频谱等特性,更不能以图形的方法显示数据的其他特征,因而在需要对测试结果进行进一步分析处理时,程序设计者无法直观准确地判断程序运行结果是否正确,给程序的设计及调试带来一定的困难。

MAT LAB 是一套功能十分强大的工程计算及数据分析软件。由于其编程语言简单直观,被称为“演算纸式”科学算法语言,已经广泛应用于科研及教学工作中。本文提出将FPG A 设计环境中的测试数据通过文本文件格式传递给MAT LAB 软件,再利用MAT LAB 软件对数据进行分析处理,并利用其强大的画图功能即可直观地显示所需的信号特征,使测试结果更易于判断,进而给FPG A 的设计及调试带来方便。

本文首先简要介绍FPG A 的测试环境,然后通过一个具体的例子详细阐述数据在FPG A 环境与MAT 2LAB 环境中的传递方法,并给出相应的VHDL (甚高速集成电路硬件描述语言)及MAT LAB 实现代码。

1 FPGA 测试环境

目前主流的FPG A 设计软件主要有进行Xilinx 公

司芯片开发的I SE (集成综合环境)、进行A ltera 公司芯片开发的Quartus Ⅱ以及由Model 公司开发的仿真调试软件Modelsi m 。由于本文实例采用I SE 及Model 2si m ,故只对这两款软件进行简要介绍。

I SE 是Xilinx 提供的一套工具集,其集成的工具

可以完成整个FPG A 的开发过程。I SE 的另一个特色是预留了与第三方工具(如综合工具Synp lify/Synp lify Pr o 、仿真工具Modelsi m 等)的接口,从而可实现与第

三方工具无逢连接,给用户带来很大方便[1]

。在I SE 中可添加的测试文件有Test Bench W avef or m 和VHDL Test Bench 。其中:Test Bench W avefor m 是在波形界面上通过直观地修改波形数据产生所需的测试数据,简单直观但不够灵活,无法生成复杂的测试数据;VHDL Test Bench 是根据所测试的程序文件自动生成测试文件,用户在测试文件中添加或修改代码,可灵活地产生所需的测试数据。要将测试数据存入指定的文本文件,可通过在测试文件中添加相应的代码实现。

Modelsi m 软件是目前业界使用广泛的波形仿真软件[2]

。可以利用该软件实现对所设计的VHDL 程序进行仿真。由于I SE 中为Modelsi m 软件预留了接口,故Modelsi m 可直接嵌入I SE 软件中,点击I SE 中的Modelsi m 图标工具即可实现仿真。在用Modelsi m 进行仿真前必须具备3个条件:一是启动I SE 并建立了一个FPG A 工程项目;二是添加设计源代码且编译通过;三是为当前的设计提供一个测试激励文件。

2 实例分析

2.1 模块功能描述

下面以一个具体例子阐述MAT LAB 在FPG A 设

计中的应用。模块sin_mult_cos 实现两路单频信号的相乘。输入为时钟信号clk 和复位信号rst;内部产生频率为1MHz 的sin 和cos 信号;输出为两路信号相乘的结果sc m ,同时将sin 和cos 信号引出以方便测试。本实例开发环境为I SE7.1i,开发语言为VHDL,综合工具为Synp lify7.7,仿真工具为Modelsi m 6.0。图1为综合后的RT L (寄存器传输级)逻辑原理图。

?

9?第33卷第1期2007年1月 电子工程师 E LECTRON I C E NGI N EER Vol

.33No .1

 Jan .2007

图1 si n _m ult_cos 模块RT L 原理

 

由图1所示,sin_mult_cos 模块由产生正、余弦信号的DDS (直接数字频率合成器)组件、乘法器组件s mult 以及对输出信号进行锁存的触发器组件组成。2.2 仿真测试

图2为在modelsi m 环境中的仿真波形。图中只能看出信号大致的变化趋势,而无法确切知道输入信

号与输出信号之间的相位、频率及频谱等到关系,从而无法准确迅速地对测试结果进行判断

图2 si n _m ult_cos 模块在M odelsi m 环境中的仿真波形

 

通过在由I SE 中的Test Becnch 工具生成的测试

文件中添加代码,将波形数据写入文本文件中存储起来,然后再用MAT LAB 软件从文本文件中读出数据进行简单的处理并画出图形,则可弥补波形文件显示的不足。测试文件的部分代码如下:…

//添加"文本文件操作库"文件use std .texti o .all;

//设置复位信号及时钟信号rst <=′0′after 100ns;

clk <=not clk after 31.25ns; //频率为16MHz p r ocess

//设置文件类型变量及暂存数据变量

file file_sin :text open write_mode is "e:\t_sin .txt";file file_cos :text open write_mode is "e:\t_cos .txt";file file_sc m :text open write_mode is "e:\t_sc m.txt";variable oline :line;variable outd :integer;begin

 //在时钟上升沿将数据写入指定的文本文件中 wait until rising_edge (clk ); outd :=conv_integer (sin ); //sin 和cos 为6位二进制数 write (oline,outd,right,6); writeline (file_sin,oline ); outd :=conv_integer (cos ); write (oline,outd,right,6); writeline (file_cos,oline ); outd :=conv_integer (sc m );

 //输出数据sc m 为12位二进制数 write (oline,outd,right,12); writeline (file_sc m,oline );

end p r ocess;

在测试文件中添加完代码后,再次进行FPG A 仿真,则测试数据自动写入指定的文本文件中。下面的代码为在MAT LAB 环境中读取数据并进行数据处理和画图。

functi on sin_mult_cos //打开数据文件e:\t_sin .txt fid =f open (’e:\t_sin .txt’,’rb’);//从文本文件中读出数据

[t_sin,count]=fscanf (fid,’%lg’,inf );fcl ose (fid ); //关闭文本文件fid =f open (’e:\t_cos .txt’,’rb’);[t_cos,count]=fscanf (fid,’%lg’,inf );fcl ose (fid );

fid =f open (’e:\t_sc m.txt’,’rb’);[t_scm,count]=fscanf (fid,’%lg’,inf );fcl ose (fid );

//对测试数据进行FFT 求其频谱s_sin =abs (fft (t_sin (20:100)));s_cos =abs (fft (t_cos (20:100)));s_sc m =abs (fft (t_scm (20:100)));//设置横坐标

t =[0:length (s_sin )-1]/16;

f =[0:fl oor (length (s_sin )/2)-1]316/length (s_sin );//画出测试信号的时域波形及频域波形subp l ot (3,2,1);p l ot (t,t_sin (20:100));

?

01??微电子与基础产品?电子工程师2007年1月

subp l ot (3,2,3);p l ot (t,t_cos (20:100));subp l ot (3,2,5);p l ot (t,t_sc m (20:100));

subp l ot (3,2,2);p l ot (f,s_sin (1:fl oor (length (s_sin )/2)));subp l ot (3,2,4);p l ot (f,s_cos (1:fl oor (length (s_cos )/2)));subp l ot (3,2,6);p l ot (f,s_sc m (1:fl oor (length (s_sc m )/2)));

图3和图4为运行MAT LAB 程序sin_mult_cos .m 后所得的图形。图3为测试信号的时域波形,从图中

可清楚地看出输出信号的频率是信号sin 和cos 频率的2倍。图4为测试信号经FFT (快速博里叶变换)后的频域波形,从图中可知,输入信号sin 及cos 是频率为1MHz 的单频信号,而输出信号是频率为2MHz 的单频信号,与理论结果相符。由图3即可直观准确地判断该FPG A 设计结果正确

图3 由M AT LAB 软件处理后的测试信号的时域波形 

3 结束语

FPG A 设计调试环境因其不易直观显示测试数据

的频率特性等其他特性,而在一定程度上给FPG A

图4 由M AT LAB 软件处理后的测试信号的频域波形

 

计调试带来困难。MAT LAB 软件因其功能强大、易于使用等优点在数据分析方面应用十分广泛。本文提出的通过文本文件传递数据、使用MAT LAB 软件对FP 2G A 测试数据进行分析的方法简单易行,可以很好地满足在FPG A 设计过程中需要对测试数据进行进一步分析处理的需求。

参 考 文 献

[1]王诚,薛小刚,钟信潮.FPG A /CP LD 设计工具2Xilinx I SE5.

X 使用详解[M ].北京:人民邮电出版社,2003.

[2]胡振华.VHDL 与FPG A 设计[M ].北京:中国铁道出版

社,2003.

[3]邹鲲,袁俊泉,龚享铱.MAT LAB 6.x 信号处理[M ].北京:

清华大学出版社,2002.

杜 勇(1976—),男,硕士,工程师,研究方向为测控通信技术、数字信号处理的FPG A 实现技术。

Appli cati on of MAT LAB i n FPGA Desi gn

D U Y ong,L I U D i y i n g

(J iuquan Satellite Lunching Center,J iuquan 732750,China )

Abstract:During FPG A (Field Pr ogra mmable Gate A rray )design,s ometi m es it ’s difficult t o judge the

results of the p r ogra m ,for the design envir onment can not dis p lay the signal s pectrum and other characteris 2tics,excep t the ti m e 2domain wavef or m.A method is p r oposed t o s olve the p r oble m thr ough usingMAT LAB t o analyze the FPG A test data which is transf or med by means of text file bet w een FPG A and MAT LAB.Exa mp le analysis shows that the method is si m p le and effective and can make FPG A design more convenient .

Keywords:FPG A design;MAT LAB s oft w are;data analyzing

?

11?第33卷第1期

杜 勇,等:MAT LAB 在FPG A 设计中的应用?微电子与基础产品?

相关主题