【摘要】:条件语句包含两种,一种是if语句,另一种是case语句。当我们说到if语句的时候,我们是在说if-else复合语句,else本身不能构成语句。if语句的结构如下:上面这个例子,最后这个else到底是应该对应哪个if?对于多层次嵌套的if语句,在格式上要注意多使用tab键,保证同级的if项、else项、elseif项上下对齐。实际上这段程序,这么复杂的if-else语句,综合以后的结果,先是sel1作为第一级MUX的选择控制信号,然后是sel0作为第二级MUX的选择控制信号。
条件语句包含两种,一种是if语句,另一种是case语句。这一节先介绍if语句。当我们说到if语句的时候,我们是在说if-else复合语句,else本身不能构成语句。
if语句的结构如下:
上面这个例子,最后这个else到底是应该对应哪个if?所以,在存在着多个if语句嵌套的时候,就会出现这种混乱情况。Verilog在编译的时候,默认把else与最近的没有else的if相关联,而这有时候和设计者的想法是不一样的。
对于多层次嵌套的if语句,在格式上要注意多使用tab键,保证同级的if项、else项、elseif项上下对齐。
if语句的表达式这一项,如果表达式的值为0、x或z,则认为为“假”;若表达式这一项为1,则认为为“真”。
例6.31:设计一个8-3优先编码器。
我们假设有八个输入in0~in7,三个输出out0~out2。优先的意思指的就是:输入的第七位,也就是in7的优先级最高,输入的in0的优先级最低,且低电平为有效输入。其真值表如表6.8所示:
表6.8 8-3优先编码器真值表
(www.xing528.com)
例6.32:下面这段代码,根据代码的描述,试着想象一下综合以后的电路结构。
下图是该例子综合以后的结果。
图6.1 示例综合的结果
忽略IB33和OB33PH都是pad,也就是类似焊盘的东西。一个电路的输入输出管脚在实物上,都得接到某个焊盘才能连接内部的走线。
忽略掉那么多pad以后,图中剩下的就是两级MUX,也就是2选一多路选择器。实际上这段程序,这么复杂的if-else语句,综合以后的结果,先是sel1作为第一级MUX的选择控制信号,然后是sel0作为第二级MUX的选择控制信号。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。