- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硬件设计及建模—第6
* HMEC MicroElectronics Center Verilog中的always过程块是通用的,不能反映准确的设计意图,SystemVerilog增加了硬件专用类型的过程块,能够准确反映设计意图,使模拟、综合、形式检查、lint检查等EDA工具精确地完成任务,并使不同的EDA工具保持一致性;SystemVerilog对任务和函数进行了许多改进,增强了任务和函数对大规模、复杂设计建模能力。 组合逻辑过程块 锁存逻辑过程块 时序逻辑过程块 任务与函数的改进 第6章 SystemVerilog过程块、任务和函数 6.1 Verilog通用目的always过程块 always过程块是一个能重复执行的语句块的无限循环,循环包括了时间控制或事件控制以使模拟时间向前推进。 always过程块用于对象建模,可以用作组合逻辑、锁存逻辑和时序逻辑的RTL建模,也可用于对算法建模及在测试平台中时钟的建模。 always过程块通常包括敏感表,只有敏感表中的信号发生变化时,过程块才能被触发执行。 由于always过程块是通用的,工具必须从过程块内容推断设计意图,加大软件工具的负担。 Verilog RTL综合的IEEE1364.1标准中给出了always过程块的组合逻辑、锁存逻辑和时序逻辑的综合指导方针,但并不要求强制执行,且always的模拟与综合不依照同样的语法规则,使得模拟与综合结果不一致! 6.2 SystemVerilog特有的过程块 SystemVerilog增加了3个能够明确表示设计意图的过程块:always_comb、always_latch和always_ff;如果特有的过程块的内容与其相应逻辑不匹配,软件工具会发出警告信息;特有过程块与always一样是无限循环的,在特有块中加入了限制建模类型的句法和语义的规则,从而与IEEE1364.1综合标准一致。 通过使用always_comb、always_latch和always_ff过程块,不仅是软件工具,其它查看或维护此模型的设计人员也能够很清楚地了解设计思路,提高了代码的文档性。 注意:并不是使用了always_comb、always_latch、always_ff过程块就一定会综合出对应的组合、锁存、触发电路! 6.2.1 组合逻辑过程块 always_comb过程块表示建立组合逻辑模型,always_comb能推断出其敏感表,推断的敏感表包括所有被过程块读取并在块外赋值的信号及过程块中调用函数的有所信号(但局部的临时变量除外)。 禁止出现共享变量:always_comb过程要求被赋值的变量不能再次在其它过程块被赋值,以符合综合要求。 always_comb过程块在所有的initial和always过程块启动后,会在模拟的0时刻自动触发,该特殊主义确保了组合逻辑在0时刻产生与输入相对应的输出结果尤其是在使用两态变量建模时,0时刻自动求值显得尤为重要! 6.2.1 组合逻辑过程块 package chip_types; typedef enum {FETCH, WRITE, ADD, SUB, MULT, DIV, SHIFT, NOP} instr_t; endpackage import chip_types :: *; module controller(output logic read, write, input instr_t instruction, input wire clk, resetN); enum {WAIT, LOAD, STORE} state, nextState; always @(posedge clk, negedge resetN) if( ! resetN) state = WAIT; else state = nextState; always @(state) begin case (state) WAIT : nextState = LOAD; LOAD : nextState = STORE; 仅当state变化时才触发 6.2.1 组合逻辑过程块 STORE : nextState = WAIT; endcase end always @(state, instruction) begin read = 0; write = 0; if(stat
您可能关注的文档
- 畅游美丽的丽江.ppt
- 画家和牧童ppt1.ppt
- 疑难名词的用法和.ppt
- 电阻电路分析3.ppt
- 画家和牧童——林秋群.ppt
- 电路模型和定律1.ppt
- 疾病成本法.ppt
- 痛经之谜1.ppt
- 画面的逻辑性和空间性.ppt
- 画面拍摄1.pptx
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)