- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
9.3.3VerilogHDL行为语句行为描述语句包括过程语句、赋值语句、条件语句等,以下介绍这3种常用的语句。1.always过程语句always过程语句后跟着的过程块可以不断重复执行,只要触发条件满足就可以,即满足一次执行一次,而且是可综合的。always@(敏感信号列表)begin//过程赋值//if-else,case等选择语句end9.3.3VerilogHDL行为语句敏感信号列表的作用是用来激活always过程语句的执行;只要敏感信号列表中某个信号发生变化,就会引发块内语句的执行。敏感信号可以分为两种类型:一种为电平敏感型,一种为边沿敏感型。@(A)//当信号A的值发生变化时敏感信号列表主要有以下几种格式:@(AorB)//当信号A或B的值发生变化时@(posedgeCLK) //当CLK上升沿到来时@(negedgeCLK) //当CLK下降沿到来时@(posedgeCLKornegedgeRST) //当CLK的上升沿或RST的下降沿到来时9.3.3VerilogHDL行为语句【例9.3-4】4选1数据选择器的描述。moduleMUX_41(Y,A,B,C,D,SEL);inputA,B,C,D;input[1:0]SEL;outputY;regY;always@(AorBorCorDorSEL)case(SEL) 2b00:Y=A; 2b01:Y=B;2b10:Y=C; 2b11:Y=D;default:Y=2bx;endcaseendmodule//always过程中只允许对寄存器型的信号进行赋值。9.3.3VerilogHDL行为语句【例9.3-5】同步置数、同步清零的计数器。moduleCOUNT(CLK,CLR,LD,D,Q);input[7:0]D;inputLD,CLR,CLK;output[7:0]Q;reg[7:0]Q;always@(posedgeCLK) beginif(!CLR)Q<=0; elseif(!LD)Q<=D; elseQ<=Q+1; endendmodule//CLK上升沿触发//同步清零,低电平有效//同步置数,低电平有效//8位二进制加法计数器9.3.3VerilogHDL行为语句思考1:异步清零如何描述?【例9.3-5】具有异步清零的D触发器VerilogHDL代码。moduleDFFC(D,CLK,RD,Q);inputD,CLK,RD;outputregQ;always@(posedgeCLKornegedgeRD)beginif(!RD)Q=1d0;elseQ=D; endendmodule思考2:异步清零信号RD为电平有效,敏感信号表中能否改为@(posedgeCLKorRD)?9.3.3VerilogHDL行为语句2.持续赋值语句持续赋值语句用来描述组合逻辑,它只能对连线型变量进行赋值,不能对寄存器型变量进行赋值。【例9.3-6】用持续赋值语句实现4位全加器。assign连线型变量名=赋值表达式;moduleADDR_4(A,B,CI,SUM,CO);input[3:0]A,B;inputCI;output[3:0]SUM;outputCO;assign{CO,SUM}=A+B+CI;endmodule9.3.3VerilogHDL行为语句3.过程赋值语句过程赋值是在always语句内的赋值,它只能对寄存器数据类型的变量赋值。过程赋值语句分为阻塞型赋值和非阻塞赋值两种。(1)阻塞赋值方式阻塞赋值用“=”进行赋值。如果一个变量通过阻塞赋值语句赋值,则这个新赋的值会被该块中所有的后续语句使用。如果在一个语句块中有多条阻塞赋值语句,则前面赋值语句没有完成之前,后面赋值语句不能被执行,仿佛被阻塞一样。9.3.3VerilogHDL行为语句【例9.3-7】阻塞赋值举例。moduleB
文档评论(0)