- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子系统设计与仿真-第6节-Verilog_HDL精选
1
电子系统设计与仿真-第6节-
Verilog HDL
电信学院:雷 鸣
2
引言
一、什么是Verilog HDL
二、Verilog HDL的发展历史
三、不同层次的Verilog HDL抽象
四、Verilog HDL的特点
内容概要
3
引言
一、什么是Verilog HDL
Verilog HDL是一种用于数字逻辑电路设计的硬件描述语言(Hradware Description Language ),可以用来进行数字电路的仿真验证、时序分析、逻辑综合。
用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。
Verilog HDL 既是一种行为描述语言也是一种结构描述语言。
既可以用电路的功能描述,也可以用元器件及其之间的连接来建立Verilog HDL模型。
4
引言
二、Verilog HDL的发展历史
1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首创;
1989年,Cadence公司收购了GDA公司;
1990年, Cadence公司公开发表Verilog HDL;
1995年,IEEE制定并公开发表Verilog HDL1364-1995标准;
1999年,模拟和数字电路都适用的Verilog标准公开发表
5
引言
三、不同层次的Verilog HDL抽象
Verilog HDL模型可以是实际电路的不同级别的抽象。抽象级别可分为五级:
系统级(system level): 用高级语言结构实现的设计模块外部性能的模型;
算法级(algorithmic level): 用高级语言结构实现的设计算法模型;
RTL级(register transfer level): 描述数据在寄存器之间流动和如何处理这些数据的模型;
门级(gate level): 描述逻辑门(如与门、非门、或门、与非门、三态门等)以及逻辑门之间连接的模型;
开关级(switch level): 描述器件中三极管和储存节点及其之间连接的模型。
6
引言
四、Verilog HDL的特点
语法结构上的主要特点:
形式化地表示电路的行为和结构;
借用C语言的结构和语句;
可在多个层次上对所设计的系统加以描述,语言对设计规模不加任何限制;
具有混合建模能力:一个设计中的各子模块可用不同级别的抽象模型来描述;
基本逻辑门、开关级结构模型均内置于语言中,可直接调用;
易创建用户定义原语(UDP,User Designed Primitive) 。
易学易用,功能强
与C语言非常相似!
7
Verilog HDL基本结构
一、简单的Verilog HDL例子
二、Verilog HDL模块的结构
三、逻辑功能定义
四、关键字
五、标识符
内容概要
8
Verilog HDL基本结构
一、简单的Verilog HDL例子
[例1] 8位全加器
module adder8 ( cout,sum,a,b,cin );
output cout; // 输出端口声明
output [7:0] sum;
input [7:0] a,b; // 输入端口声明
input cin;
assign {cout,sum}=a+b+cin;
endmodule
assign语句:无论右边表达式操作数何时发生变化,左边表达式都会重新计算,并且在指定的延迟后给左边表达式赋值。
端口定义
功能描述
模块名(文件名)
整个Verilog HDL程序嵌套在module和endmodule声明语句中。
// …… 表示注释部分,一般只占据一行。对编译不起作用!
单行注释符
9
Verilog HDL基本结构
[例2] 8位计数器
module counter8 ( out,cout,data,load, cin,clk );
output [7:0] out;
output cout;
input [7:0] data;
input load, cin,clk ;
reg[7:0] out;
always @(posedge clk)
begin
if(load)
out = data; // 同步预置数据
else
out = out + 1 + cin; //
原创力文档


文档评论(0)