Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章

上传人:E**** 文档编号:89349127 上传时间:2019-05-23 格式:PPT 页数:249 大小:2.15MB
返回 下载 相关 举报
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章_第1页
第1页 / 共249页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章_第2页
第2页 / 共249页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章_第3页
第3页 / 共249页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章_第4页
第4页 / 共249页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章_第5页
第5页 / 共249页
点击查看更多>>
资源描述

《Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章》由会员分享,可在线阅读,更多相关《Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第6章(249页珍藏版)》请在金锄头文库上搜索。

1、,第6章 Verilog HDL高级程序设计举例,6.1 数字电路系统设计的层次化描述方法 6.2 典型电路设计 6.3 总线控制器设计 本章小结,集成电路设计中大量采用的是结构性的描述方法,归纳起来主要有两种:自下而上(Bottom-Up)的设计方法与自上而下(Top-Down)的设计方法。在实际运用中,可以根据实际设计的情况选择这两种方法相结合的设计方法,即混合设计方法。,6.1 数字电路系统设计的层次化描述方法,Top-Down方法主要是从系统设计的角度进行,系统工程师往往会在项目的规划阶段将数字电路系统进行划分,明确主要单元模块的功能、时序和接口参数等系统方案,这种方法可以有效协调UL

2、SI和VLSI芯片设计中众多开发人员的工作。Bottom-Up方法主要是在实际系统执行过程中,底层设计人员提出底层功能模块的优化方案,系统设计人员分析这些优化对系统的影响,通过调整系统结构,提高芯片整体性能。,1. Bottom-Up设计方法 Bottom-Up设计方法是一种传统的设计方法,它要求电路设计者将系统进行模块划分,从底层模块设计开始,运用各底层模块搭建一个完整的系统。在这种设计方法中,首先根据系统设计的要求,定义并建立所需要的叶子模块,通过模块连接方式建成较大的模块,然后把这些比较大的模块组合成具有一定功能的模块,最后将这些功能模块组合,直到完成整个系统。这就如同搭积木,用小的模块

3、不断组合,最后完成系统的设计。其设计方法示意图如图6.1-1所示。,图6.1-1 Bottom-Up设计方法示意图,一个典型的Bottom-Up设计例子是在第4章中提到的串行加法器的设计。一个4位串行加法器由4个全加器构成,如图6.1-2所示。全加器是串行加法器的子模块,而全加器是由基本的逻辑门构成的,如图6.1-3所示,这些基本的逻辑门就是所说的叶子模块。这个设计中运用叶子模块(基本逻辑门)搭建成子模块(全加器),再用子模块搭建成所需要的电路(串行加法器)。,图6.1-2 4位串行加法器,图6.1-3 全加器逻辑电路,显然,Bottom-Up设计方法没有明显的规律可循,主要依靠设计者的实践经

4、验和熟练的设计技巧,用逐步试探的方法最后设计出一个完整的数字系统。系统的各项性能指标只有在系统构成后才能分析测试。 Bottom-Up设计方法常用于原理图的设计中,相比于其它方法,该方法对于实现各个子模块电路所需的时间较短。但是该方法仍存在着许多不足之处,例如采用该设计方法容易对系统的整体功能把握不足,整个系统的设计周期比较长、效率低、设计质量难以保证等。因此,这种方法只适用于小规模电路的设计。,2. Top-Down设计方法 随着电子技术的快速发展,传统的设计方法已经不能满足日益增长的系统要求,Top-Down设计方法成为数字系统设计的主流设计方法。在这种设计方法中,首先从系统级入手,把系统

5、划分为若干个子功能单元,并编制出相应的行为或结构模型;再将这些子功能单元进一步进行拆分,就这样不断地拆分直到整个系统中各个模块的逻辑关系合理,便于逻辑电路级的设计和实现,这种最底层的功能模块被称为叶子模块。其设计方法示意图如图6.1-4所示。,图6.1-4 Top-Down设计方法示意图,例如,使用Top-Down设计方法对一个典型CPU进行设计,如图6.1-5所示。根据CPU的功能将CPU分为控制单元、逻辑运算单元、存储单元。控制单元主要控制整个CPU的工作,用于调控整个CPU按照指令执行相应的规定动作,控制单元又由指令控制器、时序控制器、总线控制器和中断控制器构成。逻辑运算单元可以分为算术

6、逻辑运算单元ALU和浮点运算单元FPU。存储单元可以分为通用寄存器和专用寄存器。这样通过功能的不断细化,将大模块划分成了更小的模块,当划分到指令控制器这一级时,就可以通过各种逻辑电路来实现了。,图6.1-5 Top-Down设计CPU流程,Top-Down设计方法的优点是显而易见的,在整个设计过程中主要的仿真和调试过程是在高层次完成的,所以能够在设计的早期发现结构设计上的错误,及时进行调整,最大限度地不将错误带入到后续的设计环节中。同时方便了从系统进行划分和管理整个项目,使得大规模的复杂的数字电路实现成为可能,避免了不必要的重复设计,提高了设计效率。然而这种设计方法仍然存在着不足,在设计的开始

