热度 9
2017-10-19 09:38
2302 次阅读|
0 个评论
一、模型的设计原理 SysGen 通过使用 MCode 模块提供了对 Matlab 的直接支持。 MCode 模块支持将输入值应用到 M 函数,用于对使用 Xilinx 定点数据类型的评估,并且在每个采样周期进行评估。模块通过使用永久的状态变量来保持内部状态。模块的输入端口是由 M 函数指定的输入变量所决定的,输出端口由 M 函数的输出变量决定。这个模块为构建有限状态机、控制逻辑等,提供一个便捷的方法。 下面通过 MCode 构建两个滤波器,并将两个模块的计算结果进行比较。 二、 simple_fir.m 文件 function y = simple_fir(x,lat,coefs,len,c_nbits,c_binpt,o_nbits,o_binpt) coef_prec = {xlSigned,c_nbits,c_binpt,xlRound,xlWrap}; out_prec = {xlSigned,o_nbits,o_binpt}; coefs_xfix = xfix(coef_prec,coefs); persistent coef_vec,coef_vec = xl_state(coefs_xfix,coef_prec); persistent x_line,x_line = xl_state(zeros(1,len-1),x); persistent p,p = xl_state(zeros(1,lat),out_prec,lat); sum = x * coef_vec(0); for idx = 1:len-1 sum = sum + x_line(idx-1) * coef_vec(idx); sum = xfix(out_prec,sum); end y = p.back; p.push_front_pop_back(sum); x_line.push_front_pop_back(x); fir_tranpose.m文件 function y = fir_transpose(x,lat,coefs,len,c_nbits,c_binpt,o_nbits,o_binpt) coef_prec = {xlSigned,c_nbits,c_binpt,xlRound,xlWrap}; out_prec = {xlSigned,o_nbits,o_binpt}; coefs_xfix = xfix(coef_prec,coefs); persistent coef_vec,coef_vec = xl_state(coefs_xfix,coef_prec); persistent reg_line, reg_line = xl_state(zeros(1,len),out_prec); if lat = 0 error('latency must be at least 1'); end lat = lat -1; persistent dly, if lat = 0 y = reg_line.back; else dly = xl_state(zeros(1,lat),out_prec,lat); y = dly.back; dly.push_front_pop_back(reg_line.back); end for idx = len-1:-1:1 reg_line(idx) = reg_line(idx-1) + coef_vec(len-idx-1)*x; end reg_line(0) = coef_vec(len-1) * x; 三、系统模型的建立 打开 System Generator, 然后打开 Simulink, 新建一个设计。 在 Libraries 找到 Xilinx Blockset , 展开 Math, 将 2 个 MCode 元件加入到设计中。 在 Xinlinx Blockset ,展开 Basic Elements, 将 Gateway In 和 Gateway Out 元件加入到设计。 展开 Simulink, 找到 Sources, 将 Band-Limited White Noise 元件加入到设计; 在 Simulink 的 Sinks 中找到 Scope, 加入到设计。 在 Xilinx Blockset 的 Basic Elements 中将 System Generator 符号加入到设计。 双击上面的 MCode 元件符号,打开参数配置对话框,在 Basic 标签页,点击 Browse, 定位到 simple_fir.m 的路径。单击 interface ,安下图所示配置。在 Advanced 标签页,勾选 Enable printing with disp 。 双击下面的 MCode 元件,在 Basic 标签页加载 fir_transpose.m 文件。在 Interface 标签下,参数如下配置。在 Advanced 标签页,勾选 Enable printing with disp 最后按下图所示连接 四、仿真 在 Simulink 的工具栏文本框中输入 100 ,然后点击仿真按钮,最后双击 Scope 符号,查看仿真图像