第一课数字电路学习课件

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

4、设计举例
//Gate-level description of a 2to-4-line decoder
试用Verilog语言的门级
module _2to4decoder
(A1,A0,E,Y);
元件描述2线-4线译码器.
input A,B,E;
说明
output [3:0]Y;
部分
E1
& Y0
wire A1not,A0not,Enot; not n1 (A1not,A1),
nand 多输入端的与非门
nor 多输入端的或非门
xnor 多输入端的异或非门
not 多输出端的反相器
notif1
控制信号高电平有 效的三态反相器
notif0
控制信号低电平有 效的三态反相器
三态门
多输出门
Verilog 基本门级元件
and n-input AND gate
nand n-input NAND gate
4位全加器的层次结构框图
4 位全加器
1 位全加器
1 位全加器
1 位全加器 1 位全加器
半加器 或门
......
半加器 或门
//Gate-level hierarchical
description of 4-bit adder
A
// Description of half adder
=1 S A B module halfadder (S,C,A,B);
条件运算符 是三目运算符,运算时根据条件表达式的值选择表达式。 一般用法: condition_expr?expr1:expr2;
首先计算第一个操作数condition_expr的值,如果结果为逻辑1, 则选择第二个操作数expr1的值作为结果返回,结果为逻辑0, 选择第三个操作数expr2的值作为结果返回。
4.6.1 组合逻辑电路的门级建模
门级建模:将逻辑电路图用HDL规定的文 本语言表示出来。即调用Verilog语言中内置 的基本门级元件描述逻辑图中的元件以及元 件之间的连接关系。
元件 符号 and
or xor buf
bufif1
bufif0
基本门级元件模型
功能说明
元件 符号
功能说明 多输入门
多输入端的与门 多输入端的或门 多输入端的异或门 多输出端的缓冲器 控制信号高电平有 效的三态缓冲器 控制信号低电平有 效的三态缓冲器
outN
out
o1ut
in
2
out
N
buf真值表
输入 not
01xz
输入 buf
01xz
输 出1 0 x x
输 出0 1 x x
2、多输出门 允许有多个输出,但只有一个输入。 not N1(out1,out2,…,in); buf B1(out1,out2,…,in);
out1
out2
in
in
outN
n7 (Y[3],A1,A0,Enot);
endmodule
例2 用Verilog的门级元件进行
B
L
描述由三态门构成的2选1数据选
A
择器 。
SEL
//Gate-level description of a 2-to-1-line multiplexer module _2to1muxtri (A,B,SEL,L);
•门级描述:
一般使用Primitive(内部元件)、自定义的下层 模块对电路描述。主要用于层次化设计中。
•数据流描述方式:
一般使用assign语句描述,主要用于对组合逻辑电 路建模。
•行为描述方式:
一般使用下述语句描述,可以对组合、时序逻辑电 路建模: 1)initial 语句 2)always 语句
部分
E1
& Y0
wire A1not,A0not,Enot; not n1 (A1not,A1),
A0 1
& Y1
n2 (A0not,A0), n3 (Enot,E);
&
功能
Y 2 描述
nand n4 (Y[0],A1not,A0not,Enot),
A1 1
& Y3
n5 (Y[1],A1not,A0,Enot), n6 (Y[2],A1,A0not,Enot),
2选1数据选择器的连续赋值描述是: wire A,B,SEL,L; //声明4个连线型变量 assign L=(A & ~SEL)|(B & SEL); //连续赋值
注意,在assign语句中,左边变量的数据类型必须是wire型。
E
1
A0
1
A1
1
&
Y0
&
Y1
&
Y2
&
Y3
//Dataflow description of a 2-to-4-line decoder, module decoder_df (A1,A0,E,Y); input A1,A0,E; output [3:0] Y; assign Y[0] = ~(~A1 & ~A0 & ~E); assign Y[1] = ~(~A1 & A0 & ~E); assign Y[2] = ~(A1 & ~A0 & ~E); assign Y[3] = ~(A1 & A0 & ~E);
A0 1
& Y1
n2 (A0not,A0), n3 (Enot,E);
&
功能
Y 2 描述
nand n4 (Y[0],A1not,A0not,Enot),
A1 1
& Y3
n5 (Y[1],A1not,A0,Enot), n6 (Y[2],A1,A0not,Enot),
n7 (Y[3],A1,A0,Enot);
2 XX1 X X
Z X1 X X
xor真值表
xor
0
输入1
1 XZ
0 输
0
1
X
X
入1 1 0 X X
2X X X X X Z XXXX
2、多输出门 允许有多个输出,但只有一个输入。
not N1(out1,out2,…,in)b;uf B1(out1,out2,…,in);
… …
in
not真值表
out1 out2
endmodule
//Gate-level description of a 2-
4、设计举例
to-4-line decoder
试用Verilog语言的门级
module _2to4decoder
(A1,A0,E,Y);
元件描述2线-4线译码器.
input A,B,E;
说明
output [3:0]Y;
endmodule
用条件运算符描述了一个2选1的数据选择器。
//Dataflow description of 2-to-1-line multiplexer module mux2x1_df (A,B,SEL,L);
Io enable bufif1 tri-state buffer;
hi enable notif0 tri-state inverter;
Io enable notif1 tri-state inverter;
hi enable
1、多输入门 只允许有一个输出,但可以有多个输入。
调用名
and A1(out,in1,in2,in3);
~A = 0101 A&B= A|B=
位运算 ~B = 0000 1010
1111
A^B= A~^B= 0101 1010
缩位运算 &A=1& ~&A=1 |A=1 ^A=0 0&1&0=0 &B=1 ~|B=0 ^B=0
~^A=1 ~^B=1
位拼接运算符
作用是将两个或多个信号的某些位拼接起来成为一个新的操作数, 进行运算操作。
B
input A,B;
& C=AB
output S,C; //Instantiate primitive gates
xor (S,A,B);
and (C,A,B);
endmodule
//Description of 1-bit full adder module fulladder (S,CO,A,B,CI);
符)
移位运算符 (双目运算
符)
符号 > < >= <= == !=
& ~&
| ~| ^ ^~ 或 ~^
>> <<
功能说明 大于 小于 大于或等于 小于或等于 等于 不等于
缩位与 缩位与非 缩位或 缩位或非 缩位异或 缩位同或
右移 左移
位运算符与缩位运算的比较
A:4’b1010 、 B:4’b1111,
input A,B,CI; output S,CO; wire S1,D1,D2; //内部节点信号 //Instantiate the halfadder halfadder HA1 (S1,D1,A,B); halfadder HA2 (S,D2,S1,CI); or g1(CO,D2,D1); endmodule
FA1 (S[1],C1,A[1],B[1],C0), FA2 (S[2],C2,A[2],B[2],C1), FA3 (S[3],C3,A[3],B[3],C2);
endmodule
4.6.2 组合逻辑电路的数据流建模
数据流建模能在较高的抽象级别描述电路的 逻辑功能。通过逻辑综合软件,能够自动地 将数据流描述转换成为门级电路。
or
n-input OR gate
nor n-input NOR gat
xor n-input exclusive OR gate
xnor n-input exclusive NOR gate
Verilog 基本门级元件
buf n-output buffer
not n-output inverter bufif0 tri-state buffer;
A

