找回密码
 注册
关于网站域名变更的通知
查看: 989|回复: 1
打印 上一主题 下一主题

用ISE System Generator与Matlab联合开发FPGA

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-9 08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
用ISE System Generator与Matlab联合开发FPGA3 T7 I' Y: E) W

1 g  \, v9 Z5 B5 {
1. 软件版本问题
8 O# N7 j) |' k% l( p% n4 k
Matlab这里有个版本限制,即ISE/System Generator12.1只能完全支持Maltab2009a/b,对Maltab2010a只能beta支持。

ISE版本为Xilinx ISE Design Suite 12.1(提示:在ISE_DS\ISE\sysgen目录下,包含System Generator12.1,但是那个著名的AccelDSP组件找不到了,据说AccelDSP项目暂停,不清楚具体原因,猜测是战略调整)。
: I' J* C; t+ s% I- w! f6 A备注:
4 A9 q! W( h1 L! l2 u" ?- o& xACCEL DSP的确是很好用,但是ISE12.1以后的版本已经不支持这个软件了,所以建议大家最好寻找替代品。* o) \+ n2 n- D5 V! j; n& k
另外,Matlab的generate HDL coder工具和ACCEL DSP的不同是:ACCEL DSP直接写.m文件就可以生成了,但是Matlab中就得用simulink,比较麻烦。。。


  M$ k' V7 x8 b2. 软件安装
4 J$ N6 |5 A/ r. l4 \% p  a6 \
首先是安装Matlab,这里要注意的是Matlab的安装路径必须与英文开头,中间可以包含数字;其次是路径中不能有空格(貌似有空格也可以),否则System Generator将无法识别Matlab的路径。

然后安装ISE 12.1,完成之后点击“C:\Documents and Settings\All Users\「开始」菜单\程序\Xilinx ISE Design Suite 12.1”里面的“System Generator MATLAB Configurator”,如果Matlab安装正确,System Generator会识别出Maltab,否则需要手动选择Maltab的路径。

3. Enjoy it!
& y, W: o+ a% D4 U5 }! C5 s% j* _* W8 u
打开Matlab→Simulink,可以发现左侧的Simulink Library Browser出现了Xilinx的三个工具箱菜单:Xilinx Blocket,Xilinx Reference Blockset,XilinxBlockset。" A0 t- M7 D" ^) y/ C2 Y; W( D) T$ W
如果是第一次打开Xilinx的工具箱菜单,需要有一个建立Xilinx缓存的过程,时间比较长,要把它当成电脑的假死。

4. 开发流程简述
7 L7 \& R0 D4 e: o/ i
首先,每个工程里面都要有一个System Generator的工具箱(在Xilinx Blocket—tools里面),在这里可以配置的有
, G4 b! f. ^! v$ v- w$ F% }( i. r[1]. System Generator生成的工程类型,比如ISE工程、EDK工程等,甚至可以直接生产.bit配置文件;
/ u, |) g8 J/ S$ u# x8 E) \% m[2]. 器件的型号,包括封装、速度等;7 R4 H' @1 f0 m& n/ n
[3]. System Generator的输出路径(文件夹);
7 \1 ~: b  Y% E" S! h9 g) z; {" d[4]. 综合工具(如XST、Synplify等,经常找不到Synplify,干脆就XST好了);
/ I% }  m' m% O; b. R# M9 Q- t" X2 U( f[5]. 编程语言选择:只有VHDL和Verilog HDL;0 m7 L8 |7 `" R. l- \8 S
[6]. 可以选择是否生产测试文件;% H( K0 {: y# L: d: l  w$ m1 ?6 H
[7]. 配置FPGA的时钟,并选择时钟管理方式,这里给出了时钟管脚的配置,不过应该先不填,不然在后面的综合中会有很多警告;其次是若选择了DCM方式,则只能支持Virtex4\5的器件(用Spartan3、3E编译时提示的;奇怪是为什么没有说支持最新的Spartan6、Virtex6器件);
: T+ |% \# X' h4 Y[8]. 最后是选择Simulink的仿真周期,以及各个模块的显示方式(比如选择default显示各个模块的默认值,选择Sampling Frequency则在各模块的输入输出引脚上显示其时钟频率,如50MHz、10MHz等)。


1 C# G# j) c; O1 f, }# Z完成System Generator的配置之后,剩下的仿真环境的搭建、运行步骤和Simulink的普通应用是一样的,只不过必须是从Xilinx的菜单下拖出来的模块才能被物理实现(即可综合);对应Simulink库中的其他模块和Xilinx模块之间的连接,要使用Gateway In和Gateway Out做为接口。& l6 P7 g% ?- \0 P, R- r$ Q
搭建完整个系统之后,把需要观察的变量通过Gateway Out接到示波器上,点击Simulink的运行按钮,就可以观测结果了。System Generator的差错机制非常严格,即使是数据位数不对都会停止仿真并报错。* j1 y( f6 a: Z  y
仿真无误之后,可以运行的操作更加丰富,比如调用Modelsim进行仿真(System Generator的输出文件夹中已自动生产了.do文件),调用Resource Estimator预估资源(过程比较漫长,因为需要综合等过程)等。完成之后在System Generator工具箱中点击generate,就可以在输出文件夹中生产ISE的工程了(.xise)。

' K4 C, r, k& D0 N
打开生产的ISE工程,接下来的操作跟平时没有什么区别,只不过这里的代码全部是自动生成的:)。当然,还有一点需要特别交待的就是,生成的工程中的约束文件中,只有时序约束,是没有管脚约束的(虽然没有管脚约束,也可以综合、映射、生成下载文件,有点奇怪)。可以给工程添加输入输出、信号,然后在Floorplan里面分配管脚。再经过综合、映射、生成下载文件,烧写到PROM里面,就可以运行了。


3 I2 e6 j& _/ L最后附上一点在System Generator开发、调试过程中的一点小经验:
  P% f3 _: T5 A( ?[1]. 一些Xilinx Blocket没有的逻辑结构,比如说case---switch语句,用模块搭比较麻烦,这时可以用Matlab的m文件书写,并保存为Matlab的函数,然后使用XilinxBlocket的Mcode模块调用,这样比搭模块还要简单的多;" ^6 p2 i8 k  i) U
[2]. 浮点数的处理是个大麻烦,幸运的是Xilinx Blocket提供了Xfix语句,可以将浮点转换为需要的宽度、位数的定点,比如a = xfix({xlUnsigned, 8, 3}, 1.53),就把浮点数1.53转换为无符号数,其前8位代表整数,后3位代表小数;
9 ]  @/ n/ H2 d* x; ~4 f% c[3]. Xilinx Blocket一些模块是不消耗硬件资源的,比如scale模块;另一些则是消耗的,比如shift模块;这些详细说明在每个模块的帮助里面都有;- r" `; |1 Z$ n% A- a& S8 ]
[4]. Xilinx Blocket中有的模块,不一定在所选择的器件上适用,比如DSP48、DSP48E等,此时需要结合具体器件的特点。
: f& e5 ]. R: S  W
- h; F. R- w5 d4 z4 J

该用户从未签到

2#
发表于 2018-12-9 12:45 | 只看该作者
不错 谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-4 18:47 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表