首页 > 其他分享 >04-多路选择器

04-多路选择器

时间:2023-05-21 12:35:56浏览次数:44  
标签:多路 04 wire 信号 sel 选择器 out

1.多路选择器

  • 组合逻辑是Verilog设计中的一个重要组成部分,从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路,也没有反馈电路
    组合逻辑电路输出信号的电平变化仅仅与输入信号的电平变化有关,不涉及信号跳变沿的处理
  • 多路选择器,是数据选择器的别称,在多路数据传送过程中,能够根据需要将其中任意一路选择出来的电路,叫做数据选择器,也称作是多路选择器或者多路开关

2.二选一选择器

  • 输入两信号,在选择信号为高的时候输出第一个信号,选择信号为低的时候输出第二个信号
  • 在开发板上使用KEY1,KEY2作为两个信号输入,KEY3作为信号的选择,LED灯为输出

3.FPGA设计

框图与波形图

  • in_1和in_2信号是随机的

RTL

module mux2_1
(
  input    wire    [0:0]  in_1,
  input    wire           in_2,
  input    wire           sel,
  output   reg            out
);
  
  // always产生组合逻辑的时候使用*
  always@(*)
    if(sel == 1'b1)
      out <= in_1;
    else
      out <= in_2;
endmodule
  • 创建quartus项目,添加verilog代码,编译文件

testbench编写

`timescale 1ns/1ns

module tb_mux2_1();
  reg in_1;
  reg in_2;
  reg sel;
  wire out;

  initial begin
    in_1 <= 1'b0;
    in_2 <= 1'b0;
    sel <= 1'b0;
  end

  always #10 in_1 <= {$random} % 2;
  
  always #10 in_2 <= {$random} % 2;
  
  always #10 sel <= {$random} % 2;
  
  initial begin
    $timeformat(-9,0,"ns",6);   //-9表示以ns的时间显示时间 10^-9表示ns,10^-3表示ms
                         // 0表示小数点后打印的位数
                        // 最小显示位数6个
    $monitor("@time %t:in_1=%b in2=%b out=%b",$time,in_1,in_2,out);
                        // %t 是时间的占位符  $time使用%t占位
  end

  
  // 例化module
  mux2_1 mux2_1_inst(
    .in_1 (in_1),
    .in_2 (in_2),
    .sel  (sel ),
    .out  (out )
  );
endmodule
  • 在quartus中添加仿真文件
  • 设置仿真格式
  • 在modelsim中进行仿真

// 其他方式实现
// 方式2
always@(*)
  case(sel)
    1'b1:out = in_1;
    1'b0:out = in_2;
    default : out = in1;
  endcase

// 方式3
assign out = sel ? in_1 : in_2;

标签:多路,04,wire,信号,sel,选择器,out
From: https://www.cnblogs.com/Icer-newer/p/17418266.html

相关文章

  • 基础选择器之标签选择器
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatib......
  • 【代码随想录算法训练营第一天】704. 二分查找、27. 移除元素
    Day1-数组Leetcode704二分查找初解已经不记得二分查找了,遍历找O(n)其实也过了,只是借此复习一下二分,确实快很多。二分的前提条件题目里也都明示了:无重复,(从小到大)排序。我没有用到这个条件,自然时间复杂度高于最优解。看完解答我再看了一眼题目的标题,才知道是考BinarySearch嗯......
  • Dockfile练习一:给ubuntu1804设置Java环境
    [root@mondoopt]#catDockerfile#BaseimageFROMubuntu:18.04#MAINTAINERMAINTAINERzhangjq<[email protected]># 将宿主机的软件包,复制到容器里的/usr/local/src目录下面去ADDjdk-8u321-linux-x64.tar.gz/usr/local/src/# 将上面的容器软件包进行解压,解压到jdk1.8.......
  • Ubuntu20.04清华版配置以及ROS的安装和rosdep的初始化
    一、配置Linux清华镜像源这里我以 Ubuntu20.04LTS 为例来配置 清华源首先进入清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn)在列表里选择自己的系统,这里我选择的是 Ubuntu,点击后面的问号图案    进入后选择自己的系统版本 20.04LTS 随即文......
  • 安装ubuntu22.04.2后的操作
    一、更新系统指令一:sudoapt-getupdate指令二:sudoapt-get-ydist-upgrade指令三:sudoapt-getclean说明:清除更新时下载回来的软件包。指令四:sudoapt-getautoremove说明:自动清除更新后用不到的旧版本文件(例如旧的核心文件)备注:若不及时移除旧核心文件,容易造成/boot空......
  • 代码随想录算法训练营第十一天|20. 有效的括号、1047. 删除字符串中的所有相邻重复项
    【参考链接】20.有效的括号【注意】1.括号匹配是使用栈解决的经典问题。2.这个命令最后进入a目录,系统是如何知道进入了a目录呢,这就是栈的应用(其实可以出一道相应的面试题了)。3.有三种不匹配的情况,第一种情况,字符串里左方向的括号多余了;第二种情况,括号没有多余,但是括号的......
  • Ubuntu 22.04 安装中文输入法
    安装命令sudoaptinstall-yfcitx5fcitx5-chinese-addonsfcitx5-frontend-gtk4sudoaptremoveibussudoaptautoremove参考链接Ubuntu22.04安装Fcitx5中文输入法(详细)......
  • 【P4331 [BalticOI 2004]】Sequence 数字序列 题解(左偏树维护动态区间中位数)
    左偏树维护动态区间中位数。传送门P4331BalticOI2004Sequence数字序列。Solution1我的思路和题解前半部分完全重合了((如果按照单调不增去分割\(a\)序列的话,对于每一段我们能很简单地得出它的最佳答案:中位数。发现严格单调很难做,很难拿捏,考虑对\(a\)序列的每一项都进......
  • [AGC049D] Convex Sequence
    [AGC049D]ConvexSequence给定整数\(n\)和\(m\),问有多少个长为\(n\)的非负整数数列\(A\),满足以下条件:\(A_1+A_2+\ldots+A_n=m\)对任意\(i(2\leqi\leqN-1)\),都有\(2A_i\leqA_{i-1}+A_{i+1}\)答案对\(10^9+7\)取模。\(\texttt{datarange}\):\(n,m\le......
  • Day04 drf之source序列化字段定制与反序列化校验、modelserializer使用
    今日内容1序列化高级用法之source(了解)#1创建了5个表(图书管理的5个)#2对booke进行序列化#总结:source的用法 -1修改前端看到的字段key值---》source指定的必须是对象的属性 book_name=serializers.CharField(source='name')-2修改前端看到的value值,---......