//////////////////////////////////////////////////////////////////////////////////
//该程序完成通过多路选择器MUX完成总线读写的功能。
module MuxBus(input request1,input request2,input request3,input request4,input[:] unit0_out,input[:] unit1_out,
input[:] unit2_out,input[:] unit3_out,
output[:] unit0_in, output[:] unit1_in, output[:] unit2_in, output[:] unit3_in);
reg[:] sel;
reg[:] bus;
always@(request1,request2,request3,request4)
begin
casex({request1,request2,request3,request4})//注意这里要想使用这种优先级编码译码器,用的是casex,而不是case
'b0001:sel=2'b00; //casex表示不关心x,z,?这三种符号
'b001x:sel=2'b01;
'b01xx:sel=2'b10;
default:sel='b11; endcase
end
always@(sel,unit0_out,unit1_out,unit2_out,unit3_out)
begin
case(sel)
'b00:bus=unit0_out;
'b01:bus=unit1_out;
'b10:bus=unit2_out;
'b11:bus=unit3_out;
endcase
end
//仔细分析就知道下述代码从逻辑上和上述代码有冲突,sel作为选择信号,不可能选择了某个器件后,同时对总线进行读和写的操作,
//总线某一时刻只能处于读状态或者写状态。如果对总线进行读或者写,需要读写控制信号
/*always@(sel,bus)
begin
case(sel)
2'b00:unit0_in=bus; //同时,这样的代码书写产生了锁存器单元,比如sel=2'b01时,unit0,2,3_in这三个器件只能保持它原来的值。
2'b01:unit1_in=bus;
2'b10:unit2_in=bus;
2'b11:unit3_in=bus;
endcase
end
*/ //不产生锁存的条件在于对同一个变量满足所有的情况,并不单单是case后面的变量,写出了所有情况即可,要注意不同变量存在时导致的锁存
assign unit0_in=bus;
assign unit1_in=bus;
assign unit2_in=bus;
assign unit3_in=bus;
endmodule

多路选择器实现总线结构——Verilog的更多相关文章

  1. Verilog中锁存器与多路选择器

    Verilog中锁存器与多路选择器 Verilog是一种硬件描述语言,它代表的是硬件. Verilog代表的就是逻辑门和连接线. 对于一个always@(*)控制的块而言,只要块中的表达式包含的任意的 ...

  2. 多路选择器,加法器原理及verilog实现

    1.数据选择器是指经过选择,把多个通道的数据传到唯一的公共数据通道上.实现数据选择功能的逻辑电路称为数据选择器,它的作用相当于多个输入的单刀多掷开关.本例程以四选一数据选择器(电平触发)为例. 四选一 ...

  3. 多路选择器(multiplexer)简介

    1.多路器简介 简称:多路器 功能:多输入  单输出   组合逻辑电路 2.verilog代码实现: module Mux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8 ...

  4. FPGA学习笔记(四)——Verilog基本语法

    ###### [该随笔部分内容转载自小梅哥] ######### 组合逻辑:    多路选择器.加法器.译码器.乘法器 时序逻辑:    计数器.分频器.定时器.移位寄存器 一.Verilog文件的基 ...

  5. Verilog笔记——Verilog数字系统设计(第二版)夏宇闻

    本片记录Verilog学习笔记,主要是和以往用的C语言的不同之处,以例子.代码的形式记录.学习以<Verilog数字系统设计>(第二版)为参考资料,援助作者夏宇闻. 1. C语言和Veri ...

  6. 可参数化的带优先级的数据选择器的FPGA实现方式探讨

    在FPGA设计中,大部分情况下我们都得使用到数据选择器.并且为了设计参数化,可调,通常情况下我们需要一个参数可调的数据选择器,比如M选1,M是可调的参数. 如果,数据选择器是不带优先级的,我们可以使用 ...

  7. verilog语法实例学习(4)

    Verilog模块 Verilog中代码描述的电路叫模块,模块具有以下的结构: module module_name[ (portname {, portname})]; //端口列表 [parame ...

  8. Verilog中的UDP

    概述 Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP).通过UDP,可以把一块组合逻辑电路或者时序逻辑电路封装在一个U ...

  9. FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用

    一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...

随机推荐

  1. Oracle EBS json

    JSON:  JavaScript 对象表示法 JavaScript Object Notation JSON 是存储和交换文本信息的语法.类似XML. JSON 比 XML更小.更快,更易解析. 使 ...

  2. 当年写的如何成为一名MSSQL DBA

    很多开发人员都想成为一名数据库培训,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我        做DBA工作和面试DBA时,整理的一些DBA方面的三十个问 ...

  3. SqlServer误删数据恢复

    误删数据,操作步骤: 第一步: 找到误删的数据库之前备份文件. 第二步: 1,修改数据库备份模式为:大容量日志 2,修改访问限制为:SINGLE_USER(单用户模式) 第三步: 执行sql一条一条执 ...

  4. Python3中操作字符串str必须记住的几个方法

    几个Python的字符串常用内建函数 1.方法:Python3 isdigit()方法 描述:Python isdigit() 方法检测字符串是否只由数字组成. 语法:str.isdigit() 参数 ...

  5. 三星笔记本进入BIOS后找不到U盘启动项/快速启动键F12没有反应

    分析:BIOS开启了 Fast Bios Mode 解决方法: 开机按F2进入BIOS设置,选择Advanced菜单下Fast Bios Mode,设置为 Disabled,按F10键保存退出,重启时 ...

  6. LeetCode算法题-Ugly Number(Java实现-四种解法)

    这是悦乐书的第199次更新,第208篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第64题(顺位题号是263).编写一个程序来检查给定的数字是否是一个丑陋的数字.丑陋的数 ...

  7. Java数据结构简述

    1.数组 概念:一个存储元素的线性集合. 数组声明和创建: dataType[] arrayRefVar = new dataType[arraySize]; 二维数组(多维数组)声明和创建: dat ...

  8. MVC四大筛选器—ExceptionFilter

    该筛选器是在系统出现异常时触发,可以对抛出的异常进行处理.所有的ExceptionFilter筛选器都是实现自IExceptionFilter接口 public interface IExceptio ...

  9. 让vue-cli脚手架搭建的项目可以处理vue文件中postcss语法

    图中&属于postcss的语法,这样书写样式可以清楚的看出选择器之前的层级关系,非常好用. 在利用vue-cli脚手架搭建的项目中如果不配置是不支持这种写法的,这样写不会报错,但是样式不生效. ...

  10. MySQL高级知识(十一)——Show Profile

    前言:Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量.默认情况下处于关闭状态,并保存最近15次的运行结果. 1.分析步骤 # ...