可编程逻辑器件EDA工程设计流程

上传人:ji****72 文档编号:48446348 上传时间:2018-07-15 格式:PPT 页数:38 大小:2.77MB
返回 下载 相关 举报
可编程逻辑器件EDA工程设计流程_第1页
第1页 / 共38页
可编程逻辑器件EDA工程设计流程_第2页
第2页 / 共38页
可编程逻辑器件EDA工程设计流程_第3页
第3页 / 共38页
可编程逻辑器件EDA工程设计流程_第4页
第4页 / 共38页
可编程逻辑器件EDA工程设计流程_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《可编程逻辑器件EDA工程设计流程》由会员分享,可在线阅读,更多相关《可编程逻辑器件EDA工程设计流程(38页珍藏版)》请在金锄头文库上搜索。

1、 可编程逻辑器件EDA工程设计流程绝密 Verilog HDL 入门教程请输入文档编号3 Verilog HDL 建模概述在数字电路设计中,数字电路可简单归纳为两种要素:线和器件。线是器件管脚之间的物理连线;器件也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄存器、锁存器、RAM等)。一个数字系统(硬件)就是多个器件通过一定的连线关系组合在一块的。因此,Verilog HDL的建模实际上就是如何使用HDL语言对数字电路的两种基本要素的特性及相互之间的关系进行描述的过程。下面通过一些实例,以便对Verilog HDL 的设计建模有个大概的印象。3.1 模块模块(module)是Ve

2、rilog 的基本描述单位,用于描述某个设计的功能或结构及与其他模块通信的外部端口。模块在概念上可等同一个器件就如我们调用通用器件(与门、三态门等)或通用宏单元(计数器、ALU、CPU)等,因此,一个模块可在另一个模块中调用。一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,模块设计可采用多种建模方式。3.1.1 简单事例下面先介绍几个简单的Verilog HDL程序。 例1 加法器module addr (a, b, cin, count, sum); /模块定义input 2:0 a; input 2:0 b;input cin;output count

3、;output 2:0 sum;assign count,sum = a +b + cin; endmodule 该例描述一个3位加法器,从例子可看出整个模块是以module 开始,endmodule 结束。例2 比较器module compare (equal,a,b);input1:0 a,b;/ declare the input signal ;output equare ;/ declare the output signal;assign equare = (a = = b) ? 1:0 ; / * if a = b , output 1, otherwise 0;*/endmod

4、ule2004-08-16 版权所有,侵权必究第9页,共41页绝密 Verilog HDL 入门教程请输入文档编号该例描述一个比较器, 从上可看到,/* . */ 和 / . 表示注释部分。注释只是为了方便设计者 读懂代码,对编译并不起作用。例3 三态驱动器module mytri (din, d_en, d_out);input din;input d_en;output d_out;/ - Enter your statements here - /assign d_out = d_en ? din :bz;endmodulemodule trist (din, d_en, d_out);

5、input din;input d_en;output d_out;/ - statements here - /mytri u_mytri(din,d_en,d_out);endmodule该例描述了一个三态驱动器。其中三态驱动门在模块 mytri 中描述,而在模块trist 中调用了模块mytri 。模块mytri 对trist 而言相当于一个已存在的器件,在trist 模块中对该器件进行实例化,实例化名 u_mytri 。3.1.2 模块的结构通过上面的实例可看出,一个设计是由一个个模块(module)构成的。一个模块的设计如下:1、模块内容是嵌在module 和endmodule两个语

6、句之间。每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最后通过由顶层模块调用子模块来实现整体功能,这就是Top-Down的设计思想,如 3.3.1的例3。2、模块包括接口描述部分和逻辑功能描述部分。这可以把模块与器件相类比。模块的端口定义部分:如上例: module addr (a, b, cin, count, sum); 其中module 是模块的保留字,addr 是模块的名字,相当于器件名。()内是该模块的端口声明,定义了该模块的管脚名,是该模块与其他模块通讯的外部接口,相当于器件的pin 。模块的内容,包括I/O说明,

7、内部信号、调用模块等的声明语句和功能定义语句。I/O说明语句如: input 2:0 a; input 2:0 b;input cin; output count; 其 中 的 input 、output、inout 是保留字,定义了管脚信号的流向,n:0表示该信号的位宽(总线或单根信号线)。2004-08-16 版权所有,侵权必究第10页,共41页绝密 Verilog HDL 入门教程逻辑功能描述部分如: assignd_out = d_en ? din :bz;请输入文档编号mytri u_mytri(din,d_en,d_out); 功能描述用来产生各种逻辑(主要是组合逻辑和时序逻辑,可

8、用多种方法进行描述,具体的用法下面章节有介绍),还可用来实例化一个器件,该器件可以是厂家的器件库也可以是我们自己用HDL设计的模块(相当于在原理图输入时调用一个库元件)。在逻辑功能描述中,主要用到assign 和always 两个语句。3、对每个模块都要进行端口定义,并说明输入、输出口,然后对模块的功能进行逻辑描述,当然,对测试模块,可以没有输入输出口。4、Verilog HDL 的书写格式自由,一行可以写几个语句,也可以一个语句分几行写。具体由代码书写规范约束。5、除endmodule 语句外,每个语句后面需有分号表示该语句结束。3.1.3 模块语法1. 一个模块的基本语法如下:一个模块的基

