网站大量收购独家精品文档,联系QQ:2885784924

004 Verilog HDL语言基础.ppt

  1. 1、本文档共106页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1)initial 语句 格式如下: initial begin 语句语句1; 语句语句2; … 语句语句n; end 2) always 说明语句 always语句在仿真过程中是不断重复的。格式如下: always <时序控制> <语句> always 由于其不断重复的特性,只有和一定的时序控制结合在一起才有用。 always 的时间控制可以是沿触发也可以是电平触发的,可以多个信号也可以单个信号,中间需要用关键字or连接。 相关例子:时钟发生器 功 能 描 述: 利用外来时钟clk 产生一系列时钟,其中clk1为外来时钟clk的反向时钟, clk2为clk的二分频时钟,clk4为外来时钟clk的四分频时钟,clk8为外来时钟clk的八分频时钟。 时钟发生器的程序: module clkgen(clk,clk1,clk2,clk4,clk8); input clk; output clk1,clk2,clk4,clk8; reg clk2,clk4,clk8; reg[7:0] state=8’d0; parameter S1=8’ S2=8’ S3=8’ S4=8’ S5=8’ S6=8’ S7=8’ S8=8’ idle=8’ Assign clk1=~clk; always@(negedge clk) Begin case(state) S1: begiin clk2=~clk2; state=S2; end S2: begiin clk2=~clk2; clk4=~clk4; state=S3; end S3: begiin clk2=~clk2; state=S4; end S4: begiin clk2=~clk2; clk4=~clk4; clk8=~clk8; state=S5; end S5: begiin clk2=~clk2; state=S6; end S6: begiin clk2=~clk2; clk4=~clk4; state=S7; end S7: begiin clk2=~clk2; state=S8; end S8: begiin clk2=~clk2; clk4=~clk4; clk8=~clk8; state=S1; end idle: state=S1; default: state=idle; endcase end endmodule 3) task 和 function说明语句 task和function说明语句分别用来定义任务和函数。他们的不同点有以下4点: a)函数只能与主模块共用同一个仿真时间单 位、而任务可以定义自己的仿真时间单位; b)函数不能启动任务,而任务能启动其他任 务和函数; c)函数至少要有一个输入变量,而任务可以 没有或有多个任何类型的变量; d)函数返回一个值,而任务则不返回值。 task 说明语句 任务定义 take<任务名>; <端口及数据类型声明语句> <语句1> <语句2> … <语句n> endtask function 说明语句 函数的目的是返回一个用于表达式的值。语法: function<返回值的类型或范围>; <端口说明语句> <变量类型说明语句> begin <语句> …end endfunction 4.9 系统任务 和 函数 A)$标识符标识符 ‘$’ 符号表示Verilog的系统任务和函数; 常用的系统任务和函数有下面几种: 1) $time //找到当前的仿真时间 2) $display, $monitor //显示和监视信号 值的变化 3) $stop //暂停仿真 4) $finish //结束仿真 4.9 系统任务 和 函数 例: initial $monitor($time,,“a=%b, b=%b”, a, b); // 每当 a 或 b值变化时该系统任务都显示当前的仿真时刻并分别用二进制和十六进制显示信号a和b的值 B)特殊符号 “#” 特殊符号 “#” 常用来表示延迟: 在过程赋值语句时表示延迟。 例: initial begin

您可能关注的文档

文档评论(0)

msb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8134116003000000

1亿VIP精品文档

相关文档