低空翾翔的个人空间 https://blog.eetop.cn/1459279 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

第一篇:我与Verilog的往事(一)

已有 1475 次阅读| 2016-4-12 00:03

    已经接触Verilog一年多了,在Verilog的综合设计部分,熟悉程度还算好,然而在仿真方面就有点欠缺了(指的是语法)。我与Verilog的往事主要写我学习Verilog过程中的易错点与易忘点;对于我而言,Verilog的易错点和易忘点还是挺多的,现在把目前为止记得的易错点和易忘点写好再说,这也是(一)的原因,以后可遇到、想到的时候再补充吧。

①模块声明时:
          module xxx();
          ...
          endmodule
模块名后面的分号;容易忘记。

②端口列表中,关键字/标识符的顺序是:
端口方向  数据类型  符号属性  位宽  变量名
如input wire signed [7:0] a
数据类型默认(不写)是wire ;
符号属性默认是无符号unsigned;
位宽默认 1 位。

③模块例化
推荐使用风格:
被调用(例化)的模块名字   自定义的例化模块名(
.
被调用(例化)模块的端口名(本模块中的线网变量名),
...

.被调用(例化)模块的端口名(本模块中的线网变量名)
);

④参数定义
(1)使用'define时语法为:`define  A  2'b10 或者`define A 2
一般把·define宏定义语句放在模块最前面,并且要注意,无论是在子模块还是顶层模块中,A 的值都代表2(调用时为 `A)(全局参数)。
(2)使用parameter定义的语法为 parameter  A = 2或者parameter A= 2’d2;
一般放在模块名字和模块端口列表之间:模块名 #(parameter A = XX,.....)(端口列表);使用parameter定义的参数只在当前模块中有用(局部参数)

⑤逻辑运算符与按位运算符
(1)逻辑运算符得到的结果只有一位,有单目也有双目.单目运算符是非!,双目运算符都是由两个字符构成,如逻辑与为&&.

(2)按位运算符有单目也有双目,只有一个字符构成。按位运算符得到的结果与操作数有关,对于双目运算符,结果可能为多位,位数与
最高位数的操作数相同,如4'b0110 &3‘b100,意思是
4'b0110按位与3’b100.结果就是3‘b100先扩展成4'b0100,然后按位与,得到的结果为4’b0100;
对于单目的按位运算符,若是按位非,那么结果的位数与操作数相同,也就是可能为1位,如按位非(2'b10)= 2‘b01;
若是其他的单目按位运算符,结果只有一位,运算时,最高位与次高位做运算,得到的结果再与第三高位做运算,依次下去直到与最低位运算。


⑥浅记赋值语句

这个是我在word上画的图,写错了一个地方,非阻塞赋值在always块中一般用于生成时序逻辑....可以看到,wire变量只能在assign中赋值,reg变量只能在always中赋值(仿真时可以在initial中赋值进行初始化)

说到赋值语句,主要有三种:always与initial过程块中的过程赋值语句,assign中的连续赋值语句
注意点:
1.在同一个always块中最好不同时使用两种赋值方式
2.使用非阻塞赋值语句时,一般在一个时钟内完成计算赋值,也就是在下一个时钟的上升沿(假设是触发器时钟上升沿触发)时,寄存器的值得到更新
3.不能在不同的always块中对同一个变量进行赋值
4.在符合赋值语法或者正确赋值习惯下(如不在时序中使用阻塞赋值),begin...end之间的语句在仿真是顺序执行的,但在实际电路中是并行的(阻塞和非阻塞都是并行的)

第一篇结束语(自嘲自激励):第一篇先写到这里了,我不聪明,但是我相信我也不笨,然而我始终想做一只笨鸟(为什么我突然看有网友说:不必想了),低空翾翔,笨鸟先飞!

点赞

发表评论 评论 (4 个评论)

回复 jackzhang 2016-4-12 11:33
非常好!
回复 yirujiwang 2016-4-15 08:49
留下,以后忘时看看!

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 5

    粉丝
  • 2

    好友
  • 3

    获赞
  • 3

    评论
  • 589

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-18 12:36 , Processed in 0.031661 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部