浙大本科VerilogHDL(教学)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•连续赋值语句完成如下的组合功能:等式右边的所有变量受持续 监控,每当这些变量中有任何一个发生变化,整个表达式被重新赋 值并送给等式左端
例 为数据选择器的数据流型描述。
module mux2x1_df (A, B, select, OUT); input A, B, select; output OUT; assign OUT = select ? B : A;
and G3(y3,B,select); or G4(OUT,y2,y3);
实例名输称出输入或门实例
endmodule
G2
A
& y2 G4
1 select
y1
≥1
G1
OUT
&
B
y3
G3
第24页
3、例2 :主从D触发器的结构型描述
module MS_ DFF (D , CLK , Q , not_Q) ;
endmodule
条件运算符
数据流型描 述
第26页
(三) 行为级描述
是通过描述行为特性来实现,它的关键词是always, 其含义是一 旦敏感变量发生变化,就重新一次进行赋值,有无限循环之意。 这种描述方法常用来实现时序电路,也可用来描述组合功能。
例 为数据选择器的行为型描述。
module mux2x1_bh(A, B, select, OUT); input A, B, select; output OUT; reg OUT; //行为型描述, select、A 、 B为敏感变量 always @ (select or A or B) if (select = = 0) OUT = A; else OUT = B;
input D , CLK;
output Q , not_Q ;
not G9 (not_D , D) ,G10 (not_CLK , CLK) ,G11 (not_Y3 , Y3) ;
nand G1 (Y1 , D , CLK ) , G2 (Y2 , not_D, CLK ) ,
G3 (Y3 , Y1 , Y4 ) , G4 (Y4 , Y2 , Y3 ) ,
第 6章 Verilog HDL
•概述
•Verilog HDL的基本结构
•数据类型及常量、变量 •运算符 •语句 •语句的顺序执行与并行执行 •Verilog HDL模型级别
§6-1 概述
一、什么是Verilog HDL?
Verilog HDL是一种应用广泛的硬件描述性语言,是硬 件设计人员和电子设计自动化(EDA)工具之间的界面。
bufif1
EN
bufif0
EN
notif1
EN
notif0
EN
(2) 调用门原语的句法: 语法:门类型关键字 <例化的门名称>(端口列表)
其中端口列表为: •多输入门:(输出,输入1,输入2,……)
•多输出门:(输出1,输出2,……输入)
•三态门: (输出,输入,使能输入) 可以只有一 个输出
(3)数据选择器的结构型描述程序清单
module mux2_1 (A, B, select, OUT);
input A, B, select;
//输入、输出列表
output OUT; wire y1,y2,y3; not G1(y1,select); and G2(y2,A,y1);
//变量定义 //结构描述
中间变量
非门实例 与门实例
12
行为级和RTL级
module muxtwo (out, a, b, sl);
input a,b,sl;
a
output out;
Reg out;
always @(sl or a or b)
b
if (!sl) out = a;
else out = b;
endmodule
sl
out
13
行为级和RTL级
端口列表 --描述外部特性 6.2.1 简单的Verilog HDL的例子
例6. 1 八位加法器的Verilog HDL源代码
准备实现的
module adder8 (cout, sum, ina,inb, cin);
逻辑功能:
output[7:0] sum; output cout; input[7:0] ina,inb; input cin;
endmodule
第27页
(四) 混合型描述
•用户可以混合使用上述三描述方法。 •但需特别说明:
模块中的门的实例、模块实例语句、assign语句和 always语句是并发执行的,即执行顺序跟书写次序无关。
第28页
例、双向三态端口的描述
module tri_inout(tri_inout,out,data,en,clk); input en,clk; input [7:0] data; output[7:0] out; inout [7:0] tri_inout; wire [7:0] tri_inout; reg [7:0] out; assign tri_inout= en?data:8'bz; always @(posedge clk) out=tri_inout;
这个行为的描述并没有说明如果输入 a 或 b是三态的(高阻时)输出应该是什 么,但有具体结构的真实电路是有一定 的输出的。
RTL模块的数据流动必须基于时钟。 RTL模块在每个时钟的沿时刻,其变量 的值必定是精确的。
RTL模块是可综合的,它是行为模块的 一个子集合。
a out
b sl
14
结构级
module muxtwo (out, a, b, sl);
理解 • 开关级:有关物理形状和布局参数的模块,非
常难理解
11
抽象级别和综合与仿真的关系
行为仿真:行为的验证和验证模块分割的合理性 前仿真 :即 RTL级仿真,检查有关模块逻辑执行步
骤是否正确。 逻辑综合:把RTL级模块转换成门级 。 后仿真:用门级模型做验证,检查门的互连逻辑其功
能是否正确。 布局布线: 在门级模型的基础上加上了布线延时 布局布线后仿真:与真实的电路最接近的验证。
第4页
为什么要用 硬件描述语言来设计?
• 电路的逻辑功能容易理解; • 便于计算机对逻辑进行分析处理; • 把逻辑设计与具体电路的实现分成两个独立
的阶段来操作; • 逻辑设计与实现的工艺无关; • 逻辑设计的资源积累可以重复利用; • 可以由多人共同更好更快地设计非常复杂
的逻辑电路(几十万门以上的逻辑系统)。
其主要目的是用来编写设计文件,建立电子系统行为级 的仿真模型。即利用计算机的巨大能力对用Verilog HDL或 VHDL建模的复杂数字逻辑进行仿真,然后再自动综合以生 成符合要求且在电路结构上可以实现的数字逻辑网表 (Netlist), 根据网表和某种工艺的器件自动生成具体电路, 然后生成该工艺条件下这种具体电路的延时模型。仿真验证 无误后用于制造ASIC芯片或写入EPLD和FPGA器件中。
7
两者建模能力的比较
行为级 的抽象
系统级 算法级 寄存器传输级 逻辑门级 开关电路级
Verilog
VHDL
VITAL
VerilogHDL 与 VHDL 建 模 能 力 的 比 较 8
Verilog HDL 的应用方面
• ASIC 和FPGA设计师可用它来编写可综合的代码。 • 描述系统的结构,做高层次的仿真。 • 验证工程师编写各种层次的测试模块对具体电路设
第3页
4、Verilog HDL语言是并发的,即具有在同一时刻执 行多任务的能力,因为但在实际硬件中许多操作都是 在同一时刻发生的。 一般来讲,计算机编程语言是非 并行的, 5、Verilog HDL语言有时序的概念,因为在硬件电 路中从输入到输出总是有延迟存在的
这两点显示: Verilog HDL语言与C语言的 最大区别
G5 (Y5 , Y3 , not_CLK) ,G6 (Y6 , not_ Y3, not_CLK) ,
G7 (Q, Y5 , not_Q ) , G8 (not_Q , Y6 , Q) ;
endmodule
第25页
(二) 数据流型描述
•是一种描述组合逻辑功能的方法,用assign连续赋值语句来实现
并发语句
endmodule
& out out[0]• out[1]out[7] 第17页
三、语句模块的描述方法 (书中6.12)
结构型描述
行为描述级
数据流描述 混合型描述
系统级
算法级 寄存器级
(一) 结构型描述
通过实例进行描述的方法,将预定义的基本元件实例嵌入到语言
中,监控实例的输入,一旦其中任何一个发生变化便重新运算并输
cout
reg [7:0] out;
块:时序
clk
// 逻辑功能描述
always @(posedge clk)
描述组合
begin
8
8

