目录
前言
一、四选一多路选择器原理
二、原代码
1.Verilog源码
2.测试文本
3、仿真结果
总结
前言
这里是小白新手的课后作业之——基于FPGA的四选一数据选择器的设计!!
一、四选一多路选择器原理
四选一多路选择器共由四个1位的输入端口(int0、int1、int2、int3)、一个2位控制端口(sel)和一个输出端口(out)组成,原理如图1所示,真值表如下:
sel | out |
---|---|
00 | int0 |
01 | int1 |
10 | int2 |
11 | int3 |
图1
二、原代码
1.Verilog源码
//四位选一多路选择器 // 定义模块名及输入输出变量module mux4_1 ( input wire [0:0] int0 , input wire [0:0] int1 , input wire [0:0] int2 , input wire [0:0] int3 , input wire [1:0] sel , output reg [0:0] out ); //逻辑功能描述always @(*) begin case (sel) 2'b00 : out = int0; // sel=0,输出为int0 2'b01 : out = int1; // sel=0,输出为int1 2'b10 : out = int2; // sel=0,输出为int2 2'b11 : out = int3; // sel=0,输出为int3 default : out = 1'bx ; //默认处理输出为空 endcaseend endmodule
2.测试文本
`timescale 1ns/1ns // 定义时间单位和延时精度module mux4_1_tb(); // 定义模块名// 定义激励信号 reg tb_int0 ; reg tb_int1 ; reg tb_int2 ; reg tb_int3 ; reg [1:0] tb_sel ;// 定义输出信号 wire out;parameter TIME = 20;// 模块例化mux4_1 mux4_1_tb( .int0 (tb_int0) , .int1 (tb_int1) , .int2 (tb_int2) , .int3 (tb_int3) , .sel (tb_sel) , .out (out));// 模拟输入initial begin tb_int0 = 0; // 将tb_int0初始化为0 forever begin #TIME; tb_int0 = ~tb_int0; // 每20个时间单位内,将tb_int0的值取反 endendinitial begin tb_int1 = 0; // 将tb_int1初始化为0 forever begin #(TIME*2); tb_int1 = ~tb_int1; // 每40个时间单位内,将tb_int1的值取反 endendinitial begin tb_int2 = 0; // 将tb_int2初始化为0 forever begin #(TIME*3); tb_int2 = ~tb_int2; // 每60个时间单位内,将tb_int2的值取反 endendinitial begin tb_int3 = 0; // 将tb_int3初始化为0 forever begin #(TIME*4); tb_int3 = ~tb_int3; // 每80个时间单位内,将tb_int3的值取反 endendinitial begin tb_sel = 0; // 将tb_sel初始化为0 forever begin #(TIME*6); tb_sel = ~tb_sel; // 每160个时间单位内,将tb_sel的值取反 endendendmodule
3、仿真结果
总结
咔嚓又是一天
版权声明:本文为博主作者:L-湘琴原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/2301_76461741/article/details/131837452