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

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

日志

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

已有 2743 次阅读| 2016-4-14 00:46

今天课有点多,下周期中考试,小飞心里也是万分着急呀...敲一篇日记的时间要1+个小时(可能是因为我挫吧)....只好牺牲午睡时间和晚上下课的时间写写了。
1、数值的易忘点

上面那个图是我在word写的,在verilog中,一般一个整数我们称呼为  xx位xx进制数。数的位数和符号数的易忘点,图已经说明了。
通常有时候,一些初学者往往不知道位数与值之间的关系,我当初也不知道,现在我来给自己备忘一下:
3‘b101:3位的二进制数101,(在我们的惯用的数制:10进制)数值大小为5;
3'd6:3位的10进制数6,等效于3'b110;数制大小为6;
3’d9:由于只有3位,十进制数9的数值为4位:4‘b1001;所以3‘d9的数值高位被阶段,3'd9表示真实的数值为3’d1或者3‘b001,数值大小为1



2、位宽匹配的易错易忘点
(1)子模块例化中隐式线网赋值时
子模块例化时,要用线网类型的变量  连接  被调用的子模块端口信号  和主模块的 信号,当这个线网变量没有在主模块中声明时,该线网变量的位宽有以下情况:
①如果该线网变量是用于连接 主模块的端口信号 和  被调用的子模块的端口信号,那么该线网变量的位宽 跟 主模块端口的位宽相同。
②如果该线网变量只在主模块里起连接作用(如连接两个 被调用的子模块),该线网位宽默认为1位。
③Verilog判断隐式线网变量的位宽从顶层环境开始,也就是判断隐式线网的位宽并不参看被调用的子模块端口的位宽。

(2)数值位宽扩展
①位宽扩展:如果所规定的位宽太小,那个将会截断高的几个位(如2’b1101,将变成2'b01),如果指定的位宽太大,则会用0或者x/z来向左扩展数值,但不会扩展符号位。
②对于有符号数:如果位宽位宽小于数值规定,符号位可能被截断(如数-4‘sd15,即1111_0001,将会被截断,代表的值为+1,即0001);
如果位宽大于数值规定,都是用0来扩充,因此负数可能被扩充为正数。

(3)赋值时位宽、符号数的易错易忘点
①无论是有符号数还是无符号数,高位宽的变量(或者数)赋值给低位宽的
变量(或者数),低位宽将只能接收到高位宽数的的低位数值。
②低位宽赋值给高位宽时,有:无符号数/变量 给 无符号数/变量,
符号数/变量 给 符号数/变量,这两个都不会出错;
无符号数/变量 给 符号数/变量,符号数/变量 给 无符号数/变量 时将出现错误。


3、敏感列表
①在always块中建立组合逻辑模型时,如果敏感列表没有完成,在仿真中将会以锁存器的形式出现,但是在综合中将列出所有的敏感信号列表,从而建立相应的组合逻辑(可能也是有锁存器的)。
②@*只能对always块中的信号 敏感,对外部always块中的函数引用的信号不敏感。
③组合逻辑中要对RAM中的每个元素都敏感时,可以使用@*,也可以用@(addr,men[addr])
④敏感列表中存在有操作时,对于操作项而言,不会对操作数敏感,而是对操作后的结果敏感,所以不在敏感列表中进行操作。

昨天先写到这里了,快凌晨1点了,也困了...今天课还算少,在准备期中考试的同时,我也会继续写日志的!


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 5

    粉丝
  • 2

    好友
  • 3

    获赞
  • 3

    评论
  • 601

    访问数
关闭

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


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

GMT+8, 2024-12-22 19:03 , Processed in 0.016403 second(s), 6 queries , Gzip On, Redis On.

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