if (load) out= data;//置数

else
data
out

out = out + cin; //计数或保持
end
assign cout=&out&cin; // 进位
行为级:技术指标和算法的Verilog描述 RTL级:逻辑功能的Verilog描述 门级 :逻辑结构的Verilog描述 开关级:具体的晶体管物理器件的描述
10
Verilog HDL 的抽象级别
• 行为级:有关行为和技术指标模块,容易理解 • RTL级:有关逻辑执行步骤的模块,较难理解 • 门级 :有关逻辑部件互相连接的模块,很难
input a,b,sl;
a
output out;
not u1(ns1,sl);
and #1 u2(sela,a,nsl);
and #1 u3 (selb,b,sl);
b
or #2 u4(out ,sela,selb);
endmodule
sela
nsl
selb
out
sl
15
6.2 Verilog HDL的基本结构 模块名 输入、输出端口描述
OUT
&
B
y3
G3
第21页
(1)Verilog HDL常用门的关键字
•多输入门
and(与门) nand(与非门) nor(或非门) xor(异或门)
•多输出门
not(非门)
buf(缓冲门 )
•三态门 bufif1,bufif0,notif1 ,notif0(三态门)
or (或门) xnor(同门)
出。
1、在Verilog HDL中可使用如下结构部件:
•在Verilog HDL中可使用如下结构部件:
•用户自定义的模块。
•用户自定义元件UDP。 •内置门级元件。
这里讨论门级描述
•内置开关级元件
2、例1 : 数据选择器的结构型描述(这里为门级描述)
G2
A
& y2 G4
select 1 y1
≥1
G1
5
有哪几种硬件描述语言? 各有什么特点?
• Verilog HDL - 较多的第三方工具的支持 - 语法结构比VHDL简单 - 学习起来比VHDL容易 - 仿真工具比较好使 - 测试激励模块容易编写
6
有哪几种硬件描述语言? 各有什么特点?
• VHDL - 比VerilogHDL早几年成为I EEE标准; - 语法/结构比较严格,因而编写出的 模块风格比较清晰; - 比较适合由较多的设计人员合作完成 的特大型项目(一百万门以上)。
输入、输出端准口描备述实现的
module counter8 (out, cout, data, load, cin, clk);
逻辑功能:
output [7:0] out;
Cபைடு நூலகம்R8
output cout;
load
input load, cin, clk; input [7:0] data;
时数钟据上缺类单沿省型行执:定行注w义下i释re:面导符寄语线/存/句型器型 cin
ina 8 inb 8
cin
∑ ci co
8 sum
cout
assign {cout,sum}=ina+inb+cin;
endmodule 程序为模块结构,包含在
问题m:od若ul要e与设en计dm1o6d位ule加之逻-法-间描辑器述功内,能部怎描特样述性 修改?
第16页
例6.2 8位二进制加法计数器
第2页
二、Verilog HDL语言的主要特征
1、语法结构上,Verilog HDL语言与C语言有许多相似之处, 并借鉴C语言的多种操作符和语法结构 2、Verilog HDL语言既包含一些高层程序设计语言的结构 形式,同时也兼顾描述硬件线路连接的具体构件。 3、通过使用结构级或行为级描述可以在不同的抽象层次 描述设计
计工程师所设计的模块进行全面细致的验证。 • 库模型的设计:可以用于描述ASIC 和FPGA的基本
单元(Cell)部件,也可以描述复杂的宏单元 (Macro Cell)。
9
Verilog HDL 的抽象级别
语言本身提供了各种层次抽象的表述,可以 用详细程度有很大差别的的多层次模块组合 来描述一个电路系统。
相关文档
最新文档