硬件描述语言5汇总

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

时间
所执行语句
0
m=1’b0;
5
a=1’b1;
10
x=1’b0;
30
Initiba=l1块’b语0;句在仿真期 间35只y执=1’行b1一; 次,一般 用于初始化、信号监
视、生成仿真波形等。
#10 x=1’b0;
#25 y=1’b1;
end
2020/10/1
GUET School of Information &
硬件描述语言及其在数字系 统中的应用
主讲:信息与通信学院谢跃雷 (副教授)
2020/10/1
GUET School of Information &
1
Communications
3.3 组合逻辑电路设计:行为建模
结构化的过程语句 过程赋值语句 时序控制。 条件语句 分支语句 循环语句
2020/10/1
2020/10/1
GUET School of Information &
4
Communications
1.initial语句 ▪ 只能执行一次
ห้องสมุดไป่ตู้
▪ 一个模块中若有多个initial块,则它们同时执行。
▪ 块内若有多条语句,需要用begin和end将它们组合。
module stimulus; reg x, y, a, b, m; initial m=1’b0;//一条语句,无需beginend initial begin //多条语句,需begin-end #5 a=1’b1; #25 b=1’b0; end initial begin
#15 reg_a[2] =1’b1;Time 25
#10 reg_b[15:13]={x, y, z}
count=count +1;
20e20n/1d0/1
GUET School of Information &
8
Communications
2.非阻塞赋值语句
▪ 使用“<=”作为赋值符 ▪ 非阻塞赋值语句并行执行,即一条语句不会“阻塞”其
always #10 clock = ~clock; endmodule
always块语句是 verilog行为建模的主 要块语句,是学习的 重点。
▪ always语句从仿真0时刻起,每隔10个时间单位执行一次clock信号取反 操作。
2020/10/1
GUET School of Information &
GUET School of Information &
2
Communications
随着设计复杂程度的不断提高,在设计早期对所采用的算法 和各种整体结构进行全面的评价变得十分重要,这时需要进 行行为描述。
行为描述:从电路的外部行为角度进行描述,即描述电路的 输入与输出之间的关系。
▪ 行为级描述是对系统的高抽象级描述。在这个抽象级,注重 的是整个系统的功能而不是实现。
非阻塞赋值常用来描述多个数据并发传输的行为。
always @ ( posedge clock) begin
▪ Verilog有高级编程语言结构用于行为描述,包括: wait, while, if then, case和forever,for等
▪ Verilog的行为建模是用一系列以高级编程语言编写的并行的、 动态的过程块来描述系统的工作。
2020/10/1
GUET School of Information &
5
endmodule
Communications
2. always语句
▪ 循环执行 ▪ 按顺序执行其中的语句,最后一条语句执行完后,再次执
行第一条语句 ▪ 一个模块中若有多个always块,则它们同时执行。
module clock_gen (clock); output clock; reg clock; initial clock=1’b0;
6
Communications
二、过程赋值语句
▪ 在always过程块中的赋值称为过程赋值。 ▪ 在过程赋值语句中表达式左边的信号必须是寄存器类型
(如reg类型) ▪ 在过程赋值语句等式右边可以是任何有效的表达式,数据
类型也没有限制。
▪ 如果一个信号没有声明则缺省为wire类型。使用过程赋值 语句给wire赋值会产生错误。
3
Communications
一、结构化过程语句
Verilog中有两种结构化过程语句:initial和always语句,是 行为建模的两种基本语句,所有的行为语句只能出现在这两种 结构化过程语句里。
➢每个initial语句和always语句代表一个独立的执行过程 (或过程块)。 这两种语句不能嵌套使用。verilog本质上是并发的,这些块 并发执行,而不是顺序执行。
▪ reg_b[15:13]={x,y, z}在时刻10执行。
▪ count=count+1在 时刻0执行
▪ 此处仅为说明阻塞 和非阻塞之区别, 不要在同一个块内 同时使用两种语句。
count<=count +1;
2e02n0/d10/1
GUET School of Information &
9
Communications
它语句执行,充许赋值调度。
reg x, y, z; reg [15:0] reg_a, reg_b;
▪ reg_a[2]=1在15时 刻执行
interget counter; //所有的行为语句放在initial或always
块内 always begin
x=0; y=0; z=1; counter=0; reg_a= 16’b0; reg_b=reg_a; #15 reg_a[2] <=1’b1; #10 reg_b[15:13]<={x, y, z}
reg x, y, z;
reg [15:0] reg_a, reg_b;
interget counter; //所有的行为语句放在initial或always 块

always
begin
Time 0
x=0; y=0; z=1; counter=0;
reg_a= 16’b0; reg_b=rTeimge_1a5;
▪ Verilog包括两种过程赋值语句 ▪ 阻塞赋值 ▪ 非阻塞赋值
2020/10/1
GUET School of Information &
7
Communications
1.阻塞赋值语句
▪ 使用“=”作为赋值符
▪ 阻塞赋值语句按顺序执行,一条语句完全执行完后,才 执行下一条语句,即有“阻塞”作用。
相关文档
最新文档