当前位置:   article > 正文

FPGA四选一多路选择器

四选一多路选择器

目录

前言

一、四选一多路选择器原理

二、原代码

1.Verilog源码

2.测试文本

3、仿真结果

总结


前言

这里是小白新手的课后作业之——基于FPGA的四选一数据选择器的设计!!


一、四选一多路选择器原理

四选一多路选择器共由四个1位的输入端口(int0、int1、int2、int3)、一个2位控制端口(sel)和一个输出端口(out)组成,原理如图1所示,真值表如下:

四选一多路选择器真值表
selout
00int0
01int1
10int2
11int3

图1 


二、原代码

1.Verilog源码

  1. //四位选一多路选择器
  2. // 定义模块名及输入输出变量
  3. module mux4_1 (
  4. input wire [0:0] int0 ,
  5. input wire [0:0] int1 ,
  6. input wire [0:0] int2 ,
  7. input wire [0:0] int3 ,
  8. input wire [1:0] sel ,
  9. output reg [0:0] out
  10. );
  11. //逻辑功能描述
  12. always @(*) begin
  13. case (sel)
  14. 2'b00 : out = int0; // sel=0,输出为int0
  15. 2'b01 : out = int1; // sel=0,输出为int1
  16. 2'b10 : out = int2; // sel=0,输出为int2
  17. 2'b11 : out = int3; // sel=0,输出为int3
  18. default : out = 1'bx ; //默认处理输出为空
  19. endcase
  20. end
  21. endmodule

2.测试文本

  1. `timescale 1ns/1ns // 定义时间单位和延时精度
  2. module mux4_1_tb(); // 定义模块名
  3. // 定义激励信号
  4. reg tb_int0 ;
  5. reg tb_int1 ;
  6. reg tb_int2 ;
  7. reg tb_int3 ;
  8. reg [1:0] tb_sel ;
  9. // 定义输出信号
  10. wire out;
  11. parameter TIME = 20;
  12. // 模块例化
  13. mux4_1 mux4_1_tb(
  14. .int0 (tb_int0) ,
  15. .int1 (tb_int1) ,
  16. .int2 (tb_int2) ,
  17. .int3 (tb_int3) ,
  18. .sel (tb_sel) ,
  19. .out (out)
  20. );
  21. // 模拟输入
  22. initial begin
  23. tb_int0 = 0; // 将tb_int0初始化为0
  24. forever begin
  25. #TIME;
  26. tb_int0 = ~tb_int0; //20个时间单位内,将tb_int0的值取反
  27. end
  28. end
  29. initial begin
  30. tb_int1 = 0; // 将tb_int1初始化为0
  31. forever begin
  32. #(TIME*2);
  33. tb_int1 = ~tb_int1; //40个时间单位内,将tb_int1的值取反
  34. end
  35. end
  36. initial begin
  37. tb_int2 = 0; // 将tb_int2初始化为0
  38. forever begin
  39. #(TIME*3);
  40. tb_int2 = ~tb_int2; //60个时间单位内,将tb_int2的值取反
  41. end
  42. end
  43. initial begin
  44. tb_int3 = 0; // 将tb_int3初始化为0
  45. forever begin
  46. #(TIME*4);
  47. tb_int3 = ~tb_int3; //80个时间单位内,将tb_int3的值取反
  48. end
  49. end
  50. initial begin
  51. tb_sel = 0; // 将tb_sel初始化为0
  52. forever begin
  53. #(TIME*6);
  54. tb_sel = ~tb_sel; //160个时间单位内,将tb_sel的值取反
  55. end
  56. end
  57. endmodule

3、仿真结果

总结

咔嚓又是一天

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/396604
推荐阅读
相关标签
  

闽ICP备14008679号