09 verilog基础语法-结构语句(initial、always)

虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1
应用工具:VCS(verilog compiled simulator,编译型代码仿真器)



一、学习内容(1)

在这里插入图片描述


二、结构语句

  • initial语句:只执行一次
  • always语句:不断重复执行,直到仿真结束
  • task语句:可在程序模块中的一处或多处调用
  • function语句:可在程序模块中的一处或多处调用

(1)initial语句

initial begin
	语句1;
	...
	语句n;
end

  在仿真的初始状态对各变量进行初始化;在测试文件中生成激励波形作为电路的仿真信号。
【例1】

……
parameter size=16;
	reg[3:0] addr;
	reg reg1;
	reg[7:0] memory[0:15];
	
initial begin
	reg1 = 0;
	for(addr=0;addr<size;addr=addr+1);
		memory[addr]=0;
end
……

(2)always语句

在这里插入图片描述
  如果always块中包含一个以上的语句,则这些语句必须放在begin_end或fork_join块中!

always @ (posedge clk or negedge clear) begin
	if(!clear) qout = 0; //异步清零
	else qout = 1;
end

  always语句必须与一定的时序控制结合在一起才有用!如果没有时序控制,则易形成仿真死锁!

//生成一个0延迟的无限循环跳变过程——形成仿真死锁
always areg = ~areg;

//在tb文件中,用于生成一个无限延续的信号波形——时钟信号
‘define half_period 50
module half_clk_top;
	reg reset, clk; // 输入信号
	wire clk_out; // 输出信号
	always #half_period clk = ~clk;
	...
endmodule

【例2】用always块语句产生T’FF和8位二进制计数器
在这里插入图片描述


在这里插入图片描述

  • always块语句模板
always @ (<敏感信号表达式>)begin
	// 过程赋值语句
	// if语句
	// case语句
	// while ,repeat ,for 循 环
	// task ,function 调用
end
  • 一个变量不能在多个always块中被赋值

  • 敏感信号表达式又称事件表达式或敏感表,当其值改变时,则执行一遍块内语句;

  • 在敏感信号表达式中应列出影响块内取值的所有信号!

  • 敏感信号可以为单个信号,也可为多个信号,中间需用关键字or连接!

  • 敏感信号不要为x或z,否则会阻挡进程!

  • always的时间控制可以为沿触发,也可为电平触发。

  • 关键字posedge表示上升沿;negedge表示下降沿。
    在这里插入图片描述

//模板1
always @ (Inputs) //所有输入信号必须列出,用or隔开
begin
	...//组合逻辑关系
end

//模板2
always @ (Inputs) //所有输入信号必须列出,用or隔开
	if (Enable) begin
		...//锁存动作
end

//模板3
always @ (posedge Clock) // Clock only
	begin
		...// 同步动作
	end

//模板4
always @ (posedge Clock or negedge Reset)
// Clock and Reset only
	begin
		if (! Reset) // 测试异步复位电平是否有效
			..// 异步动作
		else
			...// 同步动作
	end // 可产生触发器和组合逻辑

//模板5
always @ (posedge Clock or negedge Reset)
// Clock and Reset only
	begin
		if (! Reset) // 测试异步复位电平是否有效
			..// 异步动作
		else if 
			...// 同步动作
		else if
			...//同步动作
	end // 可产生触发器和组合逻辑

  通常采用异步清零!只有在时钟周期很小或清零信号为电平信号时(容易捕捉到清零信号)采用同步清零。


三、小结

在这里插入图片描述


作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlinxdu

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值