- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2节 优秀的HDL代码风格
HDL 代码
3.2.1 代码风格的含义代码风格有两层含义:其一是Verilog的代码书写习惯;另一个则是对于一特定电路,用哪一种形式的语言描述,才能将电路描述得更准确,综合以后产生的电路更为合理。前者在2.5节已有涉及,本节主要介绍后者。 代码风格有通用风格和专用风格两大类,前者指不依赖于FPGA开发的EDA软件工具和FPGA芯片类型,仅仅是从HDL语言出发的代码风格;后者指和开发软件以及硬件芯片密切相关的代码风格,不仅需要关注EDA软件在语法细节上的差异,还要紧密依赖于固有的硬件结构。显然,前者具有较好的通用性,但性能未必最优。在使用时,如果有后续的进一步开发,建议使用通用风格;否则就可采用后者,以便极大地挖掘芯片潜力。?3.2.2 通用代码风格的介绍1.逻辑复用与逻辑复制 在3.1.2节介绍过FPGA设计中面积和速度的转化关系,该理念始终贯穿HDL代码设计,二者典型的转换方式有逻辑复用和逻辑复制。前者通过速度换面积,后者通过面积换取速度,两者各有相应的应用范围。
逻辑复用
逻辑复用是通过提高工作频率来节省面积的优化方法,经常用于存在多个资源可共享单元的设计中,是大规模FPGA设计的核心思想。为了便于理解,首先给出一个例子。 例3-6 幅度到功率转化模块中的逻辑复用。假设系统输入信号为I、Q两路,每路速率为5Mbps、位宽为16比特,分别给出普通实现和使用逻辑复用的实现代码。 功能分析:计算功率需要先将I、Q输入信号经过平方计算模块,然后再将2个平方和相加输出即可。 普通实现方式:
?图3-11 功率统计模块的一般实现方式
逻辑复用方式:
?图3-12 采用逻辑复用方式实现功率统计模块
经过比较可以发现,第1种实现方式需要两个16比特乘法器,第2种实现方式只需要1个乘法器,基本上将资源缩减到第1种方式的一半。目前,虽然有很多综合工具可以提供逻辑复用的选项,但不能因为此而放松对代码编程的要求。主要原因有两点:首先EDA工具的能力毕竟有限,很多情况下还是不能智能发现可以复用的逻辑;其次,不同综合工具的优化参数以及能力并不相同,所以综合结果对于设计者是不确定的。所以,逻辑复用主要还是通过代码体现。
逻辑复制
逻辑复制是通过增加面积而改善设计时序的优化方法,经常用于调整信号的扇出。如果信号具有高的扇出(如:时钟和复位信号等),即要驱动很多后续电路,则要添加缓存器来增强驱动能力,但这会增大信号的时延。通过逻辑复制,使用多个相同的信号来分担驱动任务。这样,每路信号的扇出就会变低,就不需要额外的缓冲器来增强驱动,即可减少信号的路径延迟。例如用于产生控制信号的监控模块一般都有高的扇出,这时就往往需要考虑逻辑复制这一功能。图3-13(a)给出未采用逻辑复制的设计思路,其占用资源较少,但延迟大,容易出错;而采用逻辑复制的设计如图3-13(b)所示,延迟小,但占用的资源多。
?(a) 未采用逻辑复制的设计模式 (b) 采用逻辑复制的设计模式 图3-13 逻辑复制实例示例
逻辑复用和逻辑复制是资源与速度的对立统一,目的都是为了提高设计性能、达到设计目标,但一个是为了节省面积来提高速度,另一个却是为了提高速度来占用额外的面积,两者之间存在转换和平衡的关系。在实际工程中,经常可以看到这两种方法的应用。在XST以及Synplify Pro综合工具中,用户可以设定最大扇出数,当某信号的扇出超过最大扇出值时,该信号会自动被综合工具复制,以降低扇出。 2.逻辑结构 逻辑结构主要分为链状结构(Chain Architecture)和树状结构(Tree Architecture)。一般来讲,链状结构具有较大的时延,后者具有较小的时延。所谓的链状结构主要指程序是串行执行的,树状结构是串并结合的模式,具体如例3-7所示。 例3-7 表3-3给出具有链状结构和树状结构的4输入加法器的实现实例。
??????? 表3-3 4输入加法器的实现
?
从上例可以明显看出树状结构的优势,它能够在同等资源的情况下,缩减运算时延,从而提高电路吞吐量以节省面积。3.if和case语句的使用原则
if和case语句的区别
if语句指定了一个有优先级的编码逻辑,而case语句生成的逻辑是并行的,不具有优先级。if语句可以包含一系列不同的表达式,而case语句比较的是一个公共的控制表达式。通常if-else结构速度较慢,但占用的面积小,如果对速度没有特殊要求而对面积有较高要求,则可用if -else语句完成编解码。case结构速度较快,但占用面积较大,所以用case语句实现对速度要求较高的编解码电路。嵌套的if语句如果使用不当,就会导致
您可能关注的文档
- 略论李白诗以意驱象的特点及其文化心理成因-天府新论.PDF
- 略谈普通物理中的测量误差教学-大学物理.PDF
- 疏散线路-成都双流区棠湖小学.PPT
- 疯狂的棉田灌溉让咸海变成咸沙漠.DOC
- 疾病预后与临床实践.PPT
- 病历书写规范细则-河北沧州中西医结合医院.DOC
- 癌症解剖病理品质提升小组报告1014肿委会106年第三次会议报.PDF
- 白塞病诊治指南草案.PPT
- 病理学-清华大学图书馆.PPT
- 白方礼送牛奶的好爷爷穆尼尔.PPT
- (正式版)DB12 1100-2021 《平板玻璃工业大气污染物排放标准》.docx
- (正式版)DB12 ∕ 1302-2024 《加油站大气污染物排放标准》.docx
- (正式版)DB12 479-2012 《液化石油气钢瓶使用管理信息系统要求 》.docx
- (正式版)DB12 1288-2023 《 海水养殖尾水污染物排放标准》.docx
- (正式版)DB12∕T 236-2021 《棉花简化栽培技术规范 》.docx
- (正式版)DB12∕T 444.1-2011 《公共场所集中空调通风系统清洗消毒操作规程 第1部分:清洗 》.docx
- (正式版)DB12∕T 482-2013 《州河鲤 》.docx
- (正式版)DB12 428-2017 《中小学校和幼儿园安全防范技术规范 》.docx
- (正式版)DB12∕T 456-2012 《仿真性器具》.docx
- (正式版)DB12∕T 444.2-2011 《公共场所集中空调通风系统清洗消毒操作规程 第2部分:消毒 》.docx
最近下载
- 第十六课《祖国,我为您自豪》(课件)道德与法治统编版二年级上册2025.pptx
- 2023年上饶师范学院公共课《马克思主义哲学》期末试卷A(有答案).docx VIP
- 2024广西水利电力职业技术学院招聘笔试真题带答案详解.docx VIP
- 兄弟 HL-4150CDN 4570CDW 4150 4570 彩色激光打印机中文维修手册.pdf VIP
- 法如3d激光扫描仪技术手册2..pdf VIP
- 2023年10月自考00263外国法制史试题及答案含评分标准.pdf VIP
- 科源KY980T系列使用参数设置调试故障代码资料.pdf VIP
- 江苏省骆马湖水库渔业资源调查报告.pdf VIP
- B类药品生产许可证核发检查常见问题分析.pdf VIP
- 2025 《高质量数据集 分类指南》.pdf VIP
原创力文档


文档评论(0)