EDA设计技术 教学课件 ppt 作者 杨光永 凌永发_ 第4章 层次结构

上传人:E**** 文档编号:89348181 上传时间:2019-05-23 格式:PPT 页数:70 大小:1.57MB
返回 下载 相关 举报
EDA设计技术 教学课件 ppt 作者  杨光永 凌永发_ 第4章 层次结构_第1页
第1页 / 共70页
EDA设计技术 教学课件 ppt 作者  杨光永 凌永发_ 第4章 层次结构_第2页
第2页 / 共70页
EDA设计技术 教学课件 ppt 作者  杨光永 凌永发_ 第4章 层次结构_第3页
第3页 / 共70页
EDA设计技术 教学课件 ppt 作者  杨光永 凌永发_ 第4章 层次结构_第4页
第4页 / 共70页
EDA设计技术 教学课件 ppt 作者  杨光永 凌永发_ 第4章 层次结构_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《EDA设计技术 教学课件 ppt 作者 杨光永 凌永发_ 第4章 层次结构》由会员分享,可在线阅读,更多相关《EDA设计技术 教学课件 ppt 作者 杨光永 凌永发_ 第4章 层次结构(70页珍藏版)》请在金锄头文库上搜索。

1、第4章 层次结构,EDA设计技术,4.1系统及结构要素,系统是一个或多个模块的集合,明确而完备地按照一定的层次结构,利用硬件描述语言描述模块的相互连接关系,在激励信号的作用下获得输出响应。 结构要素是构成系统的基本单位,包括模块、端口、导线。模块与模块之间通过端口和导线连接,而端口与端口之间通过导线连接。 系统可以根据结构需要,由一个模块构成单模块系统,或由多个模块组成多模块系统。,单模块系统与多模块系统结构,四级抽象,按不同抽象级别将系统划分为行为级或算法级、数据流级、门级和开关级共四级抽象。 对各抽象级别的实施过程又形成两种基本设计方法:自顶向下的设计方法和自底向上的设计方法。,4.2设计

2、方法,自顶向下的设计方法:首先确定系统的顶层模块,再将顶层模块按需要分解为子模块,从算法级开始依次向下逐层分解,直到不能再细分的开关级原语。每一层的子模块由上一层模块进行装配、验证,直至系统级顶层。 自底向上的设计方法则采用搭积木的方式,先建立最底层模块,将子模块组合成上一层诸模块,直到顶层模块。,自顶向下的设计方法,自底向上的设计方法,例:8位全加法器设计分析,8位全加器实现输入被加数a、加数b、进位位cin,输出求和结果sum和进位位cout,顶层模块adder_8实现求和运算。,算法解析过程,(1)先求a、b低四位的和sum3:0、中间进位位cin_4: sum3:0 = a3:0b3:

3、0cin_4; cout_4 = a3:0,算法级模块分析,4位全加器的模型结构分解,数据流级解析: (1)先求a0、b0的和sum0、中间进位位cin1: sum0 = a0b0cin; cin1 = a0,4位全加器的模型结构分解,(3)之后求a2、b2与中间进位位cin2的和sum2、进位输出cin3: sum2 = a2b2cin2; cin3 = a2,4位全加法器的数据流结构,门级解析过程,(1)先求被加数a、加数b的半加结果w1及半进位结果w2; w1 = ab;w2 = a (3)最后求半进位结果w2、半进位结果w3的或运算,得全加器的进位输出。,1位全加法器的门级结构,门级模

4、块分析结果,8位全加器的层次模块分析结果,系统的Verilog HDL描述,(1)顶层模块 module Adder_8(sum,c_out,a,b,c_in); output 7:0 sum; output c_out; input 7:0 a,b; input c_in; wire c_in1; Adder_4 M1(sum3:0,c_in1,a3:0,b3:0,c_in); Adder_4 M2(sum7:4,c_out,a7:4,b7:4,c_in1); endmodule,算法级模块,module Adder_4(sum,c_out,a,b,c_in); output 3:0 sum

5、; output c_out; input 3:0 a,b; input c_in; wire c_in1, c_in2, c_in3; Adder_full M1(sum0,c_in1,a0,b0,c_in); Adder_full M2(sum1,c_in2,a1,b1,c_in1); Adder_full M3(sum2,c_in3,a2,b2,c_in2); Adder_full M4(sum3,c_out,a3,b3,c_in3); endmodule,数据流级模块,module Adder_full(sum,c_out,a,b,c_in); output sum; output c

6、_out; input a,b; input c_in; wire w1,w2,w3,w4,w5; Adder_half M1(w1,w2,a,b); Adder_half M2(sum,w3,c_in, w1); and M3(w4,c_in,a), M4(w5,c_in,b); or M5(c_out,w2,w4,w5); endmodule,门级模块,module Adder_half(sum,c_out,a,b); output sum,c_out; input a,b; xor M1(sum,a,b); and M2(c_out,a,b); endmodule,4.3模块及模块抽象,

7、模块是构成系统层次结构的基本单位,是最小设计单元或低级设计单位的集合。 一般来说,多个模块组合在一起,通过输入端口和输出端口与上一层模块连接,实现上一层模块所需的、独立而完备的功能,而上一层的设计工作不必关心该模块的内部结构。,4.3.1模块,模块的申明始于关键词module,终于关键词endmodule,紧随module之后,是模块的确认符和端口申明,其基本形式如下: module(); endmodule,例:申明算法级的8位全加器模块Adder_8,module Adder_8(sum,c_out,a,b,c_in); output 7:0 sum; output c_out; inpu

