Verilog新手上路学生实验

MUX41

verilog代码:

// module  top, 选择器(mux)的代码,
module top(
  IN0       ,   // input 1
  IN1       ,   // input 2
  IN2       ,   // input 3
  IN3       ,   // input 4
  S0        ,   // select
  S1        , 
  OUT       );  // out data

input IN0,IN1,IN2,IN3;// 选择器的四个输入数据信号
input S0,S1;              
output OUT;     // 选择器的输出数据信号
reg    OUT;
// 生成组合逻辑的代码
always @ (IN0 or IN1 or IN2 or IN3 or S0 or S1) begin
case({S1,S0})

 2'b00:OUT<=IN0;

 2'b01:OUT<=IN1;

 2'b10:OUT<=IN2;

 2'b11:OUT<=IN3;

default: OUT<=IN0;
endcase
end
endmodule
// endmodule top

RTL视图:
在这里插入图片描述
Flow Summary
在这里插入图片描述
在这里插入图片描述

4x4 crossbar switch circuit

verilog代码:

// module  top, a 4x4 crossbar switch circuit
module top(
  IN0       ,   // input 1
  IN1       ,   // input 2
  IN2       ,   // input 3
  IN3       ,   // input 4
  SEL0      ,   // select the output0 source 
  SEL1      ,   // select the output1 source 
  SEL2      ,   // select the output2 source 
  SEL3      ,   // select the output3 source 
  OUT0      ,   // output data 0
  OUT1      ,   // output data 1
  OUT2      ,   // output data 2
  OUT3      );  // output data 3

parameter WL = 16;
input [WL-1:0] IN0,IN1,IN2,IN3;
input SEL0,SEL1,SEL2,SEL3;
output[WL-1:0] OUT0,OUT1,OUT2,OUT3;

reg   [WL-1:0] OUT0,OUT1,OUT2,OUT3;
// get the OUT0
always @ (IN0 or IN1 or IN2 or IN3 or SEL0 or SEL1) begin
  if((SEL0)&&(SEL1))
    OUT0 = IN3;
  else if((!SEL0)&&(SEL1))
    OUT0 = IN2;
  else if((SEL0)&&(!SEL1))
	 OUT0 = IN1;
  else 
	 OUT0 = IN0;
end
// get the OUT1
always @ (IN0 or IN1 or IN2 or IN3 or SEL1 or SEL2) begin
  if((SEL1)&&(SEL2))
    OUT1 = IN3;
  else if((!SEL1)&&(SEL2))
    OUT1 = IN2;
  else if((SEL1)&&(!SEL2))
	 OUT1 = IN1;
  else
	 OUT1 = IN0;
end
// get the OUT2
always @ (IN0 or IN1 or IN2 or IN3 or SEL2 or SEL3) begin
  if((SEL2)&&(SEL3))
    OUT2 = IN3;
  else if((!SEL2)&&(SEL3))
    OUT2 = IN2;
  else if((SEL2)&&(!SEL3))
	 OUT2 = IN1;
  else 
	 OUT2 = IN0;
end
// get the OUT3
always @ (IN0 or IN1 or IN2 or IN3 or SEL3 or SEL0) begin
  if((SEL3)&&(SEL0))
    OUT3 = IN3;
  else if((!SEL3)&&(SEL0))
    OUT3 = IN2;
  else if((SEL3)&&(!SEL0))
	 OUT3 = IN1;
  else 
	 OUT3 = IN0;
end
endmodule
// endmodule top

RTL 视图:
在这里插入图片描述
Flow Summary
在这里插入图片描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值