verilog 编程语句

verilog 编程语句

ID:43360920

大小:726.50 KB

页数:104页

时间:2019-10-08

verilog           编程语句_第1页
verilog           编程语句_第2页
verilog           编程语句_第3页
verilog           编程语句_第4页
verilog           编程语句_第5页
资源描述:

《verilog 编程语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、6.5条件语句与常用的高级程序语言一样,为了描述较为复杂的时序关系,VerilogHDL提供了条件语句供分支判断时使用。在可综合风格的VerilogHDL模型中常用的条件语句有if…else和case…endcase两种结构,用法和C程序语言中类似。两者相较,if…else用于不很复杂的分支关系,实际编写可综合风格的模块、特别是用状态机构成的模块时,更常用的是case…endcase风格的代码If_else语句Case语句6.5.1if-else条件语句if-else条件分支语句的作用是根据指定的判断条件是否满足来确定下一步要执行的操作。它在使用时可以采用如下三种形式:(1

2、)使用形式1:if(<条件表达式>)语句或语句块;在if-else条件分支语句的这种使用形式中没有出现else项这种情况下条件分支语句的执行过程将是:如果指定的“<条件表达式>”成立(也就是这个条件表达式的逻辑值为“1”),则执行条件分支语句内给出的“语句或语句块”,然后退出条件分支语句的执行。如果“<条件表达式>”不成立(也就是条件表达式的逻辑值为“0”、“x”或“z”时),则不执行条件分支语句内给出的“语句或语句块”,而是直接退出条件分支语句的执行。一条没有else选项的if语句映射到硬件上,形成的是一个锁存器例如下面这条条件分支语句:if(enable==1)out=

3、data_in;在执行时就会根据条件表达式“enable==1”是否成立来决定是否执行赋值语句“out=data_in;”:如果enable取值为“1”,则赋值语句得到执行,输出信号out得到data的值;如果enable的值为“0”、“x”或“z”(取值不为“1”),则不执行指定的赋值语句,输出信号out保持原有值不变。(2)使用形式2:if(<条件表达式>)语句或语句块1else语句或语句块2这种形式的条件分支语句将以如下方式得到执行:如果指定的“<条件表达式>”成立(也就是这个条件表达式的逻辑值为“1”),则执行条件分支语句第一行所指定的“语句或语句块1”,然后结束

4、条件分支语句的执行。如果“<条件表达式>”不成立,则执行由条件分支语句内第二行的else项所指定的“语句或语句块2”,然后结束条件分支语句的执行。一条带有else选项的if语句映射到硬件上,通常形成的是一个多路选择器(MUX)例如,下面这条条件分支语句:if(select==1)out=input1;elseout=input0;在执行时会根据条件表达式“select==1”是否成立来决定执行两条过程赋值语句中的哪一条。如果select取值为“1”,则第一行if这一项所指定的赋值语句“out=input1;”得到执行,输出信号out得到input1的取值;如果select

5、取值不为“1”(取值为“0”、“x”或“z”),则执行第二行else项所指定的赋值语句“out=input0;”,输出信号out将得到input0的取值。(3)使用形式3:if(<条件表达式1>)语句或语句块1elseif(<条件表达式2>)语句或语句块2……elseif(<条件表达式n>)语句或语句块nelse语句或语句块n+1在这种使用形式中一共出现了n+1个条件分支项,其中每个分支项都指定了当该分支项的条件满足时所要执行的操作。在执行这种形式的if-else条件分支语句时,将按照各分支项的排列顺序对各个条件表达式是否成立作出判断,当遇到某一项的条件表达式成立时,就执行

6、这一项所指定的“语句或语句块”。比如假设“<条件表达式m>”成立,那么就执行“语句或语句块m”。如果所有的条件表达式都不成立,则执行最后的else项(这一项没有给出条件表达式)所指定的操作(语句或语句块n+1)。这种形式的if-else条件分支语句实现了一种多路分支选择控制。比如在例6-21给出的模块中就使用了这种形式的if-else条件分支语句。【例6-21】第三种形式的if-else条件分支语句。modulesel_from_three(q,sela,selb,a,b,c);inputsela,selb,a,b,c;outputq;regq;always@(selaor

7、selboraorborc)beginif(sela)q=a;elseif(selb)q=b;elseq=c;endendmodule在例6-21模块内的if-else条件分支语句中出现了三个分支项,这个条件分支语句在执行时将依次对控制信号sela和selb的取值是否为“1”进行判断:(1)如果sela的取值为1,则第一个分支项的条件表达式“(sela)”成立,因而第一个分支项所指定的赋值操作“q=a;”将得到执行。(2)如果sela的取值不为1,而selb的取值为1,则第二个分支项的条件表达式“(selb)”成立

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。