因为手上有一块xilinx的spartan--3e开发板,前些日子陆陆续续学习了ise的一般工程开发,熟悉了xilinx ise 10.x的软件操作和开发板的使用。近来没有事情,于是乎,又把那开发板拿出来把弄把弄,开始学习xilinx的fpga的dsp开发设计。在这里先介绍一下xlinx fpga的dsp设计工具和设计流程。
近年来,随着多媒体技术和无线通信技术的迅猛发展,信息技术领域对dsp应用的需求不断增长,传统的dsp处理器(现在用得最多的当属it的dsp,种类多,功能强大,软件技术也很成熟)虽然时钟速率很高,当dsp处理器在运行时按指令顺序执行,因而资源利用率不高,数据的吞吐量较低,难以实现高速率,高复杂度的设计。而fpga拥有大量可编程逻辑资源,比如专用的dsp块,乘法器、双端口ram、lut、寄存器和dcm等,同时配合嵌入式处理器,像altera的niosii核、xilinx的microblaze和powerpc405等处理器软核或硬核,可以轻松实现高数据率的数字信号处理设计,而且性能原声与传统的dsp处理器,具有可裁剪,灵活性大等特点,正越来越被人们所重视。
使用fpga进行dsp算法设计时,传统方式下,设计者首先要进行浮点数的算法验证和仿真,然后再将其转换为定点数程序;其次将定点数算法编写成hdl代码,通过反复的功能仿真,后仿真验证程序的正确性,最终生成比特流。xilinx公司推出的系统建模工具system generator简化了整个dsp设计流程。设计者只需要根据设计要求咱simulink下进行系统建模,使用system generator工具即可自动生成可执行比特流、测试文件等,去掉繁琐的仿真、对比和验证过程。由于提供了适合硬件设计的数字信号处理(dsp)建模环境,加速、简化了fpga的dsp系统级硬件设计。
关于system generator的下载和安装过程,我在此就不详细说明了,在google上搜索一下就能找到的。关于system gnenrator的使用说明我在此向大家推荐一本很好的教材--《xilinx ise design suite 10.x fpga开发指南》(人民邮电出版社、田耕 胡彬 徐文波等著)我是在学校图书馆借到的这本书,写得很详细,相当不错。我写这篇文章的之前做的实验也是参考上面做的。下面我进入正题,具体介绍我在用systemgenerator工具完成dsp设计后使用xilinx ise 10.x 调用modelsim se 6.5进行仿真验证时遇到的的若干问题及其解决方法。
下图为我设计的用matlab simulink工具设计dsp工程。
在用system generator进行fpga的dsp模块设计是以下几点值得特别注意:
①设计的的fpga dsp模块的全局输入和输出数据(也就是在非xilinx库提供的数据源或者数据显示、测量终端,比如下面设计中的step信号源和scope示波器等)必须经过xilinx提供的gateway in和gateway out进行采样,进而得到fpga内部能够处理的定点数。
②每个设计中至少要包含一个system generator图标,因为它是联系matlab设计与xilinx fpga 硬件实现的主要桥梁,通过它可以实现fpga实现属性的设置和修改,双击该图标会出现如图-2所示的对话框。
③由于在system generator中进行设计是需要对外部数据进行采样,所以设计中各个gateway in和gateway out模块都有一个采样周期和采样后所得定点数精度的设置,另外在整个系统也必须有一个系统采样设置,多数情况下就对应着fpga实现设计是的全局时钟,其设置在 图-2中的simulink system clock(sec)。这里需要特别注意,系统设置必须是整个fpga的最高时钟,而gateway in和gateway out模块的采样周期都必须是它的整数倍,否则系统会报错,设计失败。
图-1我设计的用matlab simulink工具设计dsp工程
下图为system generator的系统设置,请注意其中勾选了create testbench选项,这样在点击generator以后,系统才会自动生成勇于modelsim仿真的测试文件,十分方便。
图-2 system generator的系统设置
当一切设计好之后,点击图-2中的generator按钮,系统就会自动调用ise工具进行综合并产生所以需要的设计文件和仿真文件。
接下来,运行ise,打开open project,将路径切换至matlab的work工作目录文件下找到netlist文件,进入就会看到一个已经生产的_dcm_mcw.ise的ise工程文件如图-3示,点击打开.
图-3 ise工程文件
接着,设置ise调用modelsin进行仿真的路径:
点击ise窗口的edit---->prefrence,出现图-4窗口,点击展开ise general--->intergrated tools,如下所示,在model tech simulator项选择你的modelsim安装路径完成设置。另外ise也提供利用其他综合工具进行设计综合的软件接口,如synplify 或者synplify pro。
图-4 点击ise窗口的edit---->prefrence
然后,回到ise工程界面,在source窗口选择source for 切换至behavior simulation,此时在sources窗口就能看见刚才system generator自动生成的testbench测试文件了以-dcm_mcw_tb-structure形式命名。如图-5示:
图-5 ise工程界面
接下来的一步是决定ise能否成功调用modelsim se6.5进行仿真工作的关键。我遇到的问题也大都在于此。如果此时,你和我一样迫不及待的想看到仿真的结果而草草的点击图-6中process窗口的simulate behavioral model的话,一连串的问题也就随之出现了。
如图-6所示,modelsim的命令窗口输出了以下错误信息
# ** error: lab_dcm.vhd(41): library xilinxcorelib not found.
# ** error: lab_dcm.vhd(43): vhdl compiler exiting
# ** error: d:/modeltech_6.5/win32/vcom failed.
# error in macro ./pn_behavioral.do line 9
# d:/modeltech_6.5/win32/vcom failed.
# while executing
图-6 调用modelsim se6.5进行仿真工作
上面的信息提示://没找到 library xilinxcorelib所以编译器不能对当前工程进行编译和仿真,所编译器退出。
看到如此的信息,当时很茫然,这到底是怎么回事呢?从 xilinxcorelib来看似乎是modelsim里面没有xilinx的仿真库呀!
到google上面一查才知道,原来用modelsim进行仿真时,先要对设计中调用的元件库进行编译,也就是compile,通过之后才能进行波形仿真(simulate)。而modelsim 的se版本属于通用版,仅集成(也就是自带的)一般的库,比如ieee库,verilog库和标准库std等。不像其专业版,如跟altera设计的modelsim-altera版就自带了alterafpga的全部设计库。
另外,modelsim在启动时,会调用一个非常关键的初始化文件--modelsim.ini,这个文件决定了本次modelsim软件启动后所具备的库的多少和映射关系。在知道了这一点后,我就在电脑上搜索modelsim.ini,结果惊讶的发现了在我的电脑上面居然有好几个modelsim.ini文件。如图-7所示:
图-7 居然有好几个modelsim.ini文件
看到上面的搜索结果,我才想起以前曾经使用过modelsim,但都是fpga软件安装包配套的版本,有actel的fpga设计软件libero8.3自带的专业许可的modelsim版本和altera 的fpga设计软件quartus9.0自带的modelsim-altera 6.4a (quartus ii 9.0) starter edition版本,在使用的时候由于是专业版,都安装好了各自fpga厂商的设计库,在用fpga软件调用modelsim是从未遇到过此类数据库lib方面的问题。
由此,我也发现eda工具在生成modelsim测试文件时会根据fpga的设计环境生产一个modelsim.ini文件,用于调用modelsim软件仿真时初始化modelsim的启动环境。该初始化文件一般都包含在各自的工程设计文件目录下。如图-8所示。
我打开我当前的设计工程目录:d:\program files\matlab\r2007a\work\my_lab\netlist下的modelsim.ini文件,发现其中的库设置内容如下:
[library]
others = $model_tech/../modelsim.ini
;vhdl_psl_checkers = $model_tech/../vhdl_psl_checkers // source files only for this release
;verilog_psl_checkers = $model_tech/../verilog_psl_checkers // source files only for this release
;mvc_lib = $model_tech/../mvc_lib
上面语句的意思是每个库的名称及其映射路径,从上面并没有发现错误中所提到的xilinxcorelib这个库及其映射路径。所以出错也就理所当然啦!
另外从上面的语句还可以看出,modelsim在启动时首先调用的是当前工程设计目录下的modelsim.ini文件,其他它通过others = $model_tech/../modelsim.ini还会调用modelsim安装目录下的初始化文件,进行库的映射。
好了,在打开modelsim安装目录下的初始化文件modelsim.ini文件发现其库映射设置如下:
[library]
std = $model_tech/../std
ieee = $model_tech/../ieee
verilog = $model_tech/../verilog
vital2000 = $model_tech/../vital2000
std_developerskit = $model_tech/../std_developerskit
synopsys = $model_tech/../synopsys
modelsim_lib = $model_tech/../modelsim_lib
sv_std = $model_tech/../sv_std
mtiavm = $model_tech/../avm
mtiovm = $model_tech/../ovm-2.0.1
mtiupf = $model_tech/../upf_lib
mtipa = $model_tech/../pa_lib
floatfixlib = $model_tech/../floatfixlib
;vhdl_psl_checkers = $model_tech/../vhdl_psl_checkers // source files only for this release
;verilog_psl_checkers = $model_tech/../verilog_psl_checkers // source files only for this release
;mvc_lib = $model_tech/../mvc_lib
中也就是我们在图-6的modelsim软件界面的library栏所见到的所有库了。
继而,我又在google上进一步搜索ise调用modelsim进行仿真方面的问题。看到一些论坛的回帖中谈到,用modelsim进行xilinx fpga设计的仿真时安装xilinx库的各种方法。我将它们都一一试了一遍,问题依旧啊!特别是其中用ise的compxlibgui.exe工具(安装路径\xilinx\10.1\ise\bin\nt\compxlibgui.exe)进行自动的xilinx库编译时,由于选择了全部的库进行编译,用了近3个小时才完成。于是,我很不甘心就这样失败了。
回想整个工程,我又在电脑上搜索modelsim.ini文件,发现此时在ise的安装目录下多了一个该文件(见图-7所示),于是迫不及待的打开,发现如下:
[library]
others = $model_tech/../modelsim.ini
;vhdl_psl_checkers = $model_tech/../vhdl_psl_checkers // source files only for this release
;verilog_psl_checkers = $model_tech/../verilog_psl_checkers // source files only for this release
;mvc_lib = $model_tech/../mvc_lib
unisims_ver = c:\xilinx\10.1\ise\verilog\mti_se\unisims_ver
unimacro_ver = c:\xilinx\10.1\ise\verilog\mti_se\unimacro_ver
uni9000_ver = c:\xilinx\10.1\ise\verilog\mti_se\uni9000_ver
simprims_ver = c:\xilinx\10.1\ise\verilog\mti_se\simprims_ver
xilinxcorelib_ver = c:\xilinx\10.1\ise\verilog\mti_se\xilinxcorelib_ver
secureip = c:\xilinx\10.1\ise\verilog\mti_se\secureip
aim_ver = c:\xilinx\10.1\ise\verilog\mti_se\abel_ver\aim_ver
cpld_ver = c:\xilinx\10.1\ise\verilog\mti_se\cpld_ver
unisim = c:\xilinx\10.1\ise\vhdl\mti_se\unisim
unimacro = c:\xilinx\10.1\ise\vhdl\mti_se\unimacro
simprim = c:\xilinx\10.1\ise\vhdl\mti_se\simprim
xilinxcorelib = c:\xilinx\10.1\ise\vhdl\mti_se\xilinxcorelib
aim = c:\xilinx\10.1\ise\vhdl\mti_se\abel\aim
pls = c:\xilinx\10.1\ise\vhdl\mti_se\abel\pls
cpld = c:\xilinx\10.1\ise\vhdl\mti_se\cpld
奇迹般的发现了xilinxcorelib = c:\xilinx\10.1\ise\vhdl\mti_se\xilinxcorelib
于是,欣喜万分。将上面的全部粗体语句全部copy到当前工程目录下的modelsim.ini文件中,再在ise下面重复上面的过程,奇迹终于出现啦!
my god!所有的xilinx库都出现了,仿真波形也出来了!
图-8 my god!所有的xilinx库都出现了
这里再附上我上传在本网站上的modelsim se 6.5的完整版下载链接和利用ise的compxlibgui.exe工具进行xilinx库编译的流程截图。希望对大家有帮助。modelsim se 6.5的完整版下载链接:如果未能找到,请在搜索栏中搜modelsim se 6.5就可以看见了,全部11个压缩包,共202m
。
大家点击附件也可以查看完整版本。
胡恩伟
写于2010年3月15日于重大a区一舍
附件大小
xilinx ise 10.x 调用modelsim se 6.5仿真的若干问题及其解决方法 843 kb
对高通设计不满 传苹果自己为5G版iPhone 12研发天线
VF转换电路计算三角波的高低阈值
ITO PET技术,ITO PET技术原理是什么
IHS最新预测:全球处理器出货量年底将达15亿片
三星李在镕被限制就业,会伤及其物联网布局吗?
Xlinx FPGA的DSP设计工具和设计流程
如何有效地从内核中访问设备的全局内存
高端黑科技华为nova 2 Plus魔镜版美得太不像话了!
苹果全新配色:渐变机身+5G网络+3860毫安电池
人工智能应该学什么专业
为ADI补充该细分领域的市场解决方案
应用于低速应用所需的 DAC的详细分析
周志华:AI伦理研究将就加入南京大学人工智能学院
LG OLED 8k电视价值30多万 贵在这些地方你们知道吗
显像管灯丝保护电路图
华硕灵珑III笔记本重新定义轻薄本
智慧校园创造特色管理新模式!
Instagram将通过AI筛查检测欺凌性言语,以对抗网络欺凌行为
cpu发热如何解决 如何正确选择CPU
全面解读功能安全之暴露率的实例和解释