基于FPGA的8选1数据选择器设计Verilog代码ISE仿真

名称:基于FPGA的8选1数据选择器设计Verilog代码ISE仿真(文末获取)

软件:ISE

语言:Verilog

代码功能:

分别使用f-else语句和case语句完成8选1数据选择器的设计并给出测试代码,以及功能仿真和时序仿真的波形图。

说明:使用下面给出的模块名和端口名完成设计代码

要求.jpg

设计源码(case)

//8选1数据选择器,使用CASE语句

module MUX_8_1(

input [7:0] I,//输入

input [2:0] S,//控制

output reg DATA   //输出

);

always@(S)

   case(S)//控制

       3'b000:DATA=I[0];

       3'b001:DATA=I[1];

       3'b010:DATA=I[2];

       3'b011:DATA=I[3];

       3'b100:DATA=I[4];

       3'b101:DATA=I[5];

       3'b110:DATA=I[6];

       3'b111:DATA=I[7];

       default:;

   endcase

endmodule

测试源码(case)

`timescale 1ns / 1ps

module test;

   // Inputs

   reg [7:0] I;

   reg [2:0] S;

   // Outputs

   wire DATA;

   // Instantiate the Unit Under Test (UUT)

   MUX_8_1 uut (

       .I(I),

       .S(S),

       .DATA(DATA)

   );

   initial begin

       // Initialize Inputs

       I = 8'b10100011;//输入

       //S为000~111共8种情况

       S = 3'b000;

       #100;

       S = 3'b001;

       #100;        

       S = 3'b010;

       #100;

       S = 3'b011;

       #100;        

       S = 3'b100;

       #100;        

       S = 3'b101;

       #100;

       S = 3'b110;

       #100;    

       S = 3'b111;

       #100;            

   end

     

endmodule

功能仿真

时序仿真

设计源码(if-else)

//8选1数据选择器,使用IF语句

module MUX_8_1(

input [7:0] I,//输入

input [2:0] S,//控制

output reg DATA   //输出

);

always@(S)

   if(S==3'b000)

       DATA=I[0];

   else if(S==3'b001)

       DATA=I[1];

   else if(S==3'b010)

       DATA=I[2];        

   else if(S==3'b011)

       DATA=I[3];        

   else if(S==3'b100)

       DATA=I[4];        

   else if(S==3'b101)

       DATA=I[5];        

   else if(S==3'b110)

       DATA=I[6];        

   else

       DATA=I[7];        

endmodule

测试源码(if-else)

`timescale 1ns / 1ps

module test;

   // Inputs

   reg [7:0] I;

   reg [2:0] S;

   // Outputs

   wire DATA;

   // Instantiate the Unit Under Test (UUT)

   MUX_8_1 uut (

       .I(I),

       .S(S),

       .DATA(DATA)

   );

   initial begin

       // Initialize Inputs

       I = 8'b10100011;//输入

       //S为000~111共8种情况

       S = 3'b000;

       #100;

       S = 3'b001;

       #100;        

       S = 3'b010;

       #100;

       S = 3'b011;

       #100;        

       S = 3'b100;

       #100;        

       S = 3'b101;

       #100;

       S = 3'b110;

       #100;    

       S = 3'b111;

       #100;            

   end

     

endmodule

功能仿真

时序仿真

部分代码展示:

//8选1数据选择器,使用CASE语句
module MUX_8_1(
input [7:0] I,//输入
input [2:0] S,//控制
output reg DATA   //输出
);
always@(S)
case(S)//控制
3'b000:DATA=I[0];
3'b001:DATA=I[1];
3'b010:DATA=I[2];
3'b011:DATA=I[3];
3'b100:DATA=I[4];
3'b101:DATA=I[5];

源代码

 扫描文章末尾的公众号二维码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值