verilog4

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

代数逻辑表示为
SUM=A⊕B⊕C_IN
对应的电路为图
A B SUM C_IN
C_OUT
3/29/2015
Microelectronics School Xidian University
13
Verilog HDL可以用不同的描述方式写出一位全加器,其综合电路是 相同的,仅仅是描述风格不同。
(1)利用连续赋值语句实现 module one_bit_fulladder ( SUM, C_OUT, A, B, C_IN ); input A, B, C_IN; output SUM, C_OUT; assign SUM=(A^B)^C_IN; assign C_OUT=(A&B)|((A^B)&C_IN); //function of output endmodule
module desingn (OUT,A,B,C); output OUT; input A,B,C; wire [1:0] sum; reg OUT;
assign sum=A+B+C; always @(sum) if (sum>1) OUT=1; else OUT=0; endmodule 3/29/2015
描述组合逻辑电路有四种方式:结构描述、逻辑代数、真值表、抽象 描述。
3/29/2015
Microelectronics School Xidian University
5
例4.2-1:设计一个3个裁判的表决电路,当两个或两个以上裁判同意 时,判决器输出“1”,否则输出“0”。 方法1:真值表方式 真值表是对电路功能最直接和简单的描述方式。根据电路的功能,可 以通过真值表直接建立起输出与输入之间的逻辑关系。例4.2-1有三个 输入端A、B、C和一个输出端OUT。
1
4.1 Verilog HDL 语言设计思想和可综合特性
例4.1-1:用Verilog HDL设计模256(8bits)计数器 (b)常见的错误描述方式 module counter (count,clk,reset); output count; input reset,clk; reg [7:0] count; reg out;
(a)可综合程序描述方式
module counter (count,clk,reset); output count; input clk,reset;
reg [7:0] count;
reg out; always @(posedge clk) if (!reset) count<=0; else if (count==8'b11111111) else count<=count+1; count<=0;
A 0 0 0 1 B 0 0 1 0 C 0 1 0 0 OUT 0 0 0 0
0
1 1 1
1
0 1 1
1
1 0 1
1
1 1 1
3/29/2015
Microelectronics School Xidian University
6
在Verilog HDL中,可以使用“case”语句对电路进行 描述性设计,表4.2-1真值表设计代码如下: module desingn (OUT,A,B,C); output OUT; input A,B,C; reg OUT; always @(A or B or C) case ({A,B,C}) 3'b000 : OUT<=0; 3'b001 : OUT<=0; 3'b010 : OUT<=0; 3'b100 : OUT<=0; 3'b011 : OUT<=1; 3'b101 : OUT<=1; 3'b110 : OUT<=1; 3'b111 : OUT<=1; endcase endmodule
0
1
0
1
0
1
1
1
3/29/2015
8
方法3:结构描述方式
结构性描述方式是对电路最直接 的表示,早期的数字电路设计通 常采用的原理图设计实际上就是 一种结构性描述方式。 module desingn (OUT,A,B,C); output OUT; input A,B,C; and U1 (w1,A,B); and U2 (w2,B,C); and U3 (w3,A,C); or U4 (OUT,w1,w2,w3); endmodule
3/29/2015
Microelectronics School Xidian University
9
方法4:抽象描述方式
Verilog HDL还提供了采用抽象描述进行电路设计的方法,可以直接从电 路功能出发,编写代码。例如判决器设计,将三个输入的判决相加,当判决 成功时相加器之和大于1,即表示投票成功。
3/29/2015
ectronics School Xidian University
7
方法2:逻辑代数方式 对于组合电路的另一种表达方法是逻辑代数方法。主要思想是将真值 表用卡诺图表示,然后化简电路,得出逻辑函数表达式。 通过对卡诺图的化简,可以得到组合电路逻辑输出与输入之间的逻辑 函数表达式:
Microelectronics School Xidian University
10
EDA综合工具可以将Verilog HDL程序综合成物理电路形式,通过电路优 化,可以得到符合设计要求的最简化电路。采用Synplify软件对上面四种方法 设计的Verilog HDL程序进行综合(采用Altera 公司StratixII器件),可以得相 同的最简化电路。
3/29/2015
Microelectronics School Xidian University
4
4.2 Verilog HDL组合电路设计
组合电路的特点是:电路中任意时刻的稳态输出仅仅取决于该时刻的 输入,而与电路原来的状态无关。 组合电路的设计需要从以下几个方面考虑:
•所用的逻辑器件数目最少,器件的种类最少,且器件之间的连线最简单。这 样的电路称“最小化”电路; •其次,为了满足速度要求,应使级数尽量少,以减少门电路的延迟;电路的 功耗应尽可能的小,工作时稳定可靠。
8421bcd十进制余3编码器和8421bcd编码一样余3码是也一种bcd编码这种编码的特点是余3码作十进制加法运算的时候若2数之和是10正好等于二进制数的16于是便从高位自动产生进位信号因此可以使用余3码简化计算
第四章 Verilog HDL数字逻辑 电路设计方法
3/29/2015
Microelectronics School Xidian University
or endmodule
在现阶段,作为设计人员熟练掌 握Verilog HDL程序设计的多样性和可 综合性,是至关重要的。作为数字集 成电路的基础,基本数字逻辑电路的 设计是进行复杂电路的前提。本章通 过对数字电路中基本逻辑电路的 Verilog HDL程序设计进行讲述,掌握 基本逻辑电路的可综合性设计,为具 有特定功能的复杂电路的设计打下基 础。
A
B C 0 0 00 01 11 10
根据逻辑函数表达式可以很方便写出 采用逻辑代数描述方式的Verilog HDL程序。
module desingn (OUT,A,B,C); output OUT; input A,B,C; assign OUT=(A&B)|(B&C)|(A&C); endmodule Microelectronics School Xidian University
进位产生函数是
3/29/2015
Microelectronics School Xidian University
3/29/2015
Microelectronics School Xidian University
11
4.2.1 数字加法器
数字加法器是最为常用的一种数字运算逻辑,被广泛用于计算机、通信 和多媒体数字集成电路中 例4.2-2:2输入1bit信号全加器。 如果运算考虑了来自低位的进位那么该运算就为全加运算,实现全加运算的 电路称为全加器。
integer i;
always @(posedge clk,reset) begin if (!reset) count<=0;
else
for (i=0;i<=255;i=i+1) count<=count+1; end endmodule
endmodule
3/29/2015
Microelectronics School Xidian University
endmodule
3/29/2015
14
采用行为描述可以提高设计的效率,对于一个典型的多位加法器的行为 描述设计,仅需改变代码中输入和输出信号的位宽即可,例如一个2输入8bits 加法器,可以采用下面的Verilog HDL程序代码实现。 module eight_bit_fulladder ( SUM, C_OUT, A, B, C_IN ); output[7:0] output input [7:0] input SUM; C_OUT; A, B; C_IN;
always @(data or sel) case (sel) 2'b00 : out<=data[0]; 2'b01 : out<=data[1]; 2'b10 : out<=data[2]; 2'b11 : out<=data[3]; endcase endmodule (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]; assign w3=sel[1]&(~sel[0])&data[2]; assign w4=sel[1]&sel[0]&data[3]; assign out=w1|w2|w3|w4; endmodule
Microelectronics School Xidian University
(2)利用行为描述实现 module one_bit_fulladder ( SUM, C_OUT, A, B, C_IN ); output SUM, C_OUT; input A, B, C_IN; assign {C_OUT,SUM}=A+B+C_IN;
3/29/2015
Microelectronics School Xidian University
3
(c)采用结构性描述的代码: module MUX (out,data,sel); output out; input [3:0] data; input [1:0] sel; wire w1,w2,w3,w4;
A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C_IN 0 1 0 1 0 1 0 1 SUM 0 1 1 0 1 0 0 1 C_OUT 0 0 0 1 0 1 1 1
3/29/2015
Microelectronics School Xidian University
12
2
同时Verilog HDL的电路描述方式具有多样性,这也决定了对于电路 设计的多样性。
例4.1-2: 用Verilog HDL设计数字多路选择器 (a)采用真值表形式的代码: module MUX (out,data,sel); output out; input [3:0] data; input [1:0] sel; reg out;
not and U1 (w1,sel[1]); U2 (w2,sel[0]); U3 (w3,w1,w2,data[0]); U4 (w4,w1,sel[0],data[1]); U5 (w5,sel[1],w2,data[2]); U6 (w6,sel[1],sel[0],data[3]); U7 (out,w3,w4,w5,w6);\
assign {C_OUT,SUM}=A+B+C_IN; endmodule
Microelectronics School Xidian University
3/29/2015
15
例4.2-3:4位超前进位加法器
超前进位加法器是一种高速加法器,每级进位由附加的组合电路产生, 高位的运算不需等待低位运算完成,因此可以提高运算速度。 根据对于输入信号位宽为N的全加器,其进位信号是: 输出的加法结果是 超前进位标志信号是
相关文档
最新文档