




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于模型设计的自动代码生成高子旺 顾美康(上海师范大学 信息与机电学院,上海 200234) 摘 要 介绍了基于模型设计的优点,并以Prewitt边缘检测算法的设计和实现为例,详细叙述了基于模型设计的开发流程,包括模型建立、离线仿真、自动代码生成。 关键词 基于模型设计;Simulink;HDL Coder1 引言 传统的开发流程中,不同的部门负责不同的流程,不同部门间的交流通过文档规范容易引起二义性。各组之间的传递错误将会影响到整个开发项目的设计进度,并且测试部分只能在整个设计完成后进行,若出现问题还需要对问题的所在进行较长时间的分析、确认。如果问题出现在设计的开始阶段,那整个设计的修改将是巨大的,将给设计成本、设计周期带来很大的负面影响。而基于模型的设计中,通过建立各种系统模型完整地呈现系统设计要求,帮助不同专业的工程师一起高效工作,并可在设计过程的不同阶段进行交流;在设计的各个环节都能进行测试,发现并校正错误,这将最大限度地降低整个系统的最终测试产生错误的可能,从而使设计流程实现了最佳的优化 1。 与算法的C语言实现相比,人工编写算法的硬件描述语言不是一件易事。代码的自动生成作为基于模型设计的重要组成部分,有效地避免了人工编写代码可能产生的错误,降低了开发难度。值得注意的是,在基于FPGA的DSP开发工具中,无论是Altera的DSP Builder还是Xilinx的System Generator,将Simulink的DSP模型转换成的硬件描述语言都只限于VHDL语言,而且生成的代码可读性欠佳。本文采用SimulinkHDL Coder来完成代码的自动生成,它不仅能生成可综合的VHDL和Verrlog,而且代码结构紧凑,可读性好,独立于目标板。 下面以Prewitt边缘检测算法的设计和实现为例,详细介绍基于模型设计的开发流程。2 基于模型的设计2.1 Prewitt算法 Prewitt算子是灰度图像边缘检测中常用的33 窗口一阶微分算子: (1) (2) |G|=|(P1+P4+P7)-(P3+P6+P9)|+|(P1+P2+P3)-(P7+P8+P9)|;要判断的P5是否为边缘点,先求出|G|;再将|G|与阈值比较,如果大于阈值,则P5为边缘点。2.2 模型的建立 根据Prewitt算法从Simulink库中调用相应的模块,再将它们连接起来,Prewitt子系统框图如图1所示。这里需要说明的是模块间的数据流。子系统的输入、输出端口均设置为八位无符号整型,每个模块的输入均继承内部规则,这样当上一模块的输出改变数据类型时,模块能自动改变数据类型,使数据类型保持一致。对于加法模块的输出,需要确立的有:数据有效位宽和是否使用符号位。三个uint8数据相加的结果,有效位应为十位,少则可能发生溢出,多则造成数据位浪费;相加模块的输出作为相减模块的输入,应有符号位;这样相加模块的输出共十一位,一位符号位,十位有效位。两个数相减结果可能为负,相减模块的输出亦为f(1,11,0)。|u|模块输入继承内部规则,为sfix11,输出设置为uint8,会发生数据截断,应选中数据溢出饱和选项。子系统中的其余模块的数据类型均继承内部规则。从中我们可以看到,开发人员可以对与模块的内部计算有关的位宽进行调节。这给了设计人员很大的灵活性,从而在让输出符合可执行规范和使用最少的数据位以节省器件空间之间做出权衡。图1 Prewitt子系统模型2.3 离线仿真测试 Simulink允许用户在设计的任何阶段都可对模型进行仿真测试,甚至在模型的建立阶段。图2给出了Prewitt子系统内部模块的测试验证,用常数替换子系统输入端口,在我们想知道的任意节点处放置Display模块,就可以显示我们所要的数据。在图2中,相加模块add1输出的字长为11位,add2输出的字长为10位,二者输入数据相同。对比Display2和Display3可知,add2发生了溢出,从而验证了相加模块输出位宽设置的正确性。取绝对值模块Gx和Gx1的输入为-305,如果输出类型选择uint11,则输出305;为了缩小位宽,采用uint8,数据要从11位截断为8位。Gx选中了溢出饱和项,Gx1模块没有选中该项。比较Display5和Display6可知,数据从11位截断为8位时,Gx设置符合算法要求。图2 Prewitt子系统内部模块验证 整个系统的离线仿真如图3所示,离线仿真系统主要由From Workspace模块、Data Type Conversion模块、To Workspace模块、image_buffir子系统、Prewitt子系统构成,显示了Simulink在模型设计的层次化。From Workspace模块调用,事先由M文件读取并输出的640*480bmp照片灰度数据流。uint8模块将double类型的数据转换成uint8类型。 image_buffer子系统实现数据的缓存,其中p2、p3、p4、p5、p6、p7、p8与p1的时间间隔分别为1、2、640、642、1280、1281、1282个时钟周期。To Workspace模块将边缘检测后的数据输送给MATLAB工作库,供后续的M文件生成图像。图3 离线仿真系统 仿真结果如图5所示,对比原照片图4,达到目的;如果没达到预期的效果,将回到Prewitt子系统的修改,再测试,直到测试满意为止。图4 原照片图5 检测结果2.4 代码生成 模型通过仿真测试和验证后就可以生成代码了,本文采用HDL Coder自动生成代码。HDL Coder能从Simulink建立的模型生成位精确、周期精准、可综合的Verilog和VHDL。生成的VHDL与IEEE1076兼容,Verilog与IEEE1364-2001兼容;生成的代码独立于目标板,同步于同一时钟域2。我们还可以指定某一子系统生成代码,这里我们只指定Prewitt子系统生成代码。 下面给出了绝对值模块Gx对应的代码。- Abs function:|u|- Determine the unary minus of the input- Saturation on Integer Overflow:onunaryminus_temp=(0&Subtract_out1) WHEN Subtract_out1=10000000000ELSE -resize(Subtract_out1,12);um_Subtract_out10,OTHERS=1) WHEN (unaryminus_temp(11)=0 ANDunaryminus_temp(10)/=0) OR (unaryminus_temp(11)=0 ANDunaryminus_temp(10DOWNTO0)= 01111111111)ELSE (10=1,OTHERS=0) WHEN unaryminus_temp(11)=1 AND unaryminus_temp(10)/=1ELSE (unaryminus_temp(10 DOWNTO 0);- Compare the input to 0 to see if it is negativenegative_Subtract_out1=1 WHEN(Subtract_out1Gx_ constant_zero)ELSE 0;- Assign the input or its unary minus to the output based on whether the input is negative or notabs_Subtract_out1=um_Subtract_out1 WHEN(negative_ Subtract_out1=1)ELSE Subtract_out1;- Convert to the output datatype- Round mode:Saturation on Integer- Overflow:onGx_out1 1) WHEN abs_Subtract_out1(10)=0 AND abs_Subtract_ out1(9DOWNTO8)/=00 ELSE to_unsigned(0,8) WHEN abs_Subtract_out1(10)=1 ELSE (unsigned(abs_Subtract_out1 (7 DOWNTO 0); 从上面的代码可以看出,自动生成的代码紧凑,文件小,在关键部分标有适当的注解,具有较好的可读性,这些都是Altera的DSP Builder和Xilinx的System Generator无法比拟的优点。自动生成代码后,就可以将生成的代码文件加入到项目工程中,与手工代码协同工作。3 结束语 本文以Prewitt边缘检测算法的设计和实现为例,详细叙述了基于模型设计的开发流程,包括模型建立、离线仿真、代码自动生成。从中我们可以看到基于模型设计使用统一的开发工具,消除了通过文档进行交流的可能,使整个开发过程变成一个螺旋型的开发过程。这种螺旋型的设计过程从本质上更接近于并行开发过程,可在开发阶段就将早期的工作模型提供给校验组和产品组,并参与到整个开发过程,有助于缩短开发周期和减小工作造价。参考文献 1 The MathWorks基于模型的设计能明显优化设计流程(R)北京,2007 2 The MathWorksDocument for Simulink HDL Coder(DB/OL),2008 3 Paul F.Smith,Sameer M.P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年内蒙古呼伦贝尔农垦集团有限公司招聘考试笔试试卷含答案附答案详解(模拟题)
- 2025公益性岗位试题及答案解析
- 2025年工业互联网平台流量整形技术产业政策与市场前景分析
- 2025年新能源汽车电池回收利用技术市场前景与发展前景报告
- 2025年新能源物流车推广应用与充电桩建设成本优化策略与绿色物流成本控制报告001
- 合肥市经济开发区产业结构优化路径与策略研究
- 量子通信(第二版) 课件汇 第11-24讲 QKD原理与实现(I)-量子通信网络-拓扑与路由、复习
- 2025年教师招聘之《小学教师招聘》题库综合试卷带答案详解(巩固)
- 2025年教师招聘之《幼儿教师招聘》通关练习题和答案及参考答案详解(精练)
- 基于2025年智能制造产业孵化基地建设的产业科技创新体系建设建议
- 2025保密教育线上培训考试题库(含答案)
- 护栏供应及安装合同范本
- 2025宁波宁海县国有企业招聘52人考试参考试题及答案解析
- 2025年本科院校团委笔试备考手册
- GB/T 45940-2025网络安全技术网络安全运维实施指南
- 2024年仙桃市高新技术产业投资有限公司招聘笔试真题
- 敦煌课件讲解稿子
- 2025年环境工程师初级职称考试试题及答案解析
- 眼科特检基础知识培训课件
- 统编版高中思想政治必修1第一课社会主义从空想到科学、从理论到实践的发展1.2科学社会主义的理论与实践 教学课件
- 摄影剪辑基本知识培训课件
评论
0/150
提交评论