verilog学习(二) 高级知识点

结构语句

initial

只执行一次

initial begin
    sys_clk 	<= 1'b0;
    touch_key	<= 1'b0;
    #20		sys_rst_n 	<=  1'b0;
    #110	sys_rst_n 	<=  1'b1;
end

always

一直重复执行 while(1)

always #10 sys_clk <= ~sys_clk  //产生20ns周期时钟信号

always可以使边沿触发、也可以是电平触发

always @(敏感列表)

其中的敏感列表类似于while(判断语句)

例如:

always @(posedge sys_clk or negedge sys_clk) begin  //边沿触发 描述时序逻辑
    if (!sys_clk)
        count <= 24'd20;
    else if (count <= 24'd20)
        count <= 24'd25;
end

always @(a or b or c or d) begin  //电平触发 描述组合逻辑
    a <= a | b ;
end

always @(*) begin  // 对所有输入变量都是敏感的
    a <= a | b ;
end

赋值语句

阻塞赋值

在一个always中,后面的语句是在前一个语句结束后才开始的。

执行赋值时,计算RHS(等号右边的),更新LHS(等号左边的)。

b = a;

非阻塞赋值

多个语句同时计算RHS,计算完后同时更新LHS。

非阻塞赋值智能给寄存器类型赋值,REG。

b <= a;

使用方法

组合逻辑用 阻塞赋值“=”

时序逻辑用 非阻塞赋值“<=”

在同一个always块里,不要同时用阻塞和非阻塞;

不允许在多个always块中,对同一个变量赋值;

条件语句

IF语句

### IF
if(XXX)
XXX;

### IF-ELSE
if(XXX)
XXX;
else
xxx;

### IF-ELSEIF
IF(XXX)
XXX;
else if (XXX)
XXX;
else if (XXX)
XXX;

条件语句必须在initial和always块中

其他

0,X,Z 都判定为假;1为真

if后面的操作语句可以为begin+end 组成的块语句,相当于大括号

CASE语句

case (num)
	4'h0	:	seg_led <= 8'b1100_0010;
	4'h1	:	seg_led <= 8'b1100_0011;
	default	:	seg_led <= 8'b1100_0111;
endcase
  1. 分支表达式的值必须不同 (4‘h0 4’h1 …)
  2. 所有表达式的位宽必须相等,必须指定位宽
  3. casez,不考虑高阻值Z
  4. casex,不考虑高阻值Z和不定值X
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[2\]:在Verilog中,有一些高级功能可以用来增强设计的灵活性和复杂性。其中包括阻塞赋值和非阻塞赋值、always语句和assign语句、if_else语句和case语句、状态机等。阻塞赋值和非阻塞赋值是用来给信号赋值的两种不同方式。阻塞赋值使用"="符号,表示在当前时间步骤中,按照代码的顺序执行赋值操作。而非阻塞赋值使用"<="符号,表示在当前时间步骤结束后,按照代码的顺序执行赋值操作。always语句用于描述组合逻辑的行为,它可以根据输入信号的变化来更新输出信号。assign语句用于描述连续赋值的行为,它可以根据输入信号的变化实时更新输出信号。if_else语句和case语句用于描述条件分支的行为,它们可以根据不同的条件执行不同的操作。状态机是一种用于描述有限状态机的方法,它可以根据输入信号的变化来切换不同的状态,并执行相应的操作。这些高级功能可以帮助设计者更好地实现复杂的逻辑功能,并提高设计的可读性和可维护性。 #### 引用[.reference_title] - *1* *3* [Verilog学习笔记(5):Verilog高级程序设计](https://blog.csdn.net/KIDS333/article/details/127244643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Verilog】三、Verilog高级知识点](https://blog.csdn.net/weixin_62912626/article/details/127863477)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值