- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4选1数据选择器实例之一
数的表示方法
整型常量
decimal, hexadecimal, octal or binary format. 两种表达方法
简单的十进制数. 10,9,156. <位宽(可选)> <'进制><0-9 and a to f(hexadecimal)>
attention!
下面是MUX的结构级描述,采用Verilog基本单元(门)描述。描 述中含有传输延时。
module mux21(out, a, b, sl); input a, b, sl; output out;
not u1 (nsl, sl ); and #1 u2 (sela, a, nsl); and #1 u3 (selb, b, sl); or #2 u4 (out, sela, selb); endmodule
七段数码管译码器及仿真研究
Decoder0
D3
D2
IN[3..0] OUT[15..0]
WideOr10
D1
g
D0
DECODER
WideOr8 f
WideOr6 e
WideOr4 d
b~0 b
a~0 a
c
q1~reg0
q2~reg0
PRE
PRE
d
D
Q
D
Q
q2
clk
ENA
ENA
CLR
第九章 硬件描述语言简介
Verilog HDL
HDL的含义
Hardware Description Language
Verilog HDL与其他HDL比较
Verilog HDL —“告诉我你想要电路做什么,我给你提供能 实现这个功能的硬件电路”
VHDL —和Verilog HDL类似
clk res et
Add0
A[7..0]
B[7..0]
8' h01 --
+
ADDER
out[7..0]~reg0
PRE
D
Q
ENA CLR
out[7..0]
F3 1DQ
C1
F2 1DQ
C1
F1 1DQ
C1
F0 1DQ
C1
CP
out<=(out>> 1)
a >> n 或 a << n
a代表要进行移位的操作数,n代表要
移几位。这两种移位运算都用0来填补 移出的空位。例如:
start = 1; 设为值0001
//start在初始时刻
result = (start<<2); //移位后, start的值为0100,然后赋给result
clr
out~[3..0]
4' h0 --
unsized constants 32bit
10=32'd10=32'b1010
1=32'd1=32'b1
当实际数据位数小于定义的位宽时,如果是无符号 数,则在左边补零,如果无符号数最左边是“x”, 则在左边补“x”,如果无符号数左边是“z”,则在 左边补“z”
12'h3x=12'h03x, 12'hzx=12'hzzx
ABEL、AHDL —“告诉我你想要什么样的电路,我给你提供 这样的电路”
什么是Verilog HDL
能够对数字逻辑电路的功能和结构进行描述 的一种高级编程语言
PLD/FPGA的设计开发语言 编写程序描述数字电路的功能与结构
描述电路的功能 描述电路的结构 表达具有并行性
SEL
DATAA DATAB
OUT0
MUX21
out[3..0]~reg0
PRE
D
Q
ENA CLR
clk
out[3..0]
module lfsr4_1(clk,Q); input clk; output[3:0] Q;
wire[3:0] Q; wire nQ0; assign nQ0 = ~Q[0];
endmodule
有限状态机及其仿真研究
控制电路的核心部分 采用 always 和 case 语句. 状态保存在寄存器中,根据寄存器不同的值
(状态)执行不同的操作, case语句用于选 择不同的状态和对应各种状态的输出逻辑。 FSM是在时钟沿的同步控制作用下从一个状 态转换成另一个状态。 采用寄存器型变量 (a variable of reg data type) 赋值。
结构型描述指描述实体连接的结构方式,它 通常通过实例进行描述,将Verilog已定义的 基元实例嵌入到语言中。
module Mux21 (a,b,s,y); //----------------
input a,b;
input s;
output y;
assign y = (s==0)? a : b; //--------------
//is a 3-bit binary number
'o7460
// is an octal number
4af
// is illegal (hexadecimal format requires 'h)
数字与进制之间可以有空格
5'D 3
数字电路中,x表示不定值,z表示高阻态。可在十 六进制,八进制和二进制中使用x和z,十六进制中 一个x表示有四位都是x,八进制中一个x表示三位都 是x,二进制中则表示一位是x。z用法同理。
设计中我们可能需要调用一些已经定义好 的模块,作为我们电路中的单元,
调用这些模块的过程,称为实例化 (instantiation),调用完之后,这些电路中的 模块单元称为实例(Instance)。实例的使 用格式为:
<模块名> <实例名> <端口列表>;
add_full u1(.A(A[0]),.B(B[0]),.C(C[0]),.Carry(C[1]),.S(S[0])), u2(.A(A[1]),.B(B[1]),.C(C[1]),.Carry(C[2]),.S(S[1])), u3(.A(A[2]),.B(B[2]),.C(C[2]),.Carry(C[3]),.S(S[2])), u4(.A(A[3]),.B(B[3]),.C(C[3]),.Carry(C[4]),.S(S[3]));
Logical operators逻辑运算符
&&(与)、 ||(或)、 ! (非)
与逻辑优先级别高于或逻辑,但都低于关 系和等式运算符。
results——1(真)、0(假) and x(不确 定值)。
a = b && c; b = a || c;
if ( ! inword ) if ( inword == 0 )
D
Q
ENA CLR
A[7..0]
OUT[7..0]
8' h01 --
B[7..0]
ADDER
out~[7..0]
SEL DATAA
DATAB
OUT0 8' h00 --
out~[15..8]
SEL DATAA
DATAB
OUT0
MUX21
MUX21
out[7]~reg0
PRE
D
QENA CLR源自out[7..0]CLR
q1
计数器及仿真研究
res et clk
Add0
out~[3..0]
4' h1 --
A[3..0] B[3..0]
OUT[3..0] 4' h0 --
SEL DATAA
DATAB
OUT0
ADDER
MUX21
out[3..0]~reg0
PRE
D
Q
ENA CLR
out[3..0]
clk
data[7..0] load res et
… default: 缺省语句;
endcase
Mux0
s el[1..0]
SEL[1..0]
in3
in2
OUT
out
DATA[3..0]
in1
in0
MUX
module mux4_1(out,in0,in1,in 2,in3,sel);
output out; input in0,in1,in2,in3; input[1:0] sel; reg out;
always 0~0 a
b
00
c
y
1
rega
rega
always 0~0
PRE
D
Q
y
a
ENA
b
CLR
c
module add_full(A,B,C,Carry,S);
input A,B,C; output Carry,S; assign S = A^B^C; assign Carry =
endmodule
//--------------1 //--------------2
MUX的行为可以描述为:只要信号a或b或s发生变化,如果s为0则选 择a输出;否则选择b输出。
a mux 21 y
b
s
在行为级模型中,逻辑功能描述采用高级语言结构,如@, while,wait,if, case。
out[6]~reg0
PRE
D
Q
ENA CLR
out[5]~reg0
PRE
D