硬件语言代码规范培训课件.ppt

硬件语言代码规范培训课件.ppt

ID:56934392

大小:908.50 KB

页数:64页

时间:2020-07-21

硬件语言代码规范培训课件.ppt_第1页
硬件语言代码规范培训课件.ppt_第2页
硬件语言代码规范培训课件.ppt_第3页
硬件语言代码规范培训课件.ppt_第4页
硬件语言代码规范培训课件.ppt_第5页
资源描述:

《硬件语言代码规范培训课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、可综合代码和代码规范潘伟涛主要内容代码书写规范的重要性代码书写规范要求代码书写规范检查及保证一、代码书写规范的重要性代码书写规范的重要性1、可综合性要求2、速度、面积要求4、增强代码的可读性,易于修改和维护5、加快项目进度,提高效率6、统一的代码风格易于团队合作7、将问题解决在代码编写阶段,避免后端出现不可解决的布局布线问题8、养成良好习惯,有利于就业可综合性要求可综合代码可综合性要求可综合性要求不可综合代码速度、面积要求速度、面积要求速度、面积要求速度、面积要求速度、面积要求代码书写规范要求assignalwaysIfelsecas

2、eVerilogHDL使用以下几个语句就能完成一个好的设计代码书写规范要求一、if语句If语句必须要有else,尤其组合逻辑嵌套计数不能太多,否则关键路径会很长,会严重影响性能分支较多的if应想办法采用case代替If条件判断不能太长,若逻辑比较复杂,尽量用新产生信号代替注意if的优先级尽量不使用<、>、<=、>=比较符。二、case语句Case语句判断条件一定要全,如果不全,一定要加default。Case语句的条件没有优先级,综合后是一个并行多路选择器。注意:如果if语句太长,应该尽可能用case语句代替。代码书写规范要求三、al

3、ways块组合用阻塞,时序用非阻塞赋值always块的形式:always@(event)beginstatesmentsend例:always@(posedgeclk)always@(borc)beginbegina<=#1b;if(c==1’b0)a=b;endend代码书写规范要求BlockingVs.No-blockingAssignmengs[1]//Blockingassignmentmodulebloc(a,b,clk);inputclk,a;outputb;regy,b;always@(posedgeclk)beginy

4、=a;b=y;endendmodule//Non-Blockingassignmentmodulebloc(a,b,clk);inputclk,a;outputb;regy,b;always@(posedgeclk)beginy<=a;b<=y;endendmoduleBlockingVs.No-blockingAssignments[2]aclkdq>dq>ybclkdq>dq>clkclkayb敏感列表时序逻辑里为clock上升沿加复位信号.组合逻辑里面应包含模块中所有用到的信号.若条件不全,则会出现前仿、后仿不一致的问题,因为R

5、TL认描述,综合认敏感列表。不过,现在新推出的仿真器如果写成(*)则代表所有信号了。同步复位和异步复位(1)always@(posedgeclk)beginif(reset)q<=1’b0elseq<=d;endalways@(posedgeclkorposedgereset)beginif(reset)q<=1’b0elseq<=d;end同步复位 综合出来不带复位端异步复位 综合出来带复位端有利于整个系统各模块的同时复位/置位(初始化)同步复位和异步复位(2)四、避免出现Latchalways@(aorgate)beginif(g

6、ate)out=a;endgateaout代码书写规范要求锁存和寄存的差别区别:锁存是电平起作用寄存是时钟有效沿起作用!!在设计中,应该尽量避免使用锁存!因为锁存要占去大量的触发器资源,而且会对电路带来某种不稳定的隐患。在组合逻辑的组合进程中,条件语句描述时应该指定所有条件下所有输出的状态,以避免锁存。比如if/case语句的所有分支必须定义全部的输出才可能避免出现锁存。所谓的latch,其实质是组合电路中有反馈!反馈的形成是利用到了前一个状态。五、FSM:时序组合分开代码书写规范要求尽量采用one-hot编码one-hot编码方式只

7、用一个bit来表示一个状态,这大大缩小了状态译码的组合电路规模,使得路径延时更小,因此状态机的时钟可以运行在更高的频率上。特例:不妨想象该状态机就是一个循环计数器,如果采用binary编码,则该计数器存在明显的组合电路;而如果采用one-hot编码,该计数器的综合结果就是一个移位寄存器序列,根本不存在任何组合门!One-hot因为寄存器消耗量比较大,所以往往用在寄存器资源比较丰富的FPGA中代码书写规范要求Memory的用法(1)在拿到VENDOR的MEM库模型之前,可先设计一个REG组的MEM仿真模型。并且单独用一个module包装

8、(WRAP),一般命名规则如下:MEN_8_256_WRAP对MEMORY包装的Module内的Memory的定义为:reg[7:0]mem[255:0];读取该MEM第0个地址单元的第7比特的操作方式:wiredata

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。