#130. if…else…语句

    ID: 130 Type: Default 1000ms 256MiB

if…else…语句

题目描述

if语句用于过程块内部,其对应的电路是二选一的选择器,

image

以下述代码为例:

always@(*)

begin

if(condition) out = x;

else out = y;

end

上述代码与下面的assign语句完全等效:

assign out = (condition) ? x : y;

试创建一Verilog模块,分别采用assing语句和过程块内的if语句实现下述选择器电路:

image

Hint:

1.if…else…可以嵌套使用,如

if … 
else if… 
else if… 
else…

2.使用if语句描述组合逻辑时,务必加上else语句,以免产生锁存器(数字电路设计中应尽力避免产生锁存器)

3.本题两个输出信号波形其实是完全一致的,原则上是为了训练大家采用assign和过程块内的if语句使用,所以希望大家能够两种方式都各自尝试一下

输入格式

信号a, b, 选择信号sel_b1, sel_b2

输出格式

通过assign语句选择的信号out_assign 通过if语句选择的信号out_always

示例代码

module top(
    input a,
    input b,
    input sel_b1,
    input sel_b2,
    output wire out_assign,
    output reg out_always); 
// 请用户在下方编辑代码

//用户编辑到此为止
endmodule