- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 结构语句、系统任务、函数语句和显示系统任务 6.1 结构说明语句 * * Verilog语言中的任何过程模块都从属于以下四种结构的说明语句。 initial说明语句 (2) always说明语句 (3) task说明语句 (4) function说明语句 initial和always说明语句在仿真的一开始即开始执行。 initial语句只执行一次。相反,always语句则是不断地重复执行,直到仿真过程结束。 always语句后面跟着的过程块是否运行,则要看它的触发条件是否满足,如满足则运行过程块一次,再次满足再运行一次,直至仿真过程结束。 在一个模块中,使用initial和always语句的次数是不受限制的。 task和function语句可以在程序模块中的一处或多处调用。 6.1.1 initial语句 initial语句的格式如下: initial begin 语句1; 语句2; ...... 语句n; end 例6.1 用initial 块对存储器变量赋初始值 initial begin areg=0; //初始化寄存器areg for(index=0;indexsize;index=index+1) memory[index]=0; //初始化一个memory end 例6.2 用initial语句来生成激励波形 initial begin inputs = b000000; //初始时刻为0 #10 inputs = b011001; #10 inputs = b011011; #10 inputs = b011000; #10 inputs = b001000; end always语句由于其不断活动的特性,只有和一定的时序控制结合在一起才有用。 如果一个always语句没有时序控制,则这个always语句将会使仿真器产生死锁。 always areg = ~areg; 但如果加上时序控制,则这个always语句将变为一条非常有用的描述语句。 always #half_period areg = ~areg; 例6.5 reg[7:0] counter; reg tick; always @(posedge areg) begin tick = ~tick; counter = counter + 1; end always 的时间控制可以是沿触发也可以是电平触发的,可以单个信号也可以多个信号,中间需要用关键字 or 连接。 always @(posedge clock or posedge reset) begin … end always @(a or b or c) begin … end 边沿触发的always块常常描述时序行为,如有限状态机。如果符合可综合风格要求,则可通过综合工具自动地将其转换为表示寄存器组和门级组合逻辑的结构,而该结构应具有时序所要求的行为 电平触发的always块常常用来描述组合逻辑的行为。如果符合可综合风格要求,可通过综合工具自动将其转换为表示组合逻辑的门级逻辑结构或带锁存器的组合逻辑结构,而该结构应具有所要求的行为。 一个模块中可以有多个always块,它们都是并行运行的。 always块的or事件控制 有时,多个信号或者事件中任意一个发生的变化都能触发语句或语句块的执行。在Verilog语言中,可以使用“或”表达式来表示这种情况。由关键词“or”连接的多个事件名或信号名组成的列表称为敏感列表。关键词“or”被用来表示这种关系。 Verilog 1364-2001版本的语法中,对于原来的规定作了补充:关键词or也可以使用,来代替。使用,来代替关键词or也适用于跳变沿敏感的触发器。 //有异步复位的电平敏感锁存器 always @ ( reset or clock or d ) //等待复位信号reset 或 时钟信号clock 或 输入信号d 的改变 begin if ( reset ) //若 reset 信号为高,把q置零 q = 1 b0 ; else if ( clock ) //若clock 信号为高,锁存输入信号d q = d ; end * * *
文档评论(0)