8、t 7:0 a,b; input c_in; endmodule,不允许使用嵌套结构申明模块,module (); module (); endmodule endmodule,4.3.2 模块抽象,可以将每个模块的内部结构抽象为行为或算法级、数据流级、门级和开关级四个级别之一。 模块所在的抽象级别与模块的行为无关,对于外部环境来说,模块内部处于隐藏状态,而模块在不同外部环境下的行为是一致的。 目的:模块的任何变化对所处使用环境都没有影响,行为或算法级是Verilog HDL规定的最高抽象级别,处于该抽象级别的模块仅与设计所需的算法有关,与硬件实现条件无关。,行为级或算法级抽象,数据流级按规定

9、的数据流设计模块,设计者需要掌握设计工作中对硬件寄存器和数据处理的先验知识。,数据流级抽象,按逻辑门的互连关系设计模块,门级抽象的模块设计类似于按照逻辑图描述模块。,门级抽象,开关级抽象是Verilog HDL的最低级抽象,该级按照开关、存储节点及其互连关系设计模块,要求设计者具有开关级相关的知识。,开关级抽象,寄存器传输级,此外,还有EDA设计领域经常使用的一种抽象级别:寄存器传输级(Register Transfer Level,简称RTL级),即可以被逻辑综合工具综合的、以行为描述和数据流描述设计模块的级别。,4.4 例化,模块、门级原语、开关级原语、用户定义原语是一种可创建实际对象的模

10、板,利用模板创建唯一对象的过程称为例化。 模板被例化之后,模板的属性和内部结构被对象继承,而且每个对象都有自己的名称、变量、参数、输入输出端口等。,4.4.1 模块例化,例:顶层模块分解为两个4位全加器Adder_4,采用直接按顺序连接的方式将该模块分别例化为M1和M2: Adder_4 M1(sum3:0,c_in1,a3:0,b3:0,c_in); Adder_4 M2(sum7:4,c_out,a7:4,b7:4,c_in1); 结果是Adder_4的所有属性被M1和M2继承,而不改变模块的任何结构,例化是跨接在不同抽象级别之间的,或跨层的,并由此组建例4-1的顶层模块:,顶层模块,mo

11、dule Adder_8(sum,c_out,a,b,c_in); output 7:0 sum; output c_out; input 7:0 a,b; input c_in; wire c_in1; Adder_4 M1(sum3:0,c_in1,a3:0,b3:0,c_in); Adder_4 M2(sum7:4,c_out,a7:4,b7:4,c_in1); endmodule,模块端口的连接关系,在同一模块被例化的同名端口,按顺序连接、在同一模块被例化的同名端口,表示该对口是直接互联的。 M1模块的进位输出c_in1,M2端口的进位输入c_in1,隐含表示4位全加器的进位位级联;

12、此外,M1的sum3:0和M2的sum7:6也隐含了全加器的求和输出。,算法级的4位全加器,module Adder_4(sum,c_out,a,b,c_in); output 3:0 sum; output c_out; input 3:0 a,b; input c_in; wire c_in1, c_in2, c_in3; Adder_full M1(sum0,c_in1,a0,b0,c_in); Adder_full M2(sum1,c_in2,a1,b1,c_in1); Adder_full M3(sum2,c_in3,a2,b2,c_in2); Adder_full M4(sum3,

13、c_out,a3,b3,c_in3); endmodule,不同抽象级别的模块命名,由于模块在环境中隐藏了内部结构,因此Adder_4模块中例化的例化模块名M1、M2与Adder_full例化模块名M1、M2属于不同的对象 前者的模板是Adder_4,而后者的模板是Adder_full,分属于不同抽象级别的模块命名空间,简化表达,同类型的例化可以简化表达,例如对于上述4位加法器模块: module Adder_4(sum,c_out,a,b,c_in); Adder_full M1(sum0,c_in1,a0,b0,c_in); M2(sum1,c_in2,a1,b1,c_in1); M3(s

14、um2,c_in3,a2,b2,c_in2); M4(sum3,c_out,a3,b3,c_in3); endmodule,4.4.2原语例化,原语例化包括对门级原语、开关级原语和用户定义原语的例化 以Verilog HDL规定的门级原语和开关级原语为例化起始的关键字 用户定义原语以原语名开始例化 分别申明原语例化名、输入输出端口、强度及延时参数等 目的是以门级互联的描述方式构建上一级更复杂的模块,例化的基本形式,primitive drive_strength delay instance_namerange(port_connection_list); primitive为原语类型,ins

15、tance_name为例化名。 例化原语必须指定原语类型,并分配唯一的例化名。,例化的基本形式,tranif0 (5,3) T1(Y0,X0,X1); /例化tranif0原语,例化名为T1 tranif0 (5,3) T2(Y0,X0,X1); /例化tranif0原语,例化名为T2 and A1(Y0,X0,X1); /例化and原语,例化名为A1 or Z(Y0,X0,X1); /例化or原语,例化名为Z buf B1 (out1, out2, in); /例化buf原语,例化名为B1 bufif1 BF1 (outw, inw, controlw); /例化bufif1原语,例化名为BF1 pmos P1 (out, data, control); /例化pmos原语,例化名为P1 tranif1 T1 (inout1,inout2,control); /例化tranif1原语,例化名为T1,range,range是重复例化时采用归纳表达例化范围的常数表达式lhi:rhi,lhi为左侧索引号,rhi为右侧索引号,可例化 个同类型原语。范围指定是可选项,不限制lhi和rhi的排列顺序。 例如下述两条语句

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

当前位置:首页 > 高等教育 > 大学课件

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