论文部分内容阅读
摘要:结合电子通信类EDA教学的特点,分析了现有的FPGA仿真软件的不足和其在开发综合设计型实验,培养学生的工程设计创新能力方面的局限性,提出了将Modelsim、QuartuslI软件和MATLAB等EDA技术相结合的创新教学方式,不仅能够加深学生对基本概念和专业理论知识的理解,提高职业技能,而且也能激发学生自主学习和创新学习的积极性。
关键词:FPGA;EDA;MATLAB;Modelsim;QuartuslI
作者简介:赵倩(1969-),女,湖南衡阳人,上海电力学院计算机与信息工程学院,副教授;朱武(1969-),男,湖北随州人,上海电力学院计算机与信息工程学院,教授。(上海 200090)
基金项目:本文系上海市重点课程建设项目(项目编号:20085303)的研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)22-0061-02
FPGA是一种新型的EDA技术,它的应用不仅使数字电路系统的设计非常方便,并且还大大缩短了系统研制的周期,缩小了数字电路系统的体积。为适应最新科技发展,近年来国内各大高校相继开设了FPGA课程,主要讲授ALTERA和XILINX公司FPGA的设计仿真。随着PFGA技术在图像处理、视频、音频及通讯领域的应用,现有仿真软件Modelsim和QuartuslI的功能虽然非常强大,但其输入输出主要是基于波形方式的,难以实现对复杂设计的仿真验证,尤其是涉及到对数字信号处理算法的仿真验证时,则显得有点不足。其在开发综合设计型实验,培养学生的工程设计创新能力方面有一定的局限,也制约了学生独立性和创新性的培养。由于MATLAB拥有1000多个内置函数和用于信号处理、通信和小波处理的工具箱扩展,可提供丰富的算法与调试环境,图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证时,借助MATLAB会大大加快算法验证的速度。因此我们针对ALTERA公司的QuartuslI软件和Modelsim软件,给出了一种利用MATLAB软件实现复杂FPGA设计验证的新方法,对FPGA课程实践教学进行了改进。完善实践教学手段和方法的不足,并为电子科学与技术、电子信息工程及通信工程专业的学生提供了一个良好的知识交叉和交流平台,对拓宽学生的知识面和开拓学生的思路有着举足轻重的意义。
本文旨在研究EDA技术的教学创新,不再局限用FPGA完成简单的数字电路设计,同时探讨教学模式、教学方法、教学手段等方面的创新,鼓励学生结合课程的特点,利用MATLAB所提供的丰富的专业工具箱编写相应的仿真程序,有效地将QuartuslI、Modelsim和MATLAB学习与专业理论结合在一起,这种教学方法不仅能够加深学生对基本概念和专业理论知识的理解,提高职业技能,而且也能激发学生自主学习和创新学习的积极性。
提出的QuartuslI、Modelsim和Matlab相结合的仿真测试平台如图1所示,其可为FPGA教学提供新的教学手段和教学方法。
一、利用MATLAB产生测试激励,丰富FPGA验证手段
Altera公司提供的QuarusII软件平台除了具备强大的编译功能之外,在进行算法验证的时候,还提供了一定的波形仿真功能,其输入输出都是以波形形式给出的,看起来如同逻辑分析仪,比较直观。但是,在波形文件中很难对复杂信号数据进行输入,特别是在数字信号处理领域,大多数仿真输入数据都是叠加噪声的,采用波形输入方式是不现实的。如果我们要验证一个图像处理算法如中值滤波去噪算法、边缘检测算法,这些仿真数据用波形输入的方法将难以胜任,而MATLAB自带的函数就能轻松产生这些仿真数据,这样做无疑会节约很多时间和精力。
下面通过一个具体的设计实例来说明如何利用MATLAB和QuarusII或Modelsim软件进行联合仿真。本实例是为了验证Verilog HDL编写的图像中值滤波算法,验证数据为如图2所示加入方差为20的高斯白噪声的cameraman图像,希望通过FPGA设计的中值滤波去除图像的噪声。为了获得测试数据,采用MATLAB脚本把图像数据转换成16进制形式并写人graph.txt文件中。
下面是MATLAB的脚本文件内容,用来将图像cameraman.tif以16進制形式写入graph.txt文件中。
Clear;
x=imread('cameraman.tif');
[j]=imnoise(x,'gaussian',0,0.00615);%给原始图像加入噪声,如图2所示。
fid = fopen('graph.txt','wt');
fprintf(fid,'%x\n',y);
fclose(fid);
在Verilog文件中定义一个8bit x(128x256)数组data_mem用来保存测试图像(128x256),通过$readmemh命令,将文件graph.txt中的图像数据读入该数组中,相关的Verilog代码如下:
reg [7:0]data_mem [0:32767];
initial
begin
$readmemh("graph.txt",data_mem);//将graph.txt中的数据读入数组data_mem中
end
这样,data_mem就可以作为中值滤波算法的测试数据。由此可见,MATLAB 的高级数学建模和分析工具以及内部自带的各种函数,在产生大的有一些常规模式或数学描述的矢量集时,是极其有用的。
通过Quartus II或者Modelsim的仿真得到图3所示的波形图像。
从图3所示的仿真波形我们无法直观看出图像中值滤波的效果。因此我们回到MATLAB中,来显示算法的结果。
二、使用MATLAB对Modelsim和Quartus II仿真生成的数据进行分析
Quartus II和Modelsim仿真都是以方波的形式表示出来,当系统的输出数据比较复杂时难以直观看出结果的对与错以及这些数据之间的关系,这就给验证工作带来了很大的障碍。如果把这些数据转换到MATLAB中显示,可以以波形或图像的形式直观地给出算法的处理结果,更能提高学生的学习和创新兴趣,激发学生的求知欲。MATLAB对Quartus II或Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在MATLAB中把这个文件的数据读出来,就可以在MATLAB中进行分析了。
下面的MATLAB的脚本文件用来在MATLAB中显示滤波后的图像数据:
fid = fopen('data.txt','r');
for i = 1:32768;
num(i)= fscanf(fid,'%x',1);
end
fclose(fid);
b = reshape(num,256,128);
imshow(b,[1 256]);
在MATLAB中通过图形把仿真生成的数据显示出来,如图4所示,可以直观地显示数据之间的关系,分析滤波算法的处理结果,这在Quartus II或Modelsim中是难以实现的。
从上面的实例可以看到用MATLAB和Modelsim或Quartus II联合仿真可以提高Modelsim和Quartus II仿真能力。显示的结果不再局限于以方波的显示呈现在用户面前,从而提高了学生的兴趣,也增强了FPGA设计能力和设计范围,为EDA实验教学提供了新的教学手段。
三、在Matlab中实现FPAG硬件设计
FPGA在数字信号处理领域的广泛应用受限于几个因素,首先,大部分DSP开发人员通常对C语言或MATLAB工具很熟悉,却不了解硬件描述语言VHDL和Verilog HDL及不熟悉硬件设计,尤其是FPGA,部分DSP工程师认为对HDL语言在语句可综合方面的要求限制了其编写算法的思路。其次,虽然VHDL语言也提供了许多高层次的语言抽象,但是基于并行硬件系统的VHDL程序设计与基于微处理器的串行程序设计有很大的不同。
基于以上原因,在DSP教学中,我们可以利用Xilinx公司开发的基于MATLAB的System Generator for DSP工具。System Generator for DSP是Simulink中一个基于FPGA的信号处理建模和设计工具。该工具提供可靠的硬件在环接口(该接口可以直接将FPGA硬件置入设计仿真),可以将一个DSP系统表示为一个高度抽象的模块,并自动将系统映射为一个基于FPGA的硬件方案。
使用system Generator for DSP实现系统设计的主要特点有:在Simulink中实现FPGA电路的系统级建模,并自动生成硬件描述语言;自动生成Modelsim测试程序,支持软硬件仿真;支持用户创建的Simulink模块;使用FPGA自动实现硬件系统。
非电子类的学生,如果对某领域算法如图像、通讯、DSP等非常了解,可以利用MATLAB中Generator for DSP工具完成基于FPGA数字系统的设计,而不需把太多的精力放在具体电路设计知识的学习上,这为多学科交叉学习开辟了很好的教学手段。
四、开发出多学科交叉的综合性实验
基于QuartuslI、Modelsim和MATLAB相结合的教学工具,可以开发出更多的綜合性的实验项目,并构建“信号与系统”、“数字逻辑”电路等课程到集成电路、微电子系统设计的桥梁。综合EDA、ARM、FPGA、DSP技术的实验项目,开拓各专业学生相互交流的平台,激发学生的求知欲。引导学生“在干中学,在学中干”,使学生由“要我做实验”变为“我要做实验”。
五、依据课程特点,探索教学方法
根据QuartuslI、Modelsim和MATLAB相结合的仿真测试平台的课程特点,灵活应用EDA技术开发和设计自己的专用集成电路或集成电子系统。在QuartuslI、Modelsim平台中融入MATLAB仿真和验证手段,能促进学生做到边学边用相结合、边用边学相结合、理论与实践相结合、课内与课外相结合,也是使EDA技术得以灵活应用的必经之路。利用MATLAB提供的直观的实验结果,教师可以通过引导学生观察这些现象,进行很好的启发诱导,深入讲解,调动学生积极思维,由感性认识上升到规律性理性认识,从而激发学生的求知欲望,并在多学科中架起一座桥梁,开拓学生的视野。
六、结论
在高等院校中,传统的EDA实验教学已经不能满足21世纪对人才培养的需要,教学内容、教学方法的改革势在必行。本文结合FPGA课堂教学实践,针对Modelsim和ALTERA公司的QuartuslI软件在仿真中的不足,给出了一种利用MATLAB软件实现复杂FPGA设计验证的新方法。这种联合仿真技术大大加强了Modelsim和QuartuslI的时序仿真能力,提高了FPGA设计效率,丰富了FPGA教学内容,提供了新的教学手段和工具,为开辟高层次的综合设计教学项目提供了新的途径,不仅能够提高课堂教学的效果,而且也能激发学生自主学习和创新学习的积极性,对国内FPGA课程教学具有一定参考价值。
参考文献:
[1]江霞.在Matlab中实现FPGA硬件设计[J].国外电子元器件,2005,(4):4-6.
[2]王旭东.MATLAB及其在FPGA中的应用[M].北京:国防工业出版社,2006.
[3]王旭东.基于MATLAB软件的FPGA课程实践教学的改进[J].科技信息,2009,(31):104.
[4]叶波,赵倩.“集成电路系统设计”课程教学改革探讨[J].中国电力教育,2010,(16):109-110.
[5]祝宏,朱如琪,王进.基于EDA技术的电子实验教学实践与探索[J].中国现代教育装备,2009,(1):77-78.
[6]赵倩,叶波,周多.DE2开发板在电子类专业教学实践中的应用[J].中国电力教育,2010,(31):130-131.
[7] 刘雅举,等.提高电子类专业《EDA技术》课堂效率的教学研究与实际[J].河北农业大学学报,2009,11(2):240-243.
(责任编辑:刘辉)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
关键词:FPGA;EDA;MATLAB;Modelsim;QuartuslI
作者简介:赵倩(1969-),女,湖南衡阳人,上海电力学院计算机与信息工程学院,副教授;朱武(1969-),男,湖北随州人,上海电力学院计算机与信息工程学院,教授。(上海 200090)
基金项目:本文系上海市重点课程建设项目(项目编号:20085303)的研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)22-0061-02
FPGA是一种新型的EDA技术,它的应用不仅使数字电路系统的设计非常方便,并且还大大缩短了系统研制的周期,缩小了数字电路系统的体积。为适应最新科技发展,近年来国内各大高校相继开设了FPGA课程,主要讲授ALTERA和XILINX公司FPGA的设计仿真。随着PFGA技术在图像处理、视频、音频及通讯领域的应用,现有仿真软件Modelsim和QuartuslI的功能虽然非常强大,但其输入输出主要是基于波形方式的,难以实现对复杂设计的仿真验证,尤其是涉及到对数字信号处理算法的仿真验证时,则显得有点不足。其在开发综合设计型实验,培养学生的工程设计创新能力方面有一定的局限,也制约了学生独立性和创新性的培养。由于MATLAB拥有1000多个内置函数和用于信号处理、通信和小波处理的工具箱扩展,可提供丰富的算法与调试环境,图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证时,借助MATLAB会大大加快算法验证的速度。因此我们针对ALTERA公司的QuartuslI软件和Modelsim软件,给出了一种利用MATLAB软件实现复杂FPGA设计验证的新方法,对FPGA课程实践教学进行了改进。完善实践教学手段和方法的不足,并为电子科学与技术、电子信息工程及通信工程专业的学生提供了一个良好的知识交叉和交流平台,对拓宽学生的知识面和开拓学生的思路有着举足轻重的意义。
本文旨在研究EDA技术的教学创新,不再局限用FPGA完成简单的数字电路设计,同时探讨教学模式、教学方法、教学手段等方面的创新,鼓励学生结合课程的特点,利用MATLAB所提供的丰富的专业工具箱编写相应的仿真程序,有效地将QuartuslI、Modelsim和MATLAB学习与专业理论结合在一起,这种教学方法不仅能够加深学生对基本概念和专业理论知识的理解,提高职业技能,而且也能激发学生自主学习和创新学习的积极性。
提出的QuartuslI、Modelsim和Matlab相结合的仿真测试平台如图1所示,其可为FPGA教学提供新的教学手段和教学方法。
一、利用MATLAB产生测试激励,丰富FPGA验证手段
Altera公司提供的QuarusII软件平台除了具备强大的编译功能之外,在进行算法验证的时候,还提供了一定的波形仿真功能,其输入输出都是以波形形式给出的,看起来如同逻辑分析仪,比较直观。但是,在波形文件中很难对复杂信号数据进行输入,特别是在数字信号处理领域,大多数仿真输入数据都是叠加噪声的,采用波形输入方式是不现实的。如果我们要验证一个图像处理算法如中值滤波去噪算法、边缘检测算法,这些仿真数据用波形输入的方法将难以胜任,而MATLAB自带的函数就能轻松产生这些仿真数据,这样做无疑会节约很多时间和精力。
下面通过一个具体的设计实例来说明如何利用MATLAB和QuarusII或Modelsim软件进行联合仿真。本实例是为了验证Verilog HDL编写的图像中值滤波算法,验证数据为如图2所示加入方差为20的高斯白噪声的cameraman图像,希望通过FPGA设计的中值滤波去除图像的噪声。为了获得测试数据,采用MATLAB脚本把图像数据转换成16进制形式并写人graph.txt文件中。
下面是MATLAB的脚本文件内容,用来将图像cameraman.tif以16進制形式写入graph.txt文件中。
Clear;
x=imread('cameraman.tif');
[j]=imnoise(x,'gaussian',0,0.00615);%给原始图像加入噪声,如图2所示。
fid = fopen('graph.txt','wt');
fprintf(fid,'%x\n',y);
fclose(fid);
在Verilog文件中定义一个8bit x(128x256)数组data_mem用来保存测试图像(128x256),通过$readmemh命令,将文件graph.txt中的图像数据读入该数组中,相关的Verilog代码如下:
reg [7:0]data_mem [0:32767];
initial
begin
$readmemh("graph.txt",data_mem);//将graph.txt中的数据读入数组data_mem中
end
这样,data_mem就可以作为中值滤波算法的测试数据。由此可见,MATLAB 的高级数学建模和分析工具以及内部自带的各种函数,在产生大的有一些常规模式或数学描述的矢量集时,是极其有用的。
通过Quartus II或者Modelsim的仿真得到图3所示的波形图像。
从图3所示的仿真波形我们无法直观看出图像中值滤波的效果。因此我们回到MATLAB中,来显示算法的结果。
二、使用MATLAB对Modelsim和Quartus II仿真生成的数据进行分析
Quartus II和Modelsim仿真都是以方波的形式表示出来,当系统的输出数据比较复杂时难以直观看出结果的对与错以及这些数据之间的关系,这就给验证工作带来了很大的障碍。如果把这些数据转换到MATLAB中显示,可以以波形或图像的形式直观地给出算法的处理结果,更能提高学生的学习和创新兴趣,激发学生的求知欲。MATLAB对Quartus II或Modelsim仿真生成数据的处理也是通过文件读写实现的。即通过Verilog语句,将仿真过程中的某个信号写入文件,然后在MATLAB中把这个文件的数据读出来,就可以在MATLAB中进行分析了。
下面的MATLAB的脚本文件用来在MATLAB中显示滤波后的图像数据:
fid = fopen('data.txt','r');
for i = 1:32768;
num(i)= fscanf(fid,'%x',1);
end
fclose(fid);
b = reshape(num,256,128);
imshow(b,[1 256]);
在MATLAB中通过图形把仿真生成的数据显示出来,如图4所示,可以直观地显示数据之间的关系,分析滤波算法的处理结果,这在Quartus II或Modelsim中是难以实现的。
从上面的实例可以看到用MATLAB和Modelsim或Quartus II联合仿真可以提高Modelsim和Quartus II仿真能力。显示的结果不再局限于以方波的显示呈现在用户面前,从而提高了学生的兴趣,也增强了FPGA设计能力和设计范围,为EDA实验教学提供了新的教学手段。
三、在Matlab中实现FPAG硬件设计
FPGA在数字信号处理领域的广泛应用受限于几个因素,首先,大部分DSP开发人员通常对C语言或MATLAB工具很熟悉,却不了解硬件描述语言VHDL和Verilog HDL及不熟悉硬件设计,尤其是FPGA,部分DSP工程师认为对HDL语言在语句可综合方面的要求限制了其编写算法的思路。其次,虽然VHDL语言也提供了许多高层次的语言抽象,但是基于并行硬件系统的VHDL程序设计与基于微处理器的串行程序设计有很大的不同。
基于以上原因,在DSP教学中,我们可以利用Xilinx公司开发的基于MATLAB的System Generator for DSP工具。System Generator for DSP是Simulink中一个基于FPGA的信号处理建模和设计工具。该工具提供可靠的硬件在环接口(该接口可以直接将FPGA硬件置入设计仿真),可以将一个DSP系统表示为一个高度抽象的模块,并自动将系统映射为一个基于FPGA的硬件方案。
使用system Generator for DSP实现系统设计的主要特点有:在Simulink中实现FPGA电路的系统级建模,并自动生成硬件描述语言;自动生成Modelsim测试程序,支持软硬件仿真;支持用户创建的Simulink模块;使用FPGA自动实现硬件系统。
非电子类的学生,如果对某领域算法如图像、通讯、DSP等非常了解,可以利用MATLAB中Generator for DSP工具完成基于FPGA数字系统的设计,而不需把太多的精力放在具体电路设计知识的学习上,这为多学科交叉学习开辟了很好的教学手段。
四、开发出多学科交叉的综合性实验
基于QuartuslI、Modelsim和MATLAB相结合的教学工具,可以开发出更多的綜合性的实验项目,并构建“信号与系统”、“数字逻辑”电路等课程到集成电路、微电子系统设计的桥梁。综合EDA、ARM、FPGA、DSP技术的实验项目,开拓各专业学生相互交流的平台,激发学生的求知欲。引导学生“在干中学,在学中干”,使学生由“要我做实验”变为“我要做实验”。
五、依据课程特点,探索教学方法
根据QuartuslI、Modelsim和MATLAB相结合的仿真测试平台的课程特点,灵活应用EDA技术开发和设计自己的专用集成电路或集成电子系统。在QuartuslI、Modelsim平台中融入MATLAB仿真和验证手段,能促进学生做到边学边用相结合、边用边学相结合、理论与实践相结合、课内与课外相结合,也是使EDA技术得以灵活应用的必经之路。利用MATLAB提供的直观的实验结果,教师可以通过引导学生观察这些现象,进行很好的启发诱导,深入讲解,调动学生积极思维,由感性认识上升到规律性理性认识,从而激发学生的求知欲望,并在多学科中架起一座桥梁,开拓学生的视野。
六、结论
在高等院校中,传统的EDA实验教学已经不能满足21世纪对人才培养的需要,教学内容、教学方法的改革势在必行。本文结合FPGA课堂教学实践,针对Modelsim和ALTERA公司的QuartuslI软件在仿真中的不足,给出了一种利用MATLAB软件实现复杂FPGA设计验证的新方法。这种联合仿真技术大大加强了Modelsim和QuartuslI的时序仿真能力,提高了FPGA设计效率,丰富了FPGA教学内容,提供了新的教学手段和工具,为开辟高层次的综合设计教学项目提供了新的途径,不仅能够提高课堂教学的效果,而且也能激发学生自主学习和创新学习的积极性,对国内FPGA课程教学具有一定参考价值。
参考文献:
[1]江霞.在Matlab中实现FPGA硬件设计[J].国外电子元器件,2005,(4):4-6.
[2]王旭东.MATLAB及其在FPGA中的应用[M].北京:国防工业出版社,2006.
[3]王旭东.基于MATLAB软件的FPGA课程实践教学的改进[J].科技信息,2009,(31):104.
[4]叶波,赵倩.“集成电路系统设计”课程教学改革探讨[J].中国电力教育,2010,(16):109-110.
[5]祝宏,朱如琪,王进.基于EDA技术的电子实验教学实践与探索[J].中国现代教育装备,2009,(1):77-78.
[6]赵倩,叶波,周多.DE2开发板在电子类专业教学实践中的应用[J].中国电力教育,2010,(31):130-131.
[7] 刘雅举,等.提高电子类专业《EDA技术》课堂效率的教学研究与实际[J].河北农业大学学报,2009,11(2):240-243.
(责任编辑:刘辉)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文