verilog HDL 课件第八章.ppt

上传人:灯火****19 文档编号:135020608 上传时间:2020-06-11 格式:PPT 页数:49 大小:562KB
返回 下载 相关 举报
verilog HDL 课件第八章.ppt_第1页
第1页 / 共49页
verilog HDL 课件第八章.ppt_第2页
第2页 / 共49页
verilog HDL 课件第八章.ppt_第3页
第3页 / 共49页
verilog HDL 课件第八章.ppt_第4页
第4页 / 共49页
verilog HDL 课件第八章.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《verilog HDL 课件第八章.ppt》由会员分享,可在线阅读,更多相关《verilog HDL 课件第八章.ppt(49页珍藏版)》请在金锄头文库上搜索。

1、第八讲verilog的可综合性 逻辑综合Verilog的逻辑综合Verilog的可综合风格 8 1逻辑综合 逻辑综合 在标准单元库和特定的设计约束的基础上 把设计的高层次描述转换成优化的门级网表的过程 标准单元库可以包含简单的单元 例如与门 或门和或非门等基本逻辑门 也可以包含宏单元 例如加法器 多路选择器和特殊的触发器 计算机辅助逻辑综合工具的出现已经把高层次描述向逻辑门的转化过程自动化了 设计者现在可以把精力集中在体系结构的方案 设计的硬件语言描述上 由综合工具在内部进行几次反复 生成优化的门级描述 自动化的逻辑综合已经非常有效地减少了高层次设计到门级网表的转化时间 它使设计者可以把更多的

2、时间用于更高层次的描述上 因为把设计转换到门级网表所需的时间大大减少了 寄存器传输级 RTL 层次用硬件描述语言verilog编写设计 术语RTL用于表示HDL的一种风格 该风格的描述采用了数据流和行为结构相结合的方式 逻辑综合工具接受RTL级描述并把它转化为优化的门级网表 Verilog和VHDL是两种最流行的RTL描述语言 8 2VerilogHDL综合 支持综合的Verilog结构类型 逻辑综合工具并不能处理随意编写的verilog结构描述 通常 周期到周期的任何RTLverilog结构描述都能为逻辑综合工具所接受 一 verilog结构类型 只有周期到周期的任何RTLverilog结构

3、描述都能为逻辑综合工具所接受 例while和forever语句必须由 posedgeclock 或 negedgeclock 终止循环 使其具有强制性的周期到周期的描述 结构指定的延迟将被忽略不支持initial语句 必须用复位机制来代替 要明确指定信号和变量的宽度 否则 综合后的可能会产生大量的门级网表 注意事项 二 操作符 几乎所有的操作符都可以综合 和 与x和z有关的操作符不可综合写表达式时 要用圆括号使逻辑关系明确 最好不要依赖运算的优先级 三 部分verilog结构的综合 赋值语句assign 赋值语句综合为组合逻辑电路 assignout a 综合为以下门级电路 assign c

4、out sum a b c in assignout s d1 d0 if then语句 modulecompif out d0 d1 s inputd0 d1 s outputout regout always sord0ord1 if s out d1 elseout d0 endmodule 单条的if then语句综合为一个二选1数据选择器 modulecompif a b c d e inputa b c d outpute rege always aorborcord if aendmodule 定义了所有可能的选项的if then嵌套语句 综合结果是受条件控制的纯组合逻辑电路 m

5、oduleincrement phy ones z inputphy input 1 0 ones output 1 0 z reg 1 0 z always phyorones if phy z ones 1 endmodule 不给出所有if分支值 则综合出的结果会带有锁存器 变为时序逻辑电路 elsez ones case语句 case语句综合为数据选择器 一般用于设计庞大的数据选择器 moduleincrement s d0 d1 d2 d3 d4 d5 d6 d7 z input 2 0 s inputd0 d1 d2 d3 d4 d5 d6 d7 outputz regz alwa

6、ys case s 3 b000 z d0 3 b001 z d1 3 b010 z d2 3 b011 z d3 3 b100 z d4 3 b101 z d5 3 b110 z d6 3 b111 z d7 endcaseendmodule moduleincrement s d0 d1 d2 d3 d4 d5 d6 d7 z input 2 0 s inputd0 d1 d2 d3 d4 d5 d6 d7 outputz regz always case s 3 b000 z d0 3 b001 z d1 3 b010 z d2 3 b011 z d3 3 b100 z d4 3 b10

7、1 z d5 endcaseendmodule 与if语句类似 如果没有给出所有分支的值 则综合后会出现锁存器 casez和casex与case类似 只是条件的判断不同 for语句 moduleincrement sum c out a b c in input 7 0 a b output 7 0 sum inputc in outputc out reg 7 0 sum regc out regc integeri always aorborc in beginc c in for i 0 i 7 i i 1 c sum i a i b i c c out c endendmodule f

8、or循环语句综合产生级联的链式组合逻辑电路 always语句 always语句可用于生成时序和组合逻辑 对于时序逻辑来说 always语句必须由时钟信号clk的变化所控制 moduleincrement q d clk inputd clk outputq regq always posedgeclk q d endmodule moduleincrement q d clk rst inputd clk rst outputq regq always posedgerstornegedgeclk if rst q d elseq 0 endmodule 带异步复位端的D触发器 阻塞或非阻塞