7、并不能准确地确定最终功能单元的设计,需要根据具体的设计情况,不断进行系统设计的修正。,现在的数字电路设计越来越复杂,单一的设计方法往往很难满足设计要求,因此通常将这两种设计方法结合起来,即采用混合的设计方法来进行设计。这样可以综合每种方法的优点,在高层系统设计时采用Top-Down设计方法,便于系统的划分;而在底层的设计时采用Top-Down设计方法,这样可以缩短各个模块的设计时间。,例6.1-1 采用模块层次化设计方法,设计4维向量点积乘法器,其中向量a = (a1,a2,a3,a44),b = (b1,b2,b3,b4)。点积乘法的规则为 (6.1-1),向量点积乘法是将向量的对应位置的值

8、相乘,然后相加。其对应电路结构如图6.1-6所示。,图6.1-6 向量点积乘法器电路结构,可以看出,4位点积向量乘法器由4个乘法器和3个加法器构成,而加法器和乘法器又由半加器和全加器构成,其中半加器和全加器又由基本的逻辑门组成,其构成关系如图6.1-7所示。,图6.1-7 向量点积乘法器层次化功能模块,具体的Verilog HDL设计包括顶层模块vector、加法器模块add和乘法器模块mul_addtree。Verilog HDL程序代码如下: module vector(a1,a2,a3,a4,b1,b2,b3,b4,out); input 3:0 a1,a2,a3,a4,b1,b2,b3

9、,b4; output 9:0 out; wire 7:0 out1,out2,out3,out4; wire 8:0 out5, out6; wire 9:0 out;,mul_addtree U1(.x(a1),.y(b1),.out(out1); mul_addtree U2(.x(a2),.y(b2),.out(out2); mul_addtree U3(.x(a3),.y(b3),.out(out3); mul_addtree U4(.x(a4),.y(b4),.out(out4); add #(8) U5(.a(out1),.b(out2),.out(out5); add #(8)

10、 U6(.a(out3),.b(out4),.out(out6); add #(9) U7(.a(out5),.b(out6),.out(out); endmodule /加法器 module add(a,b,out);,parameter size=8; input size-1:0 a,b; output size:0 out; assign out=a+b; endmodule /乘法器 module mul_addtree(mul_a,mul_b,mul_out); input 3:0 mul_a,mul_b; / IO端口声明 output 7:0 mul_out;,wire 3:0

11、 mul_out; /连线类型声明 wire 3:0 stored0,stored1,stored2,stored3; wire 3:0 add01, add23; assign stored3=mul_b3?1b0,mul_a,3b0:8b0; /逻辑设计 assign stored2=mul_b2?2b0,mul_a,2b0:8b0; assign stored1=mul_b1?3b0,mul_a,1b0:8b0;,assign stored0=mul_b0?4b0,mul_a:8b0; assign add01=stored1+stored0; assign add23=stored3+

12、stored2; assign mul_out=add01+add23; endmodule 可以看到,在这个电路设计中,vector、add和mul_addtree三个模块共同构成了向量点积乘法器。顶层模块vector采用结构描述方式分别使用了4个mul_addtree和3个add模块,分两层实现了电路功能。,6.2.1 加法器树乘法器 加法器树乘法器的设计思想是“移位后加”,并且加法运算采用加法器树的形式。乘法运算的过程是,被乘数与乘数的每一位相乘并且乘以相应的权值,最后将所得的结果相加,便得到了最终的乘法结果。,6.2 典型电路设计,加法器树乘法器在计算被乘数与乘数及与其权值相乘时采用“

13、判断移位”的形式,即通过判断乘数位是否为1来决定结果为0或者进行移位。当乘数位为1时被乘数根据该位的权值将被乘数移位,权值为0不移位,权值为2左移1位,权值为4左移2位,权值为8左移3位;当乘数位为0时直接输出0。而加法器树乘法器的加法运算是通过加法器树来实现的,如图6.2-1所示。加法器树所需要的加法器的数目是操作数的位数减1。,图6.2-1 4位的加法器树乘法器结构,例6.2-1 图6.2-1是一个4位的加法器树乘法器结构,用Verilog HDL设计一个4位加法器树乘法器。 module mul_addtree(mul_a,mul_b,mul_out); input 3:0 mul_a,

14、mul_b; /IO端口声明 output 7:0 mul_out; wire 7:0 mul_out; /连线类型声明 wire 7:0 stored0,stored1,stored2,stored3; wire 7:0 add01, add23;,assign stored3=mul_b3?1b0,mul_a,3b0:8b0; /逻辑设计 assign stored2=mul_b2?2b0,mul_a,2b0:8b0; assign stored1=mul_b1?3b0,mul_a,1b0:8b0; assign stored0=mul_b0?4b0,mul_a:8b0; assign a

15、dd01=stored1+stored0; assign add23=stored3+stored2; assign mul_out=add01+add23; endmodule,/*测试代码* module mult_addtree_tb; reg 3:0mult_a; reg 3:0mult_b; wire 7:0mult_out; /模块例化 mul_addtree U1(.mul_a(mult_a),.mul_b(mult_b),.mul_out(mult_out);,initial /测试信号 begin mult_a=0; mult_b=0; repeat(9) begin #20 mult_a=mult_a+1; mult_b=mult_b+1; end end endmodule,图6.2-2 加法器树乘法器测试结果,图6.2-3 两级流水线4位加法器树乘法器结构,加法器树乘法器可以

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

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

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