基于FPGA的2选1多路选择器设计

1. 项目介绍

  多路选择器,也叫数据选择器或多路开关,在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路。数据选择器用于控制有效数据的输出,能够通过地址选择线来选定相应的通道作为输出,提高了数据的传输效率。(数据分配器用于数据的传输途径,在信号传输过程中能够通过地址选择线选择传输信道)。

2. 设计要求

  设计一个2选1多路选择器,输入有两个单bit信号,和一个单bit的选择信号。当选择信号为低电平时,将第一路信号输出,当选择信号为高电平时,将第二路信号输出。

3. 设计原理

  该设计命名为mux2_1,第一路信号命名为dataa,第二路信号命名为datab,选择信号命名为sel,输出信号命名为odata,系统框图如下图所示。

根据设计要求,得真值表:

dataa datab sel odata
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

  根据真值表,得到逻辑表达式:

 

  转化为Verilog表达式为

Odata = datab&sel | dataa&(~sel);

4. 设计实现

复制代码
 1 module mux2_1(
 2     
 3     input        wire                dataa,
 4     input        wire                datab,
 5     input     wire                 sel,
 6     
 7     output     wire                 odata
 8 );
 9 
10     assign odata = (datab & sel) | (dataa & (~sel));
11 
12 endmodule 
复制代码

5. 仿真验证

复制代码
 1 `timescale 1ns/1ps
 2 
 3 module mux2_1_tb();
 4 
 5     reg                dataa;
 6     reg                datab;
 7     reg                 sel;
 8 
 9     wire                 odata;
10     
11     mux2_1 mux2_1_inst(
12         .dataa            (dataa),
13         .datab            (datab),
14         .sel                (sel),
15         .odata            (odata)
16     );
17     
18     initial begin
19         dataa = 1'b0; datab = 1'b0; sel  = 1'b0; #20;
20         dataa = 1'b0; datab = 1'b0; sel  = 1'b1; #20;
21         dataa = 1'b0; datab = 1'b1; sel  = 1'b0; #20;
22         dataa = 1'b0; datab = 1'b1; sel  = 1'b1; #20;
23         dataa = 1'b1; datab = 1'b0; sel  = 1'b0; #20;
24         dataa = 1'b1; datab = 1'b0; sel  = 1'b1; #20;
25         dataa = 1'b1; datab = 1'b1; sel  = 1'b0; #20;
26         dataa = 1'b1; datab = 1'b1; sel  = 1'b1; #20;
27     end 
28 
29 endmodule 
复制代码

参考资料:

  (1)陪您一起学习FPGA-郝旭帅团队_哔哩哔哩_bilibili

posted @   豌豆茶  阅读(2163)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示