9、使用的赋值类型依赖于所描述的逻辑类型 在时序块RTL代码中使用非阻塞赋值非阻塞赋值保存值直到时间片段的结束 从而避免仿真时的竞争情况或结果的不确定性在组合的RTL代码中使用阻塞赋值阻塞赋值立即执行 阻塞 非阻塞对比 非阻塞赋值语句并行执行 因此临时变量不可避免地在一个周期中被赋值 在下一个周期中被采样 modulebloc clk a b inputclk a outputb regy regb always posedgeclk beginy a b y endendmodule modulenonbloc clk a b inputclk a outputb regy regb alway

10、s posedgeclk beginy a b y endendmodule 函数和任务 moduleorand out a b c d e inputa b c d e outputout wireout assignout forand a b c d e functionforand inputa b c d e if e 1 forand a b endfunctionendmodule 函数没有时序控制 因此综合结果为组合逻辑 函数可以在过程块内或持续赋值语句中调用 下例中的or and块由持续赋值语句调用函数实现 任务 moduleorandtask out a b c d e i

11、nputa b c d e outputout regout always aorborcordore orand out a b c d e taskorand outputout inputa b c d e if e 1 out a b endtaskendmodule 任务一般只在测试基准使用 因为 没有时序控制的任务如同函数带有时序控制的任务不可综合下面是用任务描述的or and块 复位 复位是可综合编码风格的重要环节 状态机中一般都有复位 modulesync q ck r d inputck d r outputq regq always negedgeck if r q 0 e

12、lseq d endmodule moduleasync q ck r d inputck d r outputq regq always negedgeckorposedger if r q 0 elseq d endmodule 同步复位 同步块的异步复位 同步复位描述 在同步块内 当复位信号有效时 进行复位操作 当复位信号无效时 执行该块的同步行为 如果将复位信号作为条件语句的条件 且在第一个分支中进行复位 综合工具可以更容易的识别复位信号 异步复位 在同步块的敏感表中包含复位信号的激活边沿 在块内 复位描述方式与同步方式相同 同步复位 同步块的异步复位 8 3verilog可综合设计

13、设计者使用的verilog设计风格会影响逻辑综合最终产生的门级网表 根据描述风格的不同 逻辑综合可能产生高效率或者低效率的门级网表 因此 设计者必须清楚高效率电路的描述技巧 本节讨论建模方案的技巧以及编写出高效率 可综合的verilog模块方法 verilog描述的风格对最终设计有很大的影响 就逻辑综合而言 重要的是考虑实际的硬件实现问题 在不牺牲高抽象层次优势的情况下 RTL描述应该尽可能地接近预期的结构 在设计抽象层次和控制逻辑综合输出结构之间存在一个折中 下面列出的是班RTL设计中设计者应该考虑的一些设计原则 一 verilog编码风格 当为时序逻辑建模 使用 非阻塞赋值 当用alway

14、s块为组合逻辑建模 使用 阻塞赋值 当在同一个always块里面既为组合逻辑又为时序逻辑建模 使用 非阻塞赋值 不要在同一个always块里面混合使用 阻塞赋值 和 非阻塞赋值 不要在两个或两个以上always块里面对同一个变量进行赋值 在VERILOG语法中 if elseif else语句是有优先级的 一般说来第一个if的优先级最高 最后一个else的优先级最低 而case语句是 平行 的结构 所有的case的条件和执行都没有 优先级 而建立优先级结构会消耗大量的组合逻辑 所以如果能够使用case语句的地方 尽量使用case替换if else结构 慎用锁存器 latch 同步时序设计要尽量

15、避免使用锁存器 综合出非目的性latch的主要原因在于不完全的条件判断句 另外一种情况是设计中有组合逻辑的反馈环路 combinatorialfeedbackloops 复位使初始状态可预测 信号的初始化要用复位来实现 不要使用默认值 不要用时钟或复位信号作数据或使能信号 也不能用数据信号作为时钟或复位信号 否则HDL综合时会出现时序验证问题 不要混合使用时钟的上升沿和下降沿 不要使用门时钟 don tusegatedclock 时钟信号必须连接到全局时钟管脚上 不要使用内部三态信号 否则增加功耗 只使用同步设计 不要使用延时单元 对变量要先读后写 如果先写后读 就会产生长的组合逻辑和锁存器

16、或寄存器 这是因为变量值是立即获取的 在组合逻辑进程中 其敏感向量标中要包含所有要读取得信号 这是为了防止出现不必要的锁存器 遵循以上原则 再结合可综合verilog语法 一般编写出的RTL代码都是可综合的 要注意不同的综合软件可能对代码的要求有所不同 二 设计划分 1 复杂数字系统的RTL设计思想 数字系统 RTL级 设计 DataPath ControlLogic 运算单元 组合电路 存储单元 寄存器 有限状态机 组合部分和时序部分 微码ROM描述 2 基本模块的设计划分 使用位划分方式为逻辑综合工具提供更小的模块进行优化 这种方式称为水平划分 它降低了问题的复杂度 并且为每个模块产生了更为优他的结果 水平划分 垂直划分意味着把模块按功能划分成更小的子模块 这种方式不同于水平划分 在水平划分中 所有模块完成同一个功能 在垂直划分中 每一个模块完成不同的功能 垂直划分 8 4FSM设计 有限状态机是由寄存器组和组合逻辑构成的时序逻辑电路 状态机可用于产生在时钟跳变沿时刻开关的复杂的控制逻辑 是数字逻辑的控制核心 通常用case语句设计实现 注意以下三点 状态翻转时刻 前状态下次态当前

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号