verilog知识点

assign赋值语句代表的是一种硬件之间的连接关系,会不断的驱动下去。

assign语句后面要加;

或非门是一个输出反相的或门。用 Verilog 编写的 NOR 函数需要两个运算符

module括号内的信号都被默认声明为wire类型

与&,或|,非~

切片索引的顺序必须和定义时的顺序相同;eg:定义input [31:0] in;索引时要用in[7:0], 不能0:7

mod my_mod( .实例化的my_mod的端口信号(外部接入它的对应的信号), ;

过程块中不能包含assign

赋值语句的左侧必须是网络类型(例如,wire),而过程赋值的左侧(在always块中)必须是变量类型(例如reg)。这些类型(wire与reg)与合成的硬件无关,只是Verilog用作硬件模拟语言时留下的语法。

组合逻辑电路,下面两句产生的电路效果是相同的

assign out1 = a & b | c ^ d;
always @(*) out2 = a & b | c ^ d;

   (1)在Verilog module中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。在同一module中这三者出现的先后顺序没有关系。

   (2)只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于module的功能定义部分。

   (3)连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。

每个case项只能执行一条语句。如果要多个语句,则必须使用begin…end包起来。\

定义input [3:0] in,在case[in]语句中,列举in的可能取值位宽一定要和声明的位宽相同,不管使用几进制表达方式。eg:4'h9  4'd10

连接运算符eg:{a[2:1],b[2:0]};中间要用,隔开

always语句块里面,是不能出现assign的

always语句中的敏感信号用or或者,连接,在敏感驱动信号中,不能既有单边沿的驱动又有双边沿的驱动,如always@(posedge Clk50Mhz or negedge RstN or StartFlag),即只能统一用一种,不能混合。

以0x开始的数据表示16进制

赋值是q <= 8'h34,而不是8h'34,注意分号的位置

位运算符:~a,a & b,a | b,a ^ b:对每个位进行取反,相与,相或,异或。

启用时,D锁存器的作用类似于导线(或非反相缓冲器),禁用时保留电流值。一般写一个if语句不用else会产生锁存器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值