9、本语法如下:module module_name (port1, port2, .) ;/ D e c l a r a t i o n s :input, output, inout,reg, wire, parameter,function, task, . . ./S t a t e m e n t s :Initial statementAlways statementModule instantiationGate instantiationContinuous assignmentendmodule模块的结构需按上面的顺序进行,声明区用来对信号方向、信号数据类型、函数、任务、参数等进

10、行描述。语句区用来对功能进行描述如:器件调用 (Module instantiation )等。2. 书写语法建议一个模块用一个文件;模块名与文件名要同名;一行一句语句。信号方向按输入、输出、双向顺序描述。设计模块时可尽量考虑采用参数化,提高设计的重用。以上是初学者的建议,具体的或深入的方面可看相关的文档。下面的有关语法建议类似。3.2 时延2004-08-16 版权所有,侵权必究第11页,共41页绝密 Verilog HDL 入门教程请输入文档编号信号在电路中传输会有传播延时等,如线延时、器件延时。时延就是对延时特性的HDL描 述。举例如下:assign # 2 B = A;表示 B信号在2

11、个时间单位后得到A信号的值。如下图:A:B:2图3在Verilog HDL中,所有时延都必须根据时间单位进行定义,定义方式为在文件头添加如下语句:timescale 1ns /100ps其中timescale 是Verilog HDL 提供的预编译处理命令, 1ns 表示时间单位是1ns ,100ps表示时间精度是100ps。根据该命令,编译工具才可以认知 #2 为2ns。在Verilog HDL 的IEEE标准中没有规定时间单位的缺省值,由各模拟工具确定。因此,在写代码时必须确定。3.3 三种建模方式在HDL的建模中,主要有结构化描述方式、数据流描述方式和行为描述方式,下面分别举例说明三者之

12、间的区别。3.3.1 结构化描述方式结构化的建模方式就是通过对电路结构的描述来建模,即通过对器件的调用(HDL概念称为例化),并使用线网来连接各器件的描述方式。这里的器件包括Verilog HDL的内置门如与门and,异或门xor等,也可以是用户的一个设计。结构化的描述方式反映了一个设计的层次结构。例1:一位全加器图4 一位全加器的结构图代码: module FA_struct (A, B, Cin, Sum, Count);input A;input B;input Cin;2004-08-16 版权所有,侵权必究第12页,共41页绝密 Verilog HDL 入门教程请输入文档编号outp

13、ut Sum; output Count;wire S1, T1, T2, T3;/ - statements - /xor x1 (S1, A, B);xor x2 (Sum, S1, Cin);and A1 (T3, A, B );and A2 (T2, B, Cin);and A3 (T1, A, Cin);or O1 (Cout, T1, T2, T3 );endmodule该实例显示了一个全加器由两个异或门、三个与门、一个或门构成。S1、T1、T2、T3则是门与门之间的连线。代码显示了用纯结构的建模方式,其中xor 、and、or 是Verilog HDL 内置的门器件。以 xor

14、x1 (S1, A, B) 该例化语句为例:xor 表明调用一个内置的异或门,器件名称xor ,代码实例化名x1(类似原理图输入方式)。括号内的S1,A,B 表明该器件管脚的实际连接线(信号)的名称 ,其中 A、B是输入,S1是输出。其他同。例2:两位的全加器两位的全加器可通过调用两个一位的全加器来实现。该设计的设计层次示意图和结构图如下:Four_bit_FA FAFCinA B CinSum FA_structCountFSumFA_structFA_structASum FBB CinFA_structCountFCountFour_bit_FA图5 两位全加器的结构示意图代码:modu

15、le Four_bit_FA (FA, FB, FCin, FSum, FCout ) ;parameter SIZE = 2;input SIZE:1 FA;2004-08-16 版权所有,侵权必究第13页,共41页绝密 Verilog HDL 入门教程input SIZE:1 FB; input FCin;output SIZE:1 FSum;output FCout;wire FTemp;FA_struct FA1(.A (FA1),.B (FB1),.Cin (FCin) ,.Sum (FSum1),.Cout (Ftemp);请输入文档编号FA_struct FA2(.A (FA2)

16、, .B (FB2),.Cin (FTemp) ,.Sum (FSum2),.Cout (FCount );endmodule该实例用结构化建模方式进行一个两位的全加器的设计,顶层模块Four_bit_FA 调用了两个一位的全加器 FA_struct 。在这里,以前的设计模块FA_struct 对顶层而言是一个现成的器件,顶层模块只要进行例化就可以了。注意这里的例化中,端口映射(管脚的连线)采用名字关联,如 .A (FA2) ,其中.A 表示调用器件的管脚A,括号中的信号表示接到该管脚A的电路中的具体信号。wire 保留字表明信号Ftemp 是属线网类型(下面有具体描述)。另外,在设计中,尽量考虑参数化的问题。器件的端口映射必须采用名字关联。3.3.2 数据流描述

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

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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