当前位置:
文档之家› Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第4章PPT课件
Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第4章PPT课件
言的设计思想 和可综合特性
在数字集成电路设计过程中,设计者使用Verilog HDL 硬件描述语言进行关键性步骤的开发和设计。其基本过程 是,首先使用Verilog HDL对硬件电路进行描述性设计,利 3 用EDA综合工具将其综合成一个物理电路,然后进行功能 验证、定时验证和故障覆盖验证。
15
input [3:0] data;
input [1:0] sel;
Verilog HDL和VHDL等硬件描述语言对电路的设计 是将基本的最小数字电路单元(如门单元、寄存器、存储器 等)通过连接方式,构成具有特定功能的硬件电路。在数字 集成电路中,这种最小的单元是工艺厂商提供的设计标准 库或定制单元;在FPGA中,这种最小的单元是芯片内部 已经布局的基本逻辑单元。设计人员通过描述性语言调用 和组合这些基本单元实现特定的功能,其基本的电路是灵 活的。
7
例4.1-1 用Verilog HDL语言设计模256(8 bit)计数器。 (a) 可综合程序描述方式: module counter (count,clk,reset); output count; input clk,reset; reg [7:0] count; reg out; always @(posedge clk) 8
reg [7:0] count; reg out; integer i; always @(posedge clk,reset) begin if (!reset) count<=0; else for (i=0;i<=255;i=i+1) 10
count<=count+1; end endmodule Verilog HDL的电路描述方式具有多样性,这也决定了 电路设计的多样性。例4.1-2是对一个多路选择器的设计, 程序(a)采用的是真值表的形式,程序(b)采用的是逻辑表达 式的形式,程序(c)采用的是基本逻辑单元的结构性描述形 式。
assign w3=sel[1]&(~sel[0])&data[2]; assign w4=sel[1]&sel[0]&data[3]; assign out=w1|w2|w3|w4; endmodule (c) 采用结构性描述的代码: module MUX (out,data,sel); output out;
与计算机软件所采用的高级程序语言(C语言)类似, Verilog HDL是一种高级程序设计语言,程序编写较简单, 设计效率很高。然而,它们面向的对象和设计思想却完全 不同。
软件高级程序语句是对通用型处理器(如CPU)的编程, 主要是在固定硬件体系结构下的软件化程序设计。处理器 的体系结构和功能决定了可以用于编程的固定指令集,设 计人员的工作是调用这些指令,在固化的体系结构下实现 4 特定的功能。
if (!reset) count<=0; else if (count==8'b11111111) count<=0;
else count<=count+1; endmodule (b) 常见的错误描述方式: module counter (count,clk,reset); output count; input reset,clk; 9
5
Verilog HDL给设计者提供了几种描述电路的方法。 设计者可以使用结构性描述方式把逻辑单元互连在一起进 行电路设计,也可以采用抽象性描述方式对大规模复杂电 路进行设计,如对有限状态机、数字滤波器、总线和接口 电路的描述等。
由于硬件电路的设计目标是最终产生的电路,因此 Verilog HDL程序设计的正确性需要通过对综合后电路的正 确性进行验证来实现。逻辑上相同的电路在物理电路中的 6 形式却有可能完全不同。对于Verilog HDL程序设计而言, 数字电路的描述性设计具有一定的设计模式,这与C语言 等高级软件程序设计是不同的。
第4章 Verilog HDL数字逻辑电 路设计方法
➢ 4.1 Verilog HDL语言的设计 思想和可综合特性
➢ 4.2 组合电路的设计
➢ 4.3 时序电路的设计
➢ 4.4 有限同步状态机
1
➢ 本章小结
教材其余课件及动画素材请查阅在线教务辅导网 在线教务辅导网: 2 QQ:349134187 或者直接输入下面地址:
例4.1-1是对模256(8 bit)计数器的两种描述。程序(a) 是通常的Verilog HDL语言对计数器的描述方式,通过改变 计数器状态寄存器组的位宽和进位条件,可以实现对不同 计数器的硬件电路设计。程序(b)是初学者经常出现的一种 错误描述方式,刚开始编写Verilog HDL程序时经常会套用 C语言等高级程序设计的模式,这样往往得不到目标数字 电路的功能。
11
例4.1-2 用Verilog HDL设计数字多路选择器。 (a) 采用真值表形式的代码: module MUX (out,data,sel); output out; input [3:0] data; input [1:0] sel; reg out; always @(data or sel) 12
case (sel) 2'b00 : out<=data[0]; 2'b01 : out<=data[1];
2'b10 : out<=data[2]; 2'b11 : out<=data[3]; endcase endmodule
13
(b) 采用逻辑表达式形式的代码: module MUX (out,data,sel); output out; input [3:0] data; input [1:0] sel; wire w1,w2,w3,w4; assign w1=(~sel[1])&(~sel[0])&data[0]; assign w2=(~sel[1])&sel[0]&data[1]; 14