西电verilog第十章精品PPT课件
合集下载
verilog数字系统设计教程PPT课件
数字系统设计的核心知识
• 复杂数字系统的构成; • 基本电路和 Verilog 的对应关系; • 同步有限状态机在电路中的作用; • 时钟树与自动综合技术
数字逻辑电路的构成
- 组合逻辑:输出只是输入逻辑电平的函
数(有延时),与电路的原始状态无关。
• 时序逻辑:输出不只是输入的逻辑电
平的函数,还与电路所处的状态有关。
8 ‘ d 31
8‘d
t
out[15:0]
202
16 ‘ d
16‘ d
t
Sn 开
93
606
t 关
全局时钟网和平衡树结构
触发器1
全局时钟网络 触发器 图1 全局时钟网示意图
缓冲器
触发器n
图2 平衡树结构示意图
避免冒险和竞争
• 由于组合逻辑和布线的延迟引起
a
c
b
a
b
t
c
t
clock
避免冒险和竞争与流水线
t
t
带寄存器的八位数据通路控制器的波形
ControlSwitch
in[7]
out[7]
CLOCK
out[7]
D Q[7]
ControlSwitch
in[0]
out[0]
CLOCK
out[0]
D Q[0]
带寄存器的八位数据通路控制器的Verilog描述
`define ON 1 ‘b 1 `define OFF 1 ‘b 0 wire ControlSwitch; wire clock wire [7:0] out, in;
ControlSwitch in[7]
out[7]
…... …...
in[0]
• 复杂数字系统的构成; • 基本电路和 Verilog 的对应关系; • 同步有限状态机在电路中的作用; • 时钟树与自动综合技术
数字逻辑电路的构成
- 组合逻辑:输出只是输入逻辑电平的函
数(有延时),与电路的原始状态无关。
• 时序逻辑:输出不只是输入的逻辑电
平的函数,还与电路所处的状态有关。
8 ‘ d 31
8‘d
t
out[15:0]
202
16 ‘ d
16‘ d
t
Sn 开
93
606
t 关
全局时钟网和平衡树结构
触发器1
全局时钟网络 触发器 图1 全局时钟网示意图
缓冲器
触发器n
图2 平衡树结构示意图
避免冒险和竞争
• 由于组合逻辑和布线的延迟引起
a
c
b
a
b
t
c
t
clock
避免冒险和竞争与流水线
t
t
带寄存器的八位数据通路控制器的波形
ControlSwitch
in[7]
out[7]
CLOCK
out[7]
D Q[7]
ControlSwitch
in[0]
out[0]
CLOCK
out[0]
D Q[0]
带寄存器的八位数据通路控制器的Verilog描述
`define ON 1 ‘b 1 `define OFF 1 ‘b 0 wire ControlSwitch; wire clock wire [7:0] out, in;
ControlSwitch in[7]
out[7]
…... …...
in[0]
Verilog示例教程PPT教学课件
always @(opcode or a or b) //用电平敏感的always块描述组合逻辑
begin case(opcode) //算术运算 `plus: out =a + b; `minus: out = a - b; //位运算 `band: out = a & b; `bor: out = a | b; `unegate: out = ~a; //单目运算 default: out = 8'hx;
endmodule
设计示例四(续) 用四个T触发器组成一个进位计数器
module ripple_carry_counter(q, clk, reset); output [3:0] q; input clk, reset; //4 instances of the module TFF are created. TFF tff0(q[0],clk, reset); TFF tff1(q[1],q[0], reset); TFF tff2(q[2],q[1], reset); TFF tff3(q[3],q[2], reset); endmodule
//延迟200个单位时间,触发事件end_first_pass
end
$finish;
//结束仿真
end
设计示例三 (续)
always @(end_first_pass) clearb = ~ clearb; //清零信号电平翻转
always @(posedge clock) $display (“ at time %0d clearb= %b data= %b qout= %b ”, $time,clearb,data,qout);
宏定义stim引用,等同于 #100 data=4'b 注意引用时要用 `符号。
begin case(opcode) //算术运算 `plus: out =a + b; `minus: out = a - b; //位运算 `band: out = a & b; `bor: out = a | b; `unegate: out = ~a; //单目运算 default: out = 8'hx;
endmodule
设计示例四(续) 用四个T触发器组成一个进位计数器
module ripple_carry_counter(q, clk, reset); output [3:0] q; input clk, reset; //4 instances of the module TFF are created. TFF tff0(q[0],clk, reset); TFF tff1(q[1],q[0], reset); TFF tff2(q[2],q[1], reset); TFF tff3(q[3],q[2], reset); endmodule
//延迟200个单位时间,触发事件end_first_pass
end
$finish;
//结束仿真
end
设计示例三 (续)
always @(end_first_pass) clearb = ~ clearb; //清零信号电平翻转
always @(posedge clock) $display (“ at time %0d clearb= %b data= %b qout= %b ”, $time,clearb,data,qout);
宏定义stim引用,等同于 #100 data=4'b 注意引用时要用 `符号。
Verilog实例PPT教学课件
end endmodule
2020/12/10
8
多路器(3)
module mux(out ,a,b,sel);
output out;
input a,b,sel;
reg out;
always @(a or b or sel)
begin
if(sel) out=a;
else out=b;
end
endmodule
2020/12/10
7
多路器(2)
module mux(out ,a,b,sel); output out; input a,b,sel; reg out; always @(a or b or sel)
begin case(sel) 1’b1: out=a; 1’b0:out=b; default: out=’bx;//此句是否可以去掉? endcase
endcase end endmodule
21
例3:比较器
module compare(equal,a,b); parameter size=8; output equal; input[size-1:0] a,b;
assign equal=(a==b)?1:0; // b=8’b1000_0000
18
状态机结构框图
Moore machine
2020/12/10
Mealy machine
19
例1:8位带进位端的加法器
module adder_8(cout,sum,a,b,cin); output cout; output [7:0] sum; input cin; input [7:0] a,b; assign {cout,sum}=a+b+cin;
2020/12/10
8
多路器(3)
module mux(out ,a,b,sel);
output out;
input a,b,sel;
reg out;
always @(a or b or sel)
begin
if(sel) out=a;
else out=b;
end
endmodule
2020/12/10
7
多路器(2)
module mux(out ,a,b,sel); output out; input a,b,sel; reg out; always @(a or b or sel)
begin case(sel) 1’b1: out=a; 1’b0:out=b; default: out=’bx;//此句是否可以去掉? endcase
endcase end endmodule
21
例3:比较器
module compare(equal,a,b); parameter size=8; output equal; input[size-1:0] a,b;
assign equal=(a==b)?1:0; // b=8’b1000_0000
18
状态机结构框图
Moore machine
2020/12/10
Mealy machine
19
例1:8位带进位端的加法器
module adder_8(cout,sum,a,b,cin); output cout; output [7:0] sum; input cin; input [7:0] a,b; assign {cout,sum}=a+b+cin;
西安电子科技大学NCverilog教程
在上述步骤之后,会生成一个你的设计对应的snapshot,仿真 就是针对这个Snapshot进行的。如图示,选中该文件,点击 仿真按钮
之后就启动了simulator,会弹出2个窗口 : 设计浏览器(Design Browser)和 控制窗口(Console window)
设计浏览器(Design Browser)
选择多步模式 Multiple step
选择creat cds.lib file,弹出第二个对 话框,save,在新对话框中点击ok, 之后在最初的对话框中点击Ok。
nclaunch的主窗口: 左边的窗口中显示了 当前目录下的所有文 件,在编译和描述后 会在右边显示设计的 库。
在在仿真你的设计以前,必须用编译器编译源文件,并且 用描述器(elaborator)把设计描述成snapshot的形式。 NCLaunch的主窗口让你可以连接你编译和描述设计所需 要的工具
❖ Simulate模式 在Simulate模式下你可以实时的看到仿真的数据。也就是说, 你可以在仿真的过程中就进行数据的分析。你可以通过对设 计设置断点和分步来达到控制仿真的。
控制台窗口 Console Window 源浏览器 Source Browser 设计浏览器 Design Browser 循环阅读器 Cycle Viewer 原理图追踪 Schematic Tracer 信号流浏览器 Signal Flow
现在要描述你的设计: 要展开库(worklib), 选择顶层单元(也就是 测试中的module), 然后选择描述按钮 (elabrate )
但是在这之前要设置 参数,选中module后 选择toolsElaborator 进行设置。
设置参数时注意将Access Visibility按 钮选中并且它的值是All,这个选项意味 着全部存取(读,写,连接探测)来仿 真目标,这样就可以在仿真的数据库里 面探测目标和范围,调试你的设计。 由于不是所有的代码都加了时间,为防 止报错在此处加上时间。 然后点击ok即可。
西安电子科技大学verilog教程
2013-8-7 17
西安电子科技大学
雷达信号处理国防科技重点实验室
Verilog 数字系统设计教程
第一讲 Verilog 的基本概念
宋万杰
西安电子科技大学 雷达信号处理国家重点实验室
1.1 硬件描述语言HDL
• 硬件描述语言HDL(Hardware Description Language)是 硬件设计人员和电子设计自动化(EDA)工具之间的接
2013-8-7
16
西安电子科技大学
雷达信号处理国防科技重点实验室
第一竞争对数字系统提出了越来越高的 要求,特别是需要设计具有实时信号处理能力的专用 集成电路,要求把包括多个CPU内核的整个电子系统 综合到一个芯片(SOC)上。 VHDL和Verilog HDL这两种工业标准的产生 顺应了历史的潮流,因而得到了迅速的发展。作为新 世纪的中国大学生应该尽早掌握这种新的设计方法, 使我国在复杂数字电路及系统的设计竞争中逐步缩小 与美国等先进的工业发达国家的差距。为我国新世纪 的深亚微米千万门级的复杂系统的设计培养一批技术 骨干。
2013-8-7 2
西安电子科技大学
雷达信号处理国防科技重点实验室
课时及考试安排
授课时数:30课时 上机时数;14课时
考试时数:90分钟
成绩计算:大作业*40%+考试*60%
2013-8-7
3
西安电子科技大学
雷达信号处理国防科技重点实验室
课程内容安排
第一部分 初级篇
第一章. 概述及设计工具介绍 第二章. Verilog HDL的基本知识 第三章. Verilog HDL基本概念 第四章. 常用Verilog语法之一 第五章.常用Verilog语法之二 第六章.常用Verilog语法之三 第七章.常用Verilog语法之四 第八章.常用Verilog语法之五
西安电子科技大学
雷达信号处理国防科技重点实验室
Verilog 数字系统设计教程
第一讲 Verilog 的基本概念
宋万杰
西安电子科技大学 雷达信号处理国家重点实验室
1.1 硬件描述语言HDL
• 硬件描述语言HDL(Hardware Description Language)是 硬件设计人员和电子设计自动化(EDA)工具之间的接
2013-8-7
16
西安电子科技大学
雷达信号处理国防科技重点实验室
第一竞争对数字系统提出了越来越高的 要求,特别是需要设计具有实时信号处理能力的专用 集成电路,要求把包括多个CPU内核的整个电子系统 综合到一个芯片(SOC)上。 VHDL和Verilog HDL这两种工业标准的产生 顺应了历史的潮流,因而得到了迅速的发展。作为新 世纪的中国大学生应该尽早掌握这种新的设计方法, 使我国在复杂数字电路及系统的设计竞争中逐步缩小 与美国等先进的工业发达国家的差距。为我国新世纪 的深亚微米千万门级的复杂系统的设计培养一批技术 骨干。
2013-8-7 2
西安电子科技大学
雷达信号处理国防科技重点实验室
课时及考试安排
授课时数:30课时 上机时数;14课时
考试时数:90分钟
成绩计算:大作业*40%+考试*60%
2013-8-7
3
西安电子科技大学
雷达信号处理国防科技重点实验室
课程内容安排
第一部分 初级篇
第一章. 概述及设计工具介绍 第二章. Verilog HDL的基本知识 第三章. Verilog HDL基本概念 第四章. 常用Verilog语法之一 第五章.常用Verilog语法之二 第六章.常用Verilog语法之三 第七章.常用Verilog语法之四 第八章.常用Verilog语法之五
第10章Verilog操作符ppt课件
! logical not 逻辑反 ~ bit-wise not 位反
module negation(); reg [3: 0] rega, regb; reg [3: 0] bit; reg log; initial begin rega = 4'b1011; regb = 4'b0000; end initial fork #10 bit = ~rega; // num = 0100 #20 bit = ~regb; // num = 1111 #30 log = !rega; // num = 0 #40 log = !regb; // num = 1 #50 $finish; join endmodule
• 按位操作符对矢量中相对应位运算。
• 位值为x时不一定产生x结果。如#50时 的or计算。
当两个操作数位数不同时,位数少 的操作数零扩展到相同位数。
a = 4'b1011; b = 8'b01010011; c = a | b; // a零扩展为 8'b00001011
逻辑操作符
! && || not and or
• 将负数赋值给reg或其它无符号变量 使用2的补码算术。
• 如果操作数的某一位是x或z,则结 果为x • 在整数除法中,余数舍弃 • 模运算中使用第一个操作数的符号
按位操作符
~ & | ^ ~^ ^~ not and or xor xnor xnor
regb = 4'b1 0 1 0 regc = 4'b1 x 1 0 num = regb & regc = 1 0 1 0 ; module bitwise (); reg [3: 0] rega, regb, regc; reg [3: 0] num; initial begin rega = 4'b1001; regb = 4'b1010; regc = 4'b11x0; end initial fork #10 num = rega & 0; // num = 0000 #20 num = rega & regb; // num = 1000 #30 num = rega | regb; // num = 1011 #40 num = regb & regc; // num = 10x0 #50 num = regb | regc; // num = 1110 #60 $finish; join endmodule
module negation(); reg [3: 0] rega, regb; reg [3: 0] bit; reg log; initial begin rega = 4'b1011; regb = 4'b0000; end initial fork #10 bit = ~rega; // num = 0100 #20 bit = ~regb; // num = 1111 #30 log = !rega; // num = 0 #40 log = !regb; // num = 1 #50 $finish; join endmodule
• 按位操作符对矢量中相对应位运算。
• 位值为x时不一定产生x结果。如#50时 的or计算。
当两个操作数位数不同时,位数少 的操作数零扩展到相同位数。
a = 4'b1011; b = 8'b01010011; c = a | b; // a零扩展为 8'b00001011
逻辑操作符
! && || not and or
• 将负数赋值给reg或其它无符号变量 使用2的补码算术。
• 如果操作数的某一位是x或z,则结 果为x • 在整数除法中,余数舍弃 • 模运算中使用第一个操作数的符号
按位操作符
~ & | ^ ~^ ^~ not and or xor xnor xnor
regb = 4'b1 0 1 0 regc = 4'b1 x 1 0 num = regb & regc = 1 0 1 0 ; module bitwise (); reg [3: 0] rega, regb, regc; reg [3: 0] num; initial begin rega = 4'b1001; regb = 4'b1010; regc = 4'b11x0; end initial fork #10 num = rega & 0; // num = 0000 #20 num = rega & regb; // num = 1000 #30 num = rega | regb; // num = 1011 #40 num = regb & regc; // num = 10x0 #50 num = regb | regc; // num = 1110 #60 $finish; join endmodule
《Verilog设计实例》PPT课件
精选PPT
6
task sort2; inout [t:0] x, y; reg [t:0] tmp; if( x > y ) begin tmp = x; x = y; y = tmp; end endtask endmodule
精选PPT
7
[例4]. 比较器的设计实例(利用赋 值语句设计组合逻辑) module compare(equal,a,b); parameter size=1; output equal; input [size-1:0] a, b; assign equal =(a==b)? 1 : 0; endmodule
assign outvec= h? 4'b0111 : g? 4'b0110 : f? 4'b0101:
e? 4'b0100 : d? 4'b0011 :c? 4'b0010 : b? 4'b0001:
a? 4'b0000 : 4'b1000; assign none_on = outvec[3];
精选PPT
18
[例9]. 输出驱动器设计实例 三态输出驱动器设计方案之一: module trist1( out, in, enable); output out; input in, enable; assign out = enable? in: 'bz; endmodule
精选PPT
19
三态输出驱动器设计方案之二: module trist2( out, in, enable ); output out; input in, enable;
begin
if(clk)
q=data;
VerilogHDL语言基础幻灯片PPT
Verilog HDL硬件描述语言功能
4.提供显式语言结构指定设计中的端口到端口的时 延及路径时延和设计的时序检查。
5.可采用三种不同方式或混合方式对设计建模。这 些方式包括:
➢ 行为描述方式—使用过程化结构建模; ➢ 数据流方式—使用连续赋值语句方式建模; ➢ 结构化方式—使用门和模块实例语句描述建模。
15.Verilog HDL能够监控模拟验证的执行,即模拟验 证执行过程中设计的值能够被监控和显示。这些值也能够 用于与期望值比较,在不匹配的情况下,打印报告消息。
16.在行为级描述中,Verilog HDL不仅能够在RTL级 上进行设计描述,而且能够在体系结构级描述及其算法级 行为上进行设计描述。
module 模块名(端口列表); 端口定义 input输入端口 output输出端口 inout输入/输出端口
数据类型说明 wire reg parameter、、、
逻辑功能定义 Assign连续赋值语句 Initial、Always过程语句 Function、Task调用 元件、模块调用 …...
Verilog HDL语言基础--本章概述
✓ Verilog的门级描述语句; ✓ Verilog编译指示语句; ✓ Verilog系统任务和函数; ✓ Verilog用户定义任务和函数和Verilog语言模块描 述方式。
本章内容对于初步掌握Verilog语言规则非常重 要。
--Verilog语言概述
17.能够使用门和模块实例化语句在结构级进行结构 描述。
Verilog程序结构
一个复杂电路系统的完整Verilog HDL模型是由若 干个Verilog HDL模块构成的,每一个模块又可以由若干 个子模块构成。Verilog使用大约100个预定义的关键词定 义该语言的结构。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//Wire declaration
wire [5:0] add_a,add_b;
wire [6:0] add_out;
wire [2*size-1:0] out;
assign
a={x[3],x[3],x[2],x[2],x[1],x[3],x[1],x[0],x[3],x
[2],x[1],x[0],x[2],x[1],x[0],x[0]}
Microelectronics School Xidian University
6
例10.1-1: 用Verilog HDL设计实部和虚部均为4位2进制书的复数乘法器
module complex(a,b,c,d,out_real,out_im); input [3:0]a,b,c,d; output [8:0] out_real,out_im; wire [7:0] sub1,sub2,add1,add2; wallace U1(.x(a),.y(c),.out(sub1)); wallace U2(.x(b),.y(d),.out(sub2)); wallace U3(.x(a),.y(d),.out(add1)); wallace U4(.x(b),.y(c),.out(add2)); assign out_real=sub1-sub2; assign out_im = add1+ add2;
第10章 Verilog HDL
10.10.2020
Microelectronics School Xidian University
1
10.1 乘法器设计
10.1.1 Wallace树乘法器
10.10.2020
Microelectronics School Xidian University
2
部分积 x3y3 x3y2 x2y3
endmodule
module complex_tb; reg [3:0] a, b,c,d; wire [8:0] out_real; wire [8:0] out_im; complex
U1(.a(a),.b(b),.c(c),.d(d),.out_real(out_real),.o ut_im(out_im)); initial
3
module wallace(x,y,out);
parameter size=4;
// Define
parameters
input [size-1:0] x,y;
output [2*size-1:0] out;
// IO declaration
wire [size*size-1:0] a;
wire [1:0] b0,b1,c0,c1,c2,c3;
Microelectronics School Xidian University
4
module fadd(x, y, z, out); output [1:0]out; input x,y, z; assign out=x+y+z; endmodule module hadd(x, y, out); output [1:0]out; input x,y; assign out=x+y; endmodul12]),.out(b1)); hadd U3(.x(a[4]),.y(a[5]),.out(c0));
fadd U4(.x(a[6]),.y(a[7]),.z(b0[0]),.out(c1)); //3 input full adder
fadd U5(.x(a[13]),.y(a[14]),.z(b0[1]),.out(c2)); fadd U6(.x(b1[0]),.y(a[10]),.z(b1[1]),.out(c3));
begin a=2; b=2; c=5; d=4; #10 a=4; b=3; c=2; d=1; #10 a=3; b=2; c=3; d=4;
end endmodule
10.10.2020
Microelectronics School Xidian University
7
10.1.3 向量乘法器
module wallace_tb;
reg [3:0] x, y;
wire [7:0] out;
wallace m(.x(x),.y(y),.out(out));
// module instance
initial
// Stimuli signal
begin
x=3; y=4;
#20 x=2; y=3;
a1 b1 a2 b2 a3 b3 a4 b4
assign add_a={c3[1],c2[1],c1[1],c0[1],a[3],a[1]}; //adder
assign add_b={a[15],c3[0],c2[0],c1[0],c0[0],a[2]};
assign add_out=add_a+add_b; assign out={add_out,a[0]}; endmodule
#20 x=6; y=8;
end
endmodule
10.10.2020
Microelectronics School Xidian University
5
10.1.2 复数乘法器
a
a*c
×
c
sub1
实部输出
-
b
sub2
×
d
b*d
a
× a*d
d
add1
虚部输出
+
add2 b
×
c
b*c
10.10.2020
x2y2 x1y3 x3y1 x1y2 x0y3 x3y0 x2y1 x1y1x0y2 x2y0x1y0 x0y1 x0y0
第1级
HA
HA
第2级
简单两输 入加法器
FA
FA
FA
HA
图10.1-2 Wallace树乘法器结构图
10.10.2020
Microelectronics School Xidian University
&{y[3],y[2],y[3],y[2],y[3],y[1],y[2],y[3],y[0],y[
1],y[1],y[2],y[0],y[0],y[1],y[0]};
//Pre part multiplier
10.10.2020
hadd U1(.x(a[8]),.y(a[9]),.out(b0)); //2 input half adder