关于VHDL中case语句多执行语句的书写方式(转载stackoverflow.com并做翻译汇总)

很多国内的教材对于case语句的讲解非常单一,比如:

1 [标号:]CASE 多值表达式 IS
2     WHEN 选择值 => 被赋值变量 <=赋值变量;
3     WHEN 选择值 => 被赋值变量 <=赋值变量;
4     WHEN 选择值 => 被赋值变量 <=赋值变量;
5     ...
6     WHEN OTHERS =>被赋值变量 <=赋值变量;
7     END CASE

这会造成CASE语句“在一个条件下只能执行一条语句”的经典误解,在翻阅了一些资料后我在StackOverflow上找到了CASE语句多执行条件的写法:

 1 CASE input24 IS
 2   WHEN "00" =>
 3     output0 <= '1' ;
 4     output1 <= '0' ;
 5     output2 <= '0' ;
 6     output3 <= '0' ;
 7 ...
 8   WHEN OTHERS => 
 9     output0 <= 'X'; 
10     output1 <= 'X';
11     output2 <= 'X'; 
12     output3 <= 'X';
13     END CASE;

这样就能实现在一个条件下对多个变量进行处理。

参考:http://stackoverflow.com/questions/25961126/multiple-assignments-in-case-statement-in-vhdl

转载请联系本人并说明出处,严禁商用,谢谢配合

本文仅发布于博客园,如在其他网站看到,皆为洗稿抄袭,特此声明

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

