05-译码器

1.译码器

  • 译码器是编码的逆过程,在编码时,每一种二进制代码都赋予了特定的含义,即都代表了一个确定的信号或者是对象;把代码状态的特定含义翻译出来的过程叫做译码,实现译码操作的电路称为译码器,或者说,译码器可以将输入二机制代码的状态翻译成输出信号,以表示其原来含义的电路
  • 译码器(decoder)是一类多输入多输出组合逻辑电路器件,其可以分为变量译码和显示译码两类

2.实现3-8译码器

  • 3-8译码器有3路输入,8路输出

2.1 框图和波形图



2.2 RTL

module decoder
(
  input wire in_1,
  input wire in_2,
  input wire in_3,
  output reg [8:0] out
);
 
  // 使用case语句
  // 使用if-else语句
  always@(*)
  begin
    case({in_1,in_2,in_3})
      3'b000 : out = 8'b0000_0001;
      3'b001 : out = 8'b0000_0010;
      3'b010 : out = 8'b0000_0100;
      3'b011 : out = 8'b0000_1000;
      3'b100 : out = 8'b0001_0000;
      3'b101 : out = 8'b0010_0000;
      3'b110 : out = 8'b0100_0000;  
      3'b111 : out = 8'b1000_0000;
      default : out = 8'b0000_0001;
    endcase
  end
endmodule
  • case语句和if-else语句都可以实现译码器,但是if-else语句实现有优先级,就是先后判断的顺序,而使用case语句实现则没有优先级的问题
  • 进行代码编译

2.3 Testbench

