ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:191.95KB ,
资源ID:24389417      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24389417.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Xilinx AccelDSP与System Generator的简单应用.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Xilinx AccelDSP与System Generator的简单应用.docx

1、Xilinx AccelDSP与System Generator的简单应用Xilinx AccelDSP与System Generator的简单应用2008-08-20 10:28:30分享:标签:Xilinx AccelDSP System Generator matlab FPGA 目前在嵌入式开发中,嵌入式cpu成为比较热门的开发方式,在FPGA中嵌入一个cpu核,并且可以按需添加一些cpu的外设。用专门的编译器编译C语言后直接在cpu中运行,将逻辑控制与算发集成在一块芯片上,大大缩短了产品的开发周期。然而,在数字信号处理中的算法由纯粹的c语言实现速度是一个很大的问题。而直接用vhdl实

2、现算法,可以大大提高信号的处理速度,比如fft需要大量的运算,而用vhdl硬件实现,可以在很少的时钟周期内完成一个1024点的fft。然而从算法到vhdl的转换却是很麻烦的事,Xinlix AccelDSP为此问题提供了支持。 System Generator可以在matlab simulink实现仿真验证设计,可以将设计生成ISE的工程,还可以通过share memory生成EDK的IP核,在EDK中直接加入工程,然后可以通过指针对其进行数据读写操作,就像读写存储器一样方便。 AccelDSP可以将matlab描述的算法直接转换为vhdl语言描述的模块,也可以转换为,System Gener

3、ator的一个模块。大大简化了从算法描述到vhdl的转换。 下面以一个的在指纹图像细化处理中的一个简单的算法函数介绍一下,AccelDSP与System Generator的联合使用。 首先,打开AccelDSP,新建一个工程名为thin的工程,点击软件左边蓝色区域如下图所示的图标。 然后在下图所示中选择“create new project”,工程名为thin,将已经编写好的thin.m文件和thinscript2.m文件加入到工程。 然后点击OK完成创建工程,点击窗口左边的verify floating point,选择脚本文件thinscript2.m,以一个二值化的简单矩阵验证细化功能

4、:data=0 0 0 0 1 1 0 0 0; 1 1 1 1 1 1 1 1 0; 1 1 1 1 1 1 1 0 0; 0 0 1 1 1 1 0 0 0; 1 0 1 1 1 0 0 0 0; 1 1 1 1 1 0 0 0 0; 0 0 1 1 1 0 0 0 1; 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1;thin模块部分代码如下:function f=thin(din,start)persistent x;persistent flag;persistent delflag1;persistent delflag2;if isempty(x) x=z

5、eros(1,9);endif isempty(flag) flag=0;endif isempty(delflag1) delflag1=0;endif isempty(delflag2) delflag2=0;end.算法实现部分(略)verify floating point完成后,得到的结果如下图所示:由图可见,该模块实现了图片细化的功能。 此时,可以在窗口的中间见到如下图所示得工程设计文件的结构: 下面进一步完成设计,先选择好器件型号,在此使用spartan3e-xc3s500e-fp320-4 50MHz,Flow选择system Generator。 下一步,点击Analyze完

6、成后点击Generate Fixed Point后得到一个生成报告,包括输入,输出和设计所用到的变量的定点量化信息。 然后点击verifyfixed point得到的结果与前面floating point 几乎一致。说明通过了定点数的验证。 接着点击Generate RTL,通过后点击Verify RTL,通过后可以看到入下图所示的图标出现: 此时点击此图标根据提示选择好相应的目录就可以生成在System Generator的模块了。 紧接着启动matlab2007a,打开sumilink,点击xilinx blockset,可以看到刚才生成的模块,如下图: 然后新建一个.mdl文件,命名为t

7、hincore.mdl,将此模块添加进去,并加入share memory中的“to regester”和“from regester”,然后加入Basic Elements中的System Generator模块,添加一个index中的EDK processor,按下图所示连接好各个模块:然后双击EDK processor,将10个寄存器添加到memory map中点击OK。双击System Generator,按下图所示选择好后点击Generate就可以生成EDK的ip核了。 在生成的目录下面找到pcores文件夹。将其中的文件夹复制到EDK的工程目录下面的pcore文件夹中去。然后打开已经

8、建好的xps工程,在IP Catalog下出现了一个Project Local pcores。点开可以看到一个IP核,将其,加入到工程中,并将起连接到plb总线上,选择好地址空间,自动生成地址。然后点击Device Configuration-update bitstream,更新比特文件。运行完成后,新建一个software project编写代码,并初始化thincore_plbw核。其初始化程序如下:void Initialize_thincore()xc_iface_t *iface;xc_to_reg_t *face_x1,*face_x2,*face_x3; xc_to_reg_t

9、 *face_x4,*face_x5,*face_x6;xc_to_reg_t *face_x7,*face_x8,*face_xp,*face_start;xc_from_reg_t *face_del;xc_create(&iface, &THINCORE_PLBW_ConfigTable0);xc_get_shmem(iface, x1, (void *)&face_x1); xc_get_shmem(iface, x2, (void *)&face_x2);xc_get_shmem(iface, x3, (void *)&face_x3);xc_get_shmem(iface, x4,

10、 (void *)&face_x4);xc_get_shmem(iface, x5, (void *)&face_x5);xc_get_shmem(iface, x6, (void *)&face_x6);xc_get_shmem(iface, x7, (void *)&face_x7);xc_get_shmem(iface, x8, (void *)&face_x8);xc_get_shmem(iface, x9, (void *)&face_xp);xc_get_shmem(iface, start, (void *)&face_start);xc_get_shmem(iface, del

11、, (void *)&face_del); x1 = (Xuint32 *) face_x1-din; x2 = (Xuint32 *) face_x2-din; x3 = (Xuint32 *) face_x3-din; x4 = (Xuint32 *) face_x4-din; x5 = (Xuint32 *) face_x5-din; x6 = (Xuint32 *) face_x6-din; x7 = (Xuint32 *) face_x7-din; x8 = (Xuint32 *) face_x8-din; xp = (Xuint32 *) face_xp-din; start = (Xuint32 *) face_start-din; del = (Xuint32 *) face_del-dout; 其中x1xp为全局变量,分别指向thincore核的各个端口的映射地址。 初始化后就可以在C语言程序中直接用指针对端口进行读写。一个实际的指纹图片细化结果如下图所示: 可见,在算法上实现了指纹细化的功能。而且在实际中相对于直接用C语言实现大大提高了指纹细化的速度。至此,完成了从matlab算法描述自动到vhdl的实现,最后到嵌入式cpu核调用的实现的一个简单的应用。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1