赞
踩
目录
这里是小白新手的课后作业之——基于FPGA的四选一数据选择器的设计!!
四选一多路选择器共由四个1位的输入端口(int0、int1、int2、int3)、一个2位控制端口(sel)和一个输出端口(out)组成,原理如图1所示,真值表如下:
sel | out |
---|---|
00 | int0 |
01 | int1 |
10 | int2 |
11 | int3 |
图1
- //四位选一多路选择器
- // 定义模块名及输入输出变量
- 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 ; //默认处理输出为空
- endcase
- end
-
- endmodule
- `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的值取反
- end
- end
-
- initial begin
- tb_int1 = 0; // 将tb_int1初始化为0
- forever begin
- #(TIME*2);
- tb_int1 = ~tb_int1; // 每40个时间单位内,将tb_int1的值取反
- end
- end
-
- initial begin
- tb_int2 = 0; // 将tb_int2初始化为0
- forever begin
- #(TIME*3);
- tb_int2 = ~tb_int2; // 每60个时间单位内,将tb_int2的值取反
- end
- end
-
- initial begin
- tb_int3 = 0; // 将tb_int3初始化为0
- forever begin
- #(TIME*4);
- tb_int3 = ~tb_int3; // 每80个时间单位内,将tb_int3的值取反
- end
- end
-
- initial begin
- tb_sel = 0; // 将tb_sel初始化为0
- forever begin
- #(TIME*6);
- tb_sel = ~tb_sel; // 每160个时间单位内,将tb_sel的值取反
- end
- end
- endmodule
咔嚓又是一天
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。