A S1B
A B Ci源自SBCO ADB1
CO ( AD2 B)Ci
Ci
≥1
Co
//Description of 4-bit full adder module _4bit_adder (S,C3,A,B,C_1);
input [3:0] A,B; input C_1; output [3:0] S; output C3; wire C0,C1,C2; //内部进位信号 //Instantiate the fulladder fulladder FA0 (S[0],C0,A[0],B[0],C_1),
2、数据流建模举例
数据流建模使用的基本语句是连续赋值语句assign ,该 语句用于对wire型变量进行赋值, 它由关键词assign开始,后面跟着由操作数和运算符组成的 逻辑表达式。
连续赋值语句的执行过程是:只要逻辑表达式右边变量 的逻辑值发生变化,则等式右边表达式的值会立即被计算 出来并赋给左边的变量。
… …
out1 out2
outN
not真值表 输入
not 01xz
输出 1 0 x x
buf真值表
输入 buf
01xz
输出
01xx
3、 三态门 有一个输出、一个数据输入和一个输入控制。 如果输入控制信号无效,则三态门的输出为高阻态z。
in ctrl
(a)
out in ctrl
out
(b)
三态门元件模型
类型
算术运算符 (双目运算
符)
位运算符 (双目运算
符)
逻辑运算符
Verilog HDL的运算符
符号
功能说明
+
二进制
-

*
二进制
/

%
二进制

二进制

求模
~ & | ^ ^~ 或 ~^
! &&
||
按位取 反
按位与 按位或 按位异 或 按位同 或
逻辑非 逻辑与 逻辑或
类型
关系运算符 (双目运算符

缩位运算符 (单目运算
设A=1’b1,B=2’b10,C=2’b00
则{B,C}=4’b1000 {A,B[1],C[0]}=3’b110 {A,B,C,3’b101}=8’b11000101。
对同一个操作数的重复拼接还可以双重大括号构成的运算符{{}} 例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。
input A,B,SEL output L; tri L; bufif1 (L,B,SEL); bufif0 (L,A,SEL); endmodule
5、分层次的电路设计方法简介
分层次的电路设计:在电路设计中,将两个或多个模块组 合起来描述电路逻辑功能的设计方法。
设计方法:自顶向下和自底向上两种常用的设计方法
(a)bufif1 (b)notif1
bufif1真值表
bufif1 控制输入 01 x z
0z 数 据1 z 输x z
入z z
0 0/z 0/z
1 1/z 1/z xxx xx x
notif1真值表
notif1 控制输入 01 xz
0 z 1 1/z 1/z 数 据 1 z 0 0/z 0/z 输x z x x x 入z z x x x
and真值表
and
输入1
01 X z
00 0 0 0
输10 1 x x 入x0 x x x
2z0 x x x
nand真值表
nand
输入1
0 1x
z
01111
输1 1 0 x x

x1xxx 2z 1 x x x
X- 不确定状态 Z- 高阻态
or真值表
or
输入1
01XZ
输 00 1 X X
入111 1 1
相关文档
最新文档