相关文章

  • div水平布局两边对齐

    方法一父容器div使用position:relative;,子div使用position:absolute;定位,注意边距问题html<divclass="div-container"> <divclass="div1">1</div> <divclass="div2">2</div> </div>复制css/*方法一*/ .div-container{ margin:10px0; padding:10px; width:400px; border:2pxsolid#ccc; position:relative; } .div1{ width:100px; height:50px; border:2pxsolidred; } .div2{ width:100px; height:50px; border:2pxsolidred; position:absolute; /*边距设置*/ right:10px; top:10px; }复制方法三父容器div使用

  • SAP Gateway Service Builder 里 Project 的概念

    如果SAP系统具有SAPGateway7.40或更高版本,则系统会安装核心组件SAP_GWFND,并包括IW_BEP的功能范围。如下图所示: GatewayServiceBuilder将开发人员创建服务所需的所有开发工件可视化,包括:SAPGateway运行时工件,例如模型提供者类(MPC)、数据提供者类(DPC)模型注释提供者类(AnnotationPC)和服务OData工件,例如实体集、实体类型和属性如下图所示:ServiceBuilder引入了一个新的服务开发概念,即Project.项目用于存储开发人员需要的所有工件,在统一的中央位置统一创建服务和模型。由于项目整合了所有相关数据,开发人员可以轻松地并行处理多个项目,并在生成和激活实际服务之前在项目之间重用数据。因此,项目为开发人员提供了随时中断服务开发和建模过程的自由,而不必担心运行时工件和丢失数据的风险。在项目中组织服务开发和建模过程的优势在于,整个项目数据可以在系统之间轻松传输,以实现最大效率和重用。笔者的系统上,SEGW支持下列这些类型的项目的创建:SAPGatewayServiceBuilder支持不同的开发方法和生命周

  • Postgresql源码(63)查询执行——子模块Executor(1)

    相关 《Postgresql源码(61)查询执行——最外层Portal模块》 《Postgresql源码(62)查询执行——子模块ProcessUtility》 《Postgresql源码(63)查询执行——子模块Executor(1)》 因为时间关系Executor分析拆成几篇,这是第一篇。1查询执行整体PG中的SQL在经过语法解析、查询编译后,进入执行模块,整形模块的分三个子模块:入口:portal子模块(下图蓝色) 处理DML的Executor子模块(下图绿色) 处理DDL的ProcessUtility子模块(下图橙色)SQL会在查询编译阶段得到plantree_list,在portal模块启动时(函数PortalStart),根据plantree_list中具体情况(函数ChoosePortalStrategy),来决定PortalStrategy的值,后面执行根据PortalStrategy来决定进入Executor还是ProcessUtility。本篇重点分析Executor子模块。2分析案例测试SQLdroptablecourse;droptableteacher;dro

  • 12 次 IT 招投标中受贿 73.7 万:判三年半

    被告人:郭某、男2014年至2019年间,郭某在担任盐城市经济和信息化委员会(以下简称盐城市经信委)信息化处处长、无线电业务处处长、信息资源安全与基础设施处处长、盐城市工业和信息化局(原盐城市经信委)信息资源安全与基础设施处处长等职务期间,利用职务便利,在工程项目的承接、论证、招投标、工程款支付等方面,为他人谋取利益,先后12次非法收受李某、王某甲、陈某某、王某乙的现金人民币163000元、港币600000元、美元10000元、购物卡6000元,合计价值人民币737077元。具体事实如下:12015年年初,郭某在担任盐城市经信委信息化处处长期间,利用负责信息化项目的职务之便,在信息化项目等方面为北京百灵天地环保科技有限公司华东分公司谋取利益,非法收受该公司业务员李某现金人民币100000元,承诺为该公司谋取利益。2 2016年4月至2017年春节前,郭某在担任盐城市经信委无线电业务处处长期间,利用负责信息化项目的职务之便,在信息化项目招投标、验收、工程款拨付等方面为南京南大尚诚软件科技有限公司谋取利益,先后2次非法收受该公司法定代表人、总经理王某甲现金600000元港币、10000美元

  • 给大家介绍一下实现Go并发同步原语的基石

    Go是一门以并发编程见长的语言,它提供了一系列的同步原语方便开发者使用,例如sync包下的Mutex、RWMutex、WaitGroup、Once、Cond,以及抽象层级更高的Channel。但是,它们的实现基石是原子操作。需要记住的是:软件原子操作离不开硬件指令的支持。本文拟通过探讨原子操作——比较并交换(compareandswap,CAS)的实现,来理解Go是如何借助硬件指令来实现这一过程的。什么是CAS看源码实现之前,我们先理解一下CAS。维基百科定义:CAS是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。CAS的实现思想可以用以下伪代码表示boolCas(int*val,intold,intnew) Atomically: if(*val==old){ *val=new; return1; }else{ return0; } 复制在sync/atomic/doc.go中,定义了一系列原

  • 看不懂bert没关系,用起来so easy!

    作者:十方bert的大名如雷贯耳,无论在比赛,还是实际上的应用早已普及开来。想到十方第一次跑bert模型用的框架还是paddlepaddle,那时候用自己的训练集跑bert还是比较痛苦的,不仅要看很多配置文件,预处理代码,甚至报错了都不知道怎么回事,当时十方用的是bert双塔做文本向量的语义召回。如今tf都已经更新到了2.4了,tensorflow-hub的出现更是降低了使用预训练模型的门槛,接下来带大家看下,如何花十分钟时间快速构建bert双塔召回模型。tensorflowhub打开tensorflow官网,找到tensorflow-hub点进去,我们就能看到各种预训练好的模型了,找到一个预训练好的模型(如下图),下载下来,如介绍所说,这是个12层,768维,12头的模型。 在往下看,我们看到有配套的预处理工具: 同样下载下来,然后我们就可以构建bert双塔了。Bert双塔importos importshutil importpickle importtensorflowastf importtensorflow_hubashub importtensorflow_textaste

  • SQL SERVER 自定义函数举例

    SQLSERVER在很多场景下需要自建函数来满足工作需求,本文就自建一个常用的字符串分割函数。需求说明将字符串按照指定的分隔符进行分割,并将结果按照从后往前的顺序倒序排列,拼接后的结果用‘/’符连接。(也可以按照指定符号分割为多个列,修改最后一部分即可)创建测试表及数据/*创建一张测试表及数据*/ createtabletmp(idintprimarykey,namevarchar(200)); insertintotmp select1,'组长,班长,校长,委员长'; insertintotmp select2,'连长,营长,师长,军长,司令'; insertintotmp select3,'村长,镇长,区长,市长,厅长,省长,部长';复制创建函数createFUNCTION[dbo].[f_split] ( @strNVARCHAR(500), @delimiterNVARCHAR(20) )RETURNS@table2TABLE(valNVARCHAR(500)) AS BEGIN DECLARE@indexINT,@

  • 如何在Power Query中获取数据——表格篇(2)

    样例表格:(一)从表头开始提取1.获取表的第一条记录Table.First(tableastable,optionaldefaultasany)asany第1参数是需要操作的表;第2参数是在空表的情况下的赋值;返回的结果如果是非空表则是第一条记录,格式是Record格式,如果是空表则是赋值的格式。例:Table.First(数据)=[姓名="张三",成绩=100,学科="数学"]解释:返回的是表的第一行,因为只有1行,所以是记录的格式,而不是表格式。Table.First(Table.FromRecords({}),{"空表"})={"空表"}解释:空表代表没有记录的表,但是可以有标题字段名。Table.FromRecords({})生成的是一个空表,例如Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一样的,生成的是不具备标题字段的空表;Table.FromValue({})生成的就是一个标题字段为Value的空表;因为是空表所以返

  • 互联网企业如何有效落地SDL

    前言笔者在实施SDL方面有多年的经验,实施过微软厚重的SDL,实施过互联网企业粗糙的SDL,目前在落地标准化自动化的SDL,在此将我的经验分享出来。为了让大家更好的理解SDL实施的过程,本文尽量以口语化叙事的方式描述SDL实施的过程。当然每家公司的devops和实际的开发流程不一样,所以实施SDL不能照搬照套,还是得结合自己公司的实际情况。越来越多的安全招聘JD要求会SDL建设,比如安全负责人、安全专家、web安全等。很多企业招聘JD写了要求会建设SDL,但是他们对SDL建设的目标可能不太清楚。或许有个模糊的概念SDL是保障开发安全的,只是看到别家在招聘SDLer所以自己也要招个SDLer。甚至面试的时候压根不会问与SDL相关的任何知识,等真正开始着手建设SDL的时候就是摸着石头过河,很容易被微软厚重的SDL建设思路带偏。一、企业为什么要做SDL?我们熟知的安全防御手法大多是边界防控,例如对外通过反向代理只开放80和443端口,一般还会在反向代理后面串行一个waf做攻击拦截。边界防控实施起来比较容易而且安全收益也非常可观,所以是企业建设初期必做的事情。但是对于正常开放出去的服务如何保证

  • MongoDB在这里比PostgreSQL慢了7倍

    编程应用、实战教程,不容错过最近有需求,要将一个局域网Web数据平台迁移到线上,顺带着,本地服务使用的PostgreSQL也要替换成国内某云的MongoDB。由于之前的Web框架选择的Django,为了能够最小限度地改动代码,并对接上MongoDB上已存在的数据库和数据,在一番对比之后(Djongo和MongoEngine),选择了MongoEngine这个对象文档映射(ODM)模块来替代Django原有的ORM。对照着MongoEngine的文档一顿操作,第一个页面迁移完成,赶紧打开看看。不看则已,一看瞎哭,页面加载完足足等了1、2、3、4、5、6、7、8、……27秒(线上MongoDB服务)而之前的系统这个页面打开只需要几秒钟: (本地PostgreSQL服务)这还了得,上线了不是给自己丢脸吗,赶紧排查测试。 在这个页面里面,主要数据操作是从数据库中查询出原始数据,然后加载到Pandas的DataFrame中,接着在Pandas中进行各种数据处理,最后返回JSON数据给前端进行渲染。数据库总的数据量为接近500万,最后的查询结果在3万左右。对各个环节分别进行测试发现,主要的时间消耗

  • redis url 格式

    ConnectionstoaRedisStandalone,Sentinel,orClusterrequireaspecificationoftheconnectiondetails.TheunifiedformisRedisURI.Youcanprovidethedatabase,passwordandtimeoutswithintheRedisURI.YouhavefollowingpossibilitiestocreateaRedisURI:UseanURI: RedisURI.create("redis://localhost/"); UsetheBuilder RedisURI.Builder.redis("localhost",6379).auth("password").database(1).build(); SetdirectlythevaluesinRedisURI newRedisURI("localhost",6379,60,TimeUnit.SECONDS); URIsyntaxR

  • 为什么说 Java 程序员必须掌握 Spring Boot ?

    SpringBoot使测试变得更简单SpringBoot对测试的支持不可谓不强大,SpringBoot内置了7种强大的测试框架:JUnit:一个Java 语言的单元测试框架SpringTest&SpringBootTest:为SpringBoot应用提供集成测试和工具支持AssertJ:支持流式断言的Java测试框架Hamcrest:一个匹配器库Mockito:一个javamock框架JSONassert:一个针对JSON的断言库JsonPath:JSONXPath库我们只需要在项目中引入spring-boot-start-test依赖包,就可以对数据库、Mock、Web等各种情况进行测试。SpringBootTest中包含了我们需要使用的各种测试场景,满足我们日常项目的测试需求。SpringBoot让配置变得更简单SpringBoot让配置变简单,说到这里我们就需要了解一下SpringBoot的核心思想:约定优于配置。那么什么是约定优于配置呢?约定优于配置(conventionoverconfiguration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做

  • 「实战篇」开源项目docker化运维部署-后端java部署(七)

    本节主要说说后端的部署需要注意的点,本身renren-fast这个项目就是通过springboot来进行开发的,springboot内置的有tomcat所以,咱们不用在容器内安装tomcat,直接用jar文件来进行运行。源码:https://github.com/limingios/netFuture/blob/master/后端/后端双机热备https://gitee.com/renrenio/renren-fastspringboot如何配置redis集群之前配置的redis集群,修改下单节点的吧,把所有的redis集群都放上去。spring: #环境dev|test|prod profiles: active:dev #jackson时间格式化 jackson: time-zone:GMT+8 date-format:yyyy-MM-ddHH:mm:ss http: multipart: max-file-size:100MB max-request-size:100MB enabled:true redis: open:false#是否开启redis缓存true开启false关

  • 如何保证你的智能手机安全和私密,手机安全需要做到的事

    近十年以来,智能手机的应用越来广泛,各种流行的App层出不穷,可以说iPhone这样的智能手机已经彻底改变了我们的生活和行为习惯。请允许我指出一个显而易见的事实,我们的智能手机不仅仅只是手机,它们是我们的日记,是我们的钱包,我们的新闻来源,我们的相机,我们的秘书,我们的游戏机等。由于这个原因,采取必要的预防措施以确保您的数据是安全的是很重要的。为了保证我们的用户信息安全,以及个人的隐私得到保障,许多手机厂商都在手机内部会配备了很多功能来帮助你,虽然没有100%的安全性,但绝对会让你的手机更加安全。 手机锁屏需要启用 你的手机应该启用锁屏功能。没有激活锁屏功能的手机太危险,因为从他们拿到手机的那一刻起,就可以访问手机上的一切内容。至少,您应该使用一个6位数字的PIN码,但是现在很多的设备都有其他的新的解锁方法,比如面部识别和指纹识别等,这些新技术安全性更好。如果你使用指纹识别或类似功能的手机,那么你应该立刻使用这些新解锁方式来代替数字密码。原因是这要比4或6位数的密码安全多了。 及时更新你的手机操作系统和各种App 智能手机更新带来的不仅仅是新功能,还有各种安全更新。软件漏洞经常被发现,

  • 【干货】胡晓:工业互联网:当智慧遇上机器

    本文共5400字,建议阅读时间10分钟本文以简短介绍通用电气公司(GE)为开场白,继而从物联网、智能机器、大数据及其分析四个方面描述了工业互联网,并展望了工业互联网的商业前景。最后以风力发电厂为案例,简要陈述了GE最新推出的工业互联网软件平台——Predix的功能,希望与各行业加强合作,促进这一平台的广泛应用。讲座全文:大家下午好,很高兴今天有这样的机会和大家来分享一下通用电气在大数据方面的一些探索。我来这个论坛不是来做GE的宣传的,但我还是要先介绍一下GE,这个跟我后面的演讲是有关系。GE有八个板块,金融业务在2008年以前占有50%左右的比重,最近几年这个板块逐渐的在缩小,我们的目标是要调整为70%的工业板块和30%的金融板块。在GE的工业板块里面,这是我们一些设备在全球的装机容量。在这儿我想的是GE的服务业务的引领模式。对于GE的工业板块,它的盈利最大的比重实际上是来自于它的服务,实际上工业板块70%的盈利来自于服务。比如说制造飞机发动机,GE销售飞机引擎的时候,是基本赚钱的,个别情况还会赔钱。这是不太容易理解的,为什么作为全球仅有的三家能制造商用飞机引擎的公司之一,卖这么高大上

  • webpack(6)webpack处理图片

    大家好,又见面了,我是你们的朋友全栈君。图片处理url-loader(webpack5之前的处理方式)在项目开发中,我们时长会需要使用到图片,比如在img文件夹中有图片test1.png,然后在normal.css中会引用到图片body{ background:url("../img/test1.png"); }复制但是此时,我们直接使用webpack打包是会报错的,我们需要安装url-loader,它是用于将文件转换为base64URI的loader。安装命令如下:npminstallurl-loader--save-dev复制url-loader功能类似于file-loader,但是在文件大小(单位为字节)低于指定的限制时,可以返回一个DataURL。接着我们在webpack.config.js中配置url-loader的设置module.exports={ module:{ rules:[ { test:/\.(png|jpg|gif|jpeg)$/i, use:[ { loader:'url-loader', options:{ limi

  • 如何排版 微信公众号「代码块」之 MarkEditor

    前段时间写过一篇文章如何排版微信公众号「代码块」,讲的是如何使用浏览器插件MarkdownHere来排版代码块。虽然用MarkdownHere排版出来的样式还不错,但存在一个问题,就是代码之间的换行会全部丢失,需要手动进行调整。如果文章中代码较多的话,调整起来还是挺费劲的。 而我近期写的文章,常常会罗列大量代码,导致每次在公众号发文,都要花1个多小时来调整样式,真是难受想哭。 双11期间,看到池建强老师公众号MacTalk的文章如何优雅的购买Mac软件。不出我意料,他果然推荐了一家专卖正版Mac软件的淘宝店铺数码荔枝。秉承「老池推荐必精品」的原则,我如愿的淘到了微信公众号排版神器MarkEditor。当时,该软件有着「双11特惠」和「老池特惠」双重加持,我仅用了76.5就拿下了官网售价128的Pro版本(得意的笑)。 促使我购买MarkEditor的原因是,它官方介绍能「支持导出为微信公众号文章格式」。我实在是被微信公众号的「代码块」排版折磨得不行,看到任何希望都想试试。 而MarkEditor没有令我失望,默认的3套微信样式都非常美观,最重要的是「代码块」直接就能正常展示,不用再

  • 如何快速掌握Javascript入门小知识

    如果你想要学一门语言,那就应该选择Javascript,为什么会这么说呢?因为当前推出的许多新技术都支持这个观点,Javascript作为一种直译式脚本语言,早是在HTML网页上使用,用来给HTML网页增加动态功能。 既然想要学习Javascript,就应该了解它所具备的一些特点: 1.脚本语言,Javascript是一种脚本语言,它是采用小程序段的方式来实现编程,作为一种解释性语言,是不需要进行编译的,只需在程序运行过程中逐行被解释。 2.简单性,Javascript的简单性主要体现在它是基于Javas的基本语句和控制流,是一种简单而紧凑的语言。 3.安全性,Javascript是一种安全性的语言,它不允许访问本地的硬盘,同时不能将数据存在服务器上,不允许对网络文档进行修改和删除,智能通过浏览器来实现信息浏览或动态交互,有效地防止数据丢失。 4.动态性,Javascript是动态的,可以直接对用户或者是客户输入做出响应而无需经过web服务器程序。 5.跨平台性,Javascript仅依赖于浏览器本身,与操作系统并没有太多的关系,只要是能运行浏览器的计算机,并可以支持Javascrip

  • Prometheus 历史数据删除

    检查是否开放管理API 检查Prometheus启动时是否增加参数web.enable-amdin-api,该参数必须指定 标记指标及时间范围内要删除数据 标记待删除数据api:POSThttp://127.0.0.1:9090/api/v1/admin/tsdb/delete_series?match[]={host="127.0.0.1"}&start=1640966400&end1640966460,该接口只负责标记,标记完成后在一段时间后自动删除,如果想立刻清除数据,参考下方请求标记数据 参数解释: match[]:必填项,值为指标名称/标签名称 start:可选,开始时间,10位时间戳 end:可选,结束时间,10位时间戳 当开始时间与结束时间未选时,则标记该指标/标签的所有数据 清理标记数据 清除标记数据api:POSThttp://127.0.0.1:9090/api/v1/admin/tsdb/clean_tombstones,调用该接口后立即生效 注意事项:在清理过程中出现磁盘空间使用率上升(还未发现具体原因),建议多次小范围删除数据,不建议单次

  • 在https页面中调用http的ajax接口:已阻止:混合内容

    考虑用户的实际情况 只有一条路可以走,就是把接口改成https

  • SQLite基础-8.子句(二)

    目录SQLite子句(二)1.GROUPBY子句2.HAVING子句3.LIMIT子句4.IFEXISTS和IFNOTEXISTS子句 SQLite子句(二) 1.GROUPBY子句 GROUPBY子句与SELECT语句一起使用,对数据进行分组。 位置:放在WHERE子句后,放在ORDERBY子句之前。 --语法 SELECT*FROMtable_name WHERE[condition] GROUPBYcolumn1,,column2,.. ORDERBYcolumn1DESC; --实例 select*fromlink_men wherename='eric' groupbyaddress; 复制 2.HAVING子句 HAVING子句通常与GROUPBY子句联合使用,用来过滤由GROUPBY子句返回的分组结果。 --语法 SELECT*FROMtable_name WHERE[condition] GROUPBYcolumn1 HAVING[condition] ORDERBYcolumn1DESC; --实例 SELECT*FROMtable_name GROUPBYadd

相关推荐

推荐阅读