第三节:多路选择器

2024-04-27 17:12
文章标签 选择器 多路 第三节

本文主要是介绍第三节:多路选择器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.二选一数据选择器,要求如下:

【注】 always语句块里赋值的变量需要是reg型

module fn_sw(a,b,sel,y);
input a,b,sel;
output y;
assign y = (sel==0)?(a&b):(a^b);
endmodule
`timescale 1ns/10ps
module fn_sw_tb;
reg a,b,sel;
wire y;fn_sw fn_sw(.a(a),.b(b),.sel(sel),.y(y)
);initial begin
a<=0;b<=0;sel<=0;
#10
a<=1;b<=1;sel<=0;
#10
a<=0;b<=1;sel<=1;
#10
a<=1;b<=0;sel<=1;
#10
a<=0;b<=0;sel<=0;
#10
$stop;
endendmodule

【注】 我们在上述代码中使用了assign,其实也可以尝试使用一下always

即将下面代码

assign y = (sel==0)?(a&b):(a^b);

更换为

reg y;//因为下面要改变y了,所以声明reg y;

always @(a or b or sel)//敏感列表(即括号中任意值改变,则执行下述代码)

begin

        if(sel==0)

                 begin

                        y<=(a&b);

                end

        else if(sel==1)

                begin

                        y<=(a^b);

                end//如果只有一个语句,就不用begin end块,为了养成良好习惯,还是写上;

end

显然,这个题使用assign相当于always更简单,但是有些题用assign是实现不了的,比如下一题; 

2. 四选一选择器

module fn_sw(a,b,sel,y);
input a,b;
input[1:0] sel;
output y;
reg y;
always @(a or b or sel)begin
case(sel)
2'b00: begin y<=a&b;end
2'b01: begin y<=a|b;end
2'b10: begin y<=a^b;end
2'b11: begin y<=~(a^b);end
endcase
end
endmodule
`timescale 1ns/10ps
module fn_sw_tb;
reg a,b;
reg[1:0] sel;
wire y;fn_sw fn_sw(.a(a),.b(b),.sel(sel),.y(y)
);initial begina <= 0; b <= 0; sel <= 2'b00; // 初始化为00#10a <= 1; b <= 1; sel <= 2'b00; // 然后变为00#10a <= 0; b <= 1; sel <= 2'b01; // 然后变为01#10a <= 1; b <= 0; sel <= 2'b01; // 再次变为01#10a <= 0; b <= 0; sel <= 2'b00; // 最后回到00#10$stop; // 停止仿真
endendmodule

 这其实是2位的sel来选择四种状态,所以是一个四选一选择器;

参考链接:精准空降 

这篇关于第三节:多路选择器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941066

相关文章

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

css选择器和xpath选择器在线转换器

具体前往:Css Selector(选择器)转Xpath在线工具

ExtMvc store不能通过xtype选择器得到的办法

store 不能通过xtype选择器得到,  init : function() {         this.control({                 'smsmenu gridpanel[name='company'] : {                                         render:function(grid,opts){

SFC CSS 功能:深层选择/插槽选择器/动态绑定

深层选择器​ 如果您希望样式中的选择器scoped“深入”,即影响子组件,则可以使用:deep()伪类: <style scoped>.a :deep(.b) {/* ... */}</style> 以上内容将被编译为: .a[data-v-f3f3eg9] .b {/* ... */} 提示 创建的 DOM 内容v-html不受范围样式的影响,但您仍然可以使用深

前端面试:浏览器是怎样解析CSS选择器的?

浏览器解析CSS选择器的过程是一个复杂而高效的过程,涉及多个步骤。以下是浏览器解析CSS选择器的基本流程: 构建DOM树: 浏览器首先解析HTML文档,构建DOM(文档对象模型)树。DOM树是HTML元素的层次结构表示。 构建CSS规则树: 浏览器解析CSS样式表,构建CSS规则树。每个CSS规则包含选择器和相应的样式声明。 选择器匹配: 浏览器遍历DOM树中的每个节点,并将其与CSS

div+css 选择器分组 属性选择器 css插入方法 css背景属性

1、CSS 概述: CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部样式表通常存储在 CSS 文件中 多个样式定义可层叠为一 2、选择器的分组 你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。用

css 类选择器 id选择器 html选择器 通配符选择器 父子选择器

1、css使用的基本语法: 选择器 { 属性1:属性值; 属性2:属性值; 属性3:属性值;          .          .          . } 2、Css使用的必要性: (1)、统一网页不同个体的风格 (2)、可以使用滤镜 3、Css中常用的4种选择器: (1)、类选择器,又叫class选择器:          类选择器格式: . 类选择器{

python学习第三节:创建第一个python项目

python学习第三节:创建第一个python项目 1.打开开发工具 2.新建项目 创建完成之后可以看到有个棕色的 venv 文件夹,这就是虚拟环境,不用管它,也不要动它。 这是项目在本地打开的样子,看看就好,别乱动。 在main.py里面点击运行,在下面控制台得到打印结果。 3.运行方式: 1.在运行main方法中右键选择运行 2.在左下角控制台上面有

vue 日期选择器 (DateTimePicker 日期时间选择器)

单选          <el-date-pickerv-model="value1"type="date"placeholder="选择日期"value-format="yyyy.MM.dd"@input="changeTime"></el-date-picker> // 日期选择changeTime(e) {console.log(e.replace(/\./g, "-"));},