SYoong的个人空间 https://blog.eetop.cn/1584010 [收藏] [复制] [分享] [RSS]

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

日志

Verilog学习笔记基本语法篇(八)········ 结构说明语句

已有 1351 次阅读| 2016-9-24 20:15 |个人分类:Verilog基础|系统分类:芯片设计

Verilog中的任何过程都可以属于以下四种结构的说明语句;

1) initial;  2) always;  3) task;   4) function;

1) initial说明语句;

一个程序中的 initial 和 always 的次数是不受限制的,他们都是在仿真的一开始同时开始运行的。initial 只执行一次,而 always语句则是不断地重复活动,直到仿真活动结束、但是always 后面的过程快是否运行,则要看他的触发条件是否满足,满足则运行一次,再满足再运行,直至仿真结束。

 格式:

   initial 

     begin

      语句1;

      语句2;

         ...

      语句n;

   end

一个模块中可以有多个initial块,他们都是并行运行的。 initial 块常用于测试文件和虚拟模块的编写,用来产生仿真测试信号和设置信号记录等仿真环境。

 

2)always说明语句

其声明格式如下:

always  <时序控制>  <语句>

如果always没有时序控制,则会产生仿真器的死锁。 如:always  areg=~areg;这将产生0延迟的无限循环跳变过程,这时发生仿真死锁。

always 的时序控制可以是边沿触发也可以是电平触发,可以单个信号亦可以十多个信号,中间用关键词or链接。

 A)  always @(posedge clock or posedge reset)

       begin

        ....

       end

B)  always @(posedge clock or posedge reset)

       begin

        ....

       end

上述中,A是由两个边沿触发的always只要其中一个沿出现,就立即执行一次过程块。B是有a b c 三个信号电平触发的,只要a b c 中任何一个发生变化,从高到低或从低到高都会执行过程块。

边沿触发的always 块常常描述时序行为,如有限状态机,通常对应于寄存器组和门级组合逻辑的结构。而电平触发的always块常常用来描述组合逻辑的行为。

在always语句中,由关键词or 链接的多个事件名或者信号名组成的列表称为敏感列表。用关键词or或者','表示这种关系。如果输入的逻辑变量较多,那么编写敏感列表会很繁琐而且容易出错。针对这种情况,Verilog中可以用@* 和 @(*),他们表示对后面语句块中所有的输入变量的变化是敏感的。

电平敏感的时序控制:

Verilog用关键字wait 来表示等待电平敏感的条件为真:

如: always  

           wait  (count_enabal)  #20 count = count+1;

这个例子中,仿真器连续见识count_enable的值,其值为0,则不执行后面语句。如果其值为1,则20个单位后执行这个语句,如果count_enable始终为1,那么count每20个单位时间+1。


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 3

    粉丝
  • 0

    好友
  • 3

    获赞
  • 1

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-27 17:36 , Processed in 0.018120 second(s), 12 queries , Gzip On, Redis On.

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