`timescale 1ns/1ns

module tb_decoder();
  reg in_1;
  reg in_2;
  reg in_3;

  wire [7:0] out;
    
  initial begin
    in_1 <= 1'b0;
    in_2 <= 1'b0;
    in_3 <= 1'b0;
  end
   
  initial begin
    $timeformat(-9,0,"ns",6);
    $monitor("@time:%t:in_1=%b,in_2=%b,in_3=%b,out=%b",$time,in_1,in_2,in_3,out);
  end 

 
  always #10 in_1 <= {$random} % 2;
  always #10 in_2 <= {$random} % 2;
  always #10 in_3 <= {$random} % 2;
  
  decoder decoder_inst(
    .in_1 (in_1),
    .in_2 (in_2),
    .in_3 (in_3),
    .out  (out)
  );
  
  
endmodule


本文转载于网络 如有侵权请联系删除

相关文章

  • Mysql事物锁等待超时 Lock wait timeout exceeded; try restarting transaction

    工作中同事遇到此异常,查找解决问题时,收集整理形成此篇文章。问题场景问题出现环境: 1、在同一事务内先后对同一条数据进行插入和更新操作; 2、多台服务器操作同一数据库; 3、瞬时出现高并发现象;不断的有一下异常抛出,异常信息:org.springframework.dao.CannotAcquireLockException: ###Errorupdatingdatabase.Cause:java.sql.SQLException:Lockwaittimeoutexceeded;tryrestartingtransaction ###Theerrormayinvolvecom.*.dao.mapper.PhoneFlowMapper.updateByPrimaryKeySelective-Inline ###Theerroroccurredwhilesettingparameters ###SQL:-----后面为SQL语句及堆栈信息--------复制原因分析在高并发的情况下,Spring事物造成数据库死锁,后续操作超时抛出异常。 Mysql数据库采用InnoDB模式,默认参数:in

  • shell 分析java进程cpu使用率过高的shell脚本

    分析java进程cpu使用率过高的shell脚本#!/bin/bash #@Function #Findoutthehighestcpuconsumedthreadsofjava,andprintthestackofthesethreads. # #@Usage #$./show-busy-java-threads.sh # #@authorJerryLee PROG=`basename$0` usage(){ cat<<EOF Usage:${PROG}[OPTION]... Findoutthehighestcpuconsumedthreadsofjava,andprintthestackofthesethreads. Example:${PROG}-c10 Options: -p,--pidfindoutthehighestcpuconsumedthreadsfromthespecifedjavaprocess, defaultfromalljavaprocess. -c,--countsetthethreadcounttoshow,defaultis5 -h,-

  • puppeteer使用指南-安装

    poppeteer是控制Chromium浏览器的一个js库,Chromium是谷歌开发的一款开源浏览器,与Chrome不同Chrome是不开源的,Chromium提供了很过供开发者使用的接口,开发者可以根据自己的需要通过相应的语言去驱动Chromium完成自己的项目,而puppeteer是用js语言开发的驱动Chromium的库,其他的语言如python使用python版本的puppeteer来驱动Chromium。首先第一步我们来安装puppeteer这个库,我们可以直接使用npm、cnpm、yarn这些工具直接来安装,如果我们直接安装puppeteer的话,会默认在项目中下载Chromium这个浏览器,如果你的安装工具使用的是国外的源,那么可能会下载失败,那该咋办呢?第一种方案,更改npm源,改为淘宝的源。第二种方案,在puppeteer1.7版本之后,puppeteer团队开发了一个精简版的puppeteer,名为puppeteer-core,这个库在用npm安装时不会下载Chromium,如果安装这个库的话需要手动下载Chromium,此时需要注意,下载和puppeteer-c

  • 空指针的传说

    空指针,号称天下最强刺客。他原本不叫这个名字,空指针原本复姓异常,空指针只不过是他的武器,但他杀戮过多,渐渐地人们只记住了空指针这三个字。天下武功,唯快不破,空指针的针,以快和诡异著称,稍有不慎,便是伤亡。......我叫铁柱,我来到这个奇怪的世界已经一年了,我等了一年,穿越附赠的老爷爷、戒指、系统什么的我到现在都没发现。而且这个世界看起来也太奇怪了,这里好像叫什么Java大陆,我只知道这个世界的最强者叫做Object,听说是什么道祖级的存在,我也不知道是什么意思,毕竟我现在好像还是个菜鸡,别的主角一年都应该要飞升仙界了吧,我还连个小火球都放不出来。哦,对了,上面的那段话是我在茶馆喝茶的时候听说书的先生说的,总觉得空指针这个名字怪怪的,好像在什么地方听说过。我的头痛的毛病又犯了,我已经记不起来我为什么来到这里了,我只记得我的名字叫铁柱,其他的,我只感觉这个奇怪的世界有一种熟悉,但是我什么都记不起来了。算了,得过且过吧。我准备去找空指针了,虽然听说他很可怕,但是好像听说他不是嗜杀之人,应该不会滥杀无辜吧,目前为止,我也只对这三个字有熟悉的感觉了,我一定要找到他,找回我的记忆!我打听了很久

  • VmWare安装centos7无法上网的解决方法

    VmWare安装centos7无法上网怎么办?下面为大家分享了解决方法,供大家参考,具体内容如下1.关闭防火墙systemctlstopfirewalld.service#关闭 systemctlrestartfirewalld.service#重启复制2.虚拟机->设置->网络适配器->选择NAT模式3.编辑->虚拟网络编辑器->添加网络->Vmnet8(DHCP和NAT设置都采用默认的)->确定4.配置虚拟网络vmnet8的dns5.配置虚拟机为静态IP,进入网卡编辑目录:cd/etc/sysconfig/network-scripts6.编辑网卡,viifcfg-ens33,你们的可能为ensxxx,跟据自己的机器而定,修改或增加下图的六个配置项,其中GATEWAY,DNS1由第三步生成。7.重启网卡ifdownens33 ifupens33 servicenetworkrestart复制以上就是本文的全部内容,希望对大家的学习有所帮助。

  • python基础面试题30问(附带答案)

    1、    闭包定义:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a,内层函数依旧传入一个参数b,内层函数使用a和b,最后返回内层函数)代码:defExFunc(n):       sum=n       defInsFunc():            returnsum+1         returnInsFunc2、    装饰器defdebug(func):   defwrapper():       print"[DEBUG]:enter{}()".format(func.__name__)       returnfunc()   returnwrapper@debugdefsay_hello():print"hello!"3、    迭代器1、可以直接作用于for循环的数据类型  第一类:集合数据类型,如list、tuple、dict、set、str等;  第二类:generator,包括集合定义generator和带yield的generator(也就是gene

  • CentOS 7 Galera Cluster安装全攻略

    最近Hive的原数据要用到mysql,所以又把GaleraCluster又装了一遍,虽然装过很多遍,但依然会有一些模糊的地方。所以大致记录下来分享出来。GaleraCluster必须安装在至少3台服务器上,作为全主无延迟集群,奇数台服务器是为了防止脑裂。首先要准备的文件如下安装之前,我们要安装一些准备的库:yuminstalllibaiogccgcc-c++boost-develsconscheck-developenssl-developenssh-clientsperl-DBD-MySQLperl-Time-HiResperl-Digestncrsynclsofgaleraautoconf大概就这些了吧,不排除会有遗漏,所以装galeracluster是很麻烦的事情。安装之前移除CentOS7自带的mysql库,这个之前博客有写过yumremovemariadb-libs-5.5.56-2.el7.x86_64然后开始安装rpm-ivh加文件名如rpm-ivhmysql-wsrep-libs-compat-5.6-5.6.36-25.20.el6.x86_64.rpm图片中所有的要

  • 《coredump问题原理探究》Linux x86版5.8节C风格数据结构内存布局之结构体数组结构体coredump

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/details/8846866 上一节已经阐述完毕结构体的特征了,需要一个coredump例子:(gdb)bt #00x00000000in??() #10x080485a1inresult(xuzhina_dump_c05_s3_ex*,int)() #20x080487f8inmain()复制从栈顶来看,顶层的地址竟然是0,eip的值也是0.会出现eip为0的情况,只可能是调用了函数指针,且函数指针为0.看一下result的汇编:(gdb)disassembleresult Dumpofassemblercodeforfunction_Z6resultP22xuzhina_dump_c05_s3_exi: 0x08048540<+0>:push%ebp 0x08048541<+1>:mov%esp,%ebp 0x08048543<+3>:push%ebx 0x08048544<+4>

  • 12.8 Nginx用户认证

    Nginx用户认证目录概要vim/usr/local/nginx/conf/vhost/test.com.conf//写入如下内容server { listen80; server_nametest.com; indexindex.htmlindex.htmindex.php; root/data/wwwroot/test.com; location/ { auth_basic"Auth"; auth_basic_user_file/usr/local/nginx/conf/htpasswd; } }复制yuminstall-yhttpdhtpasswd-c/usr/local/nginx/conf/htpasswdaming-t&&-sreload//测试配置并重新加载mkdir/data/wwwroot/test.comecho“test.com”>/data/wwwroot/test.com/index.htmlcurl-x127.0.0.1:80test.com-I//状态码为401说明需要验证curl-uaming:passwd访问

  • 怎么从安卓设备转移数据到苹果_安卓换苹果如何转移数据?

    大家好,又见面了,我是你们的朋友全栈君。可以用网盘工具来操作下。比方说用百度网盘,找到里面的“手机备份32313133353236313431303231363533e58685e5aeb931333431373266”功能,然后将数据都备份好。后面再到苹果手机上,安装一个百度网盘,然后将数据再保存到手机上就行了。手机上的数据要是不小心删除了,那可以通过强力恢复精灵找回(iPhone专用)。二、苹果手机数据转移到新iPhone1、借助iCloud云备份手机自带的云备份功能,肯定是可以用上的。①手机连接上WiFi,然后在手机“设置”中,依次点击“AppleID——iCloud——iCloud云备份”,开启iCloud云备份功能,再点击“立即备份”。②完成备份,就可以将这些数据再下载到新手机上了。可以先在新手机上,点击“设置——通用——还原——抹掉所有内容和设置”。当然,要是手机刚刚到手刚开机,那先按照提示操作。③当看到“应用与数据”时,点击“从iCloud云备份恢复”④登录AppleID,再选择备份进行恢复就行。2、借助iTunes备份恢复①可以先对旧设备进行备份处理。将手机连接到电脑上

  • 腾讯云负载均衡管理后端服务器

    负载均衡将请求路由至运行正常的后端服务器实例,首次使用负载均衡或根据业务需求,需要增加或删除后端服务器数量时,可按照本文指引进行操作。 前提条件需已创建负载均衡实例并配置监听器,详情请参见负载均衡快速入门。 操作步骤添加负载均衡后端云服务器 说明: 如果负载均衡实例与某个弹性伸缩组关联,则该组中的云服务器会自动添加至负载均衡后端云服务器。若从弹性伸缩组移除某云服务器实例,则该云服务器实例会自动从负载均衡后端云服务器中删除。 如需使用API添加负载均衡后端服务器,请参见绑定后端服务器到负载均衡接口说明。 若您的账户类型为传统账户类型,且实例的运营商类型为中国移动、中国电信或中国联通,则仅能绑定网络计费模式为按流量计费和共享带宽包的云服务器。账户类型详情请参见判断账户类型,运营商类型详情请参见运营商类型。 登录负载均衡控制台。 在“实例管理”页面的“负载均衡”页签中,单击目标负载均衡实例右侧操作列的配置监听器。 在配置监听器模块中,选择需要绑定后端云服务器的监听器。 HTTP/HTTPS监听器 在HTTP/HTTPS监听器区域,单击目标监听器左侧的+。 在展开的域名左侧单

  • 场景算法

    随机分红包   importjava.math.BigDecimal; importjava.util.*; publicclassMain{ staticvoidhb(doubletotal,intnum){ doublemin=0.01; doubleone=Math.random()+total*(1-0.8); BigDecimalone_bd=newBigDecimal(one); one=one_bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); total=total-one; BigDecimaltotal_bd=newBigDecimal(total); total=total_bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println("第1个红包:"+one+",余额为:"+total+"元"); for(inti=2;i<num;i++){ doublefree_avg=(total-(num-i

  • [SQL]行列转换

    行转列 今天做项目的时候遇到了一个新需求,要求做统计接口的时候显示为:{类别名称:总数} 之前做的显示效果是: { ​ “类别”:类别名称, ​ “总数”:总数 } 一开始百思不得其解,后来有人发了篇博客给我,恍然大悟。看来sql还有很多我们不了解的东西。 SELECT SUM(IF(`teshuzouye_type`='1',1,0))as'作业1', --if语句相当于一个三目运算符 --teshuzouye_type是用来分类的字段 --1是用来求和的值,这里也可以写成字段名 --0是指如果求和字段为null则默认值为0 SUM(IF(`teshuzouye_type`='2',1,0))as'作业2', SUM(IF(`teshuzouye_type`='3',1,0))as'作业3', SUM(IF(`teshuzouye_type`='4',1,0))as'作业4' FROMqy_special_task; 效果: +-------+-------+-------+-------+ |作业1|作业2|作业3|作业4| +-------+-------+-------+---

  • 在CentOS中将/var等已有目录挂载到新添加的硬盘

    1.查看当前硬盘使用状况: [root@gluster_node1~]#df-h Filesystem           Size UsedAvailUse%Mountedon /dev/mapper/VolGroup-lv_root                        35G  25G 8.3G 76%/ tmpfs                1.9G    0 1.9G&nbs

  • SSE – Server Sent Events – 服务端主动推送

    本页目录SSE介绍SSE的数据格式SpringBoot接入SSE前端代码后端代码测试SSE介绍SSE则是部署在HTTP协议之上的,现有的服务器软件都支持此协议。SSE是一个轻量级协议,相对简单;WebSocket是一种较重的协议,相对复杂。但SSE只支持单向交互(服务器给客户发送),Websocket支持双向交互。SSE默认支持断线重连,WebSocket则需要额外部署。数据格式方面,SSE使用的是UTF8编码的文本格式。SSE的HTTPresponse里headerContent-Type的值是text/event-stream。不可变!SSE的数据格式每个SSE的消息响应分为4个元素:retry:重试时间,单位毫秒,只能为数字(SSE请求失败,就会发送新的请求)id:消息ID(自定义)event:时间类型(自定义)data:消息的内容(自定义)下图是4个消息,注意,多个消息之间中间会有个空行(\n\n)。单个消息之间元素间隔是换行\nretry:5000 id:1cd7bb64-4341-4f5d-a690-4298b8a8ae20 event:eventType data:Sun

  • 30款Django 常用的软件包

    30款Django常用的软件包 Django是一款高级的PythonWeb框架,可以帮助开发者快速创建web应用。我们这里整理了30款Django开发中常用的软件包,学会使用它们可以节省大量开发时间,提高开发效率。下面一起来看下。 认证和授权 1.Pythonsocialauth 一款社交账号认证/注册机制,支持Django、Flask、Webpy等在内的多个开发框架,提供了约50多个服务商的授权认证支持,如Google、Twitter、新浪微博等站点,配置简单。 GitHub地址:https://github.com/pennersr/django-allauth 文档地址:https://django-allauth.readthedocs.io/en/latest/ 点评:增强Django内置的django.contrib.auth模块,提供登录、注册、邮件验证、找回密码等一切用户验证相关的功能。另外还提供OAuth第三方登录功能,例如国内的微博、微信登录,国外的GitHub、Google、facebook登录等,几乎囊括了大部分热门的第三方账户登录。配置简单,开箱即用。 pip

  • 转:RAID在企业服务器中的应用(RAID几种级别)

    http://blog.csdn.net/dinglang_2009/article/details/7960598

  • 查准率,查全率,真正例率,假正例率

    本篇对他们的定义不做深入探究,主要是用来对比方便记忆。 正例 反例 正例 TP TN 反例 FP FN 查准率:P=TPTP+FPP=\frac{TP}{TP+FP}P=TP+FPTP​准不准,竖相加 查全率:R=TPTP+TNR=\frac{TP}{TP+TN}R=TP+TNTP​全不全,横向加 真正例率:TPR=TPTP+FNTPR=\frac{TP}{TP+FN}TPR=TP+FNTP​主(正)对角线相加 假正例率:FPR=FPFP+TNFPR=\frac{FP}{FP+TN}FPR=FP+TNFP​副对角线相加此分子为FP

  • PHP实现加密的几种方式介绍

    1.MD5加密不可逆加密md5($password)2.Crype加密stringcrypt(string$str[,string$salt])不可逆3.Sha1加密stringsha1(string$str[,bool$raw_output=false])不可逆4.URL加密可逆加密urlencode(string$str)urldecode($encodeUrl)5.Base64信息编码加密base64_encode(string$data)base64_decode(string$data[,bool$strict=false])

  • Jmeter性能测试--工具使用

    http://www.cnblogs.com/fnng/archive/2012/12/29/2839420.html

  • elementui步骤条页面开发案例

    <template> <divid="bdy"> <divclass="tbody"> <el-steps:active="active"finish-status="success"> <el-steptitle="创建项目"></el-step> <el-steptitle="区域基地"></el-step> <el-steptitle="实验对象"></el-step> <el-steptitle="阶段周期"></el-step> <el-steptitle="属性"></el-step> </el-steps> <!--1创建项目--> <el-form:model="form":rules="projectRules"ref="form"label-width="100px"width="80px"style="margin-top:30px;"> <divclass

相关推荐

推荐阅读