verilog基础语法之比较器

逻辑运算符以及逻辑电路概述

逻辑运算符常用于条件判断语句,输出为布尔值True/False。逻辑运算符是基于比较器构造的。比较器电路是产生逻辑比较的本质;比较器电路的复杂度与位宽和比较类型相关;一般情况下可以先构造基本比较器,其他比较器由基本比较器合成。基本的比较器是>,==,<。其他逻辑运算符是由这三个基本比较器构造成的。>=比较器是由<比较器取反得到。!=比较器由==取反得到。<=比较器由>比较器取反得到。逻辑非比较器 !A≡(A==0)。逻辑与A&&B≡(A!=0)&(B!=0)。逻辑或A||B≡(A!=0)|(B!=0)。

逻辑运算符如下:

// The forllowing logical operators are used in conditional TRUE/FALSE statements 
// such as an if statement in order to specify the condition for the operation.
// 
//    ! .... Not True
//    && ... Both Inputs True
//    || ... Either Input True
//    == ... Inputs Equal
//    === .. Inputs Equal including X and Z (simulation only)
//    != ... Inputs Not Equal
//    !== .. Inputs Not Equal including X and Z (simulation only)
//    < .... Less-than
//    <= ... Less-than or Equal
//    > .... Greater-than
//    >= ... Greater-than or Equal

目录:

1.大于比较器 >

2. 小于等于比较器 ≤

3. 小于比较器 <

4. 大于等于比较器 ≥

5. 等于比较器 ==

6. 不等于比较器 !=

7. 逻辑非 !

8. 逻辑与 &&

9. 逻辑或 ||

1.大于比较器 >

代码

module assign1(input[3:0] a,b,output	y1);
assign y1 = a>b;    // 取出某一位
endmodule

一位>RTL结构图,该逻辑仅仅是一个与门,其中a==1,b==0时,输出为高。

一位>技术原理图,一个与运算仅仅需要一个Lut查找表即可实现

四位>比较器RTL结构图,标识出一个>模块,内部不可以观察。

技术原理图,多位比较器本质上仍然是一个组合逻辑,通过lut+mux来实现。

2. 小于比较器 <

单独观察<比较器,就可以看成是>比较器换个输入端口即可实现。需要>与<比较器一起实现观察。

代码

// 18.<比较器基本电路
module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = a>b;    // 取出某一位
assign y2 = a<b;    // 取出某一位 
endmodule

RTL结构图,依然是一个封装模块。

技术原理图,这是组合逻辑电路,

3. 小于等于比较器 ≤

代码

module assign1(input[3:0] a,b,output	y1,output  y2);
//assign y1 = a>b;    // 取出某一位
assign y2 = a<=b;    // 取出某一位 
endmodule

四位RTL结构图,该电路是一个封装模块,不可打开。

四位技术原理图,组合电路来实现

4. 大于等于比较器≥

单独观察≥比较器,它的本质也是把≤的输入端口修改一下,≥与≤一起观察。

代码

module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = a>=b;    // 取出某一位
assign y2 = a<=b;    // 取出某一位 
endmodule

RTL结构图

技术原理图

5. >,≥,<,≤综合电路图

代码

module assign1(input[3:0] a,b,output	y1,output	y3,output	y4,output  y2);
assign y1 = a>=b;    
assign y2 = a<=b;    
assign y3 = a>b;    
assign y4 = a<b;   
endmodule

RTL结构图

技术原理图,从技术原理图来看,各个比较器相互独立,确保具有相同的门电路结构延时。并没有在基本的电路基础上取反来实现。这种方式消耗资源多,但是提高了比较器的响应速度。

6. 等于比较器 ==

代码

module assign1(input[3:0] a,b,output	y1);
assign y1 = a==b;    // 取出某一位
endmodule

RTL结构图

技术原理图,技术原理图是组合逻辑

7. 等于比较器 !=

代码

module assign1(input[3:0] a,b,output	y1);
assign y1 = a!=b;    // 取出某一位
endmodule

RTL结构图

技术原理图

8. 等于与不等于比较器

代码

module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = a==b;    // 取出某一位
assign y2 = a!=b;    // 取出某一位 
endmodule

RTL结构图

技术原理图

9 所有比较器综合比较

代码

module assign1(input[3:0] a,b,output	y1,output	y3,output	y4,output	y5,output	y6,output  y2);
assign y1 = a>=b;    
assign y2 = a<=b;    
assign y3 = a>b;    
assign y4 = a<b;   
assign y5 = a==b;    
assign y6 = a!=b;   
endmodule

RTL结构图

技术原理图

10 .  逻辑非 !

代码

module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = !a;    // 取出某一位
endmodule

RTL结构图,结构图来看,逻辑非是判断输入的各个位都为0时,输出1,否则输出0,因此采用了一个与门逻辑,并且对输入的各个位取反。

技术原理图

11. 逻辑或 &&

module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = a&&b;    // 取出某一位
endmodule

RTL结构图,从结构图来看,分别对两个输入进行逻辑非计算,然后对两个非输出再次进行逻辑非计算。

技术原理图

12. 逻辑或||

代码

module assign1(input[3:0] a,b,output	y1,output  y2);
assign y1 = a||b;    // 取出某一位 
endmodule

RTL结构图,逻辑或||运算首先对两个输入分别进行逻辑非运算,然后对输出的结果进行或非运算。

技术原理图

总结

逻辑比较器运算符电路都是组合逻辑电路,FPGA通过LUT查找表来实现。虽然逻辑运算符可以通过取反得到另外一种逻辑运算符,这样可以简化电路的结构,但是FPGA综合工具并没有这么处理,主要是为了减少电路的延时门长度,通过牺牲资源来梯形逻辑运算的响应速度。此外所有的逻辑运算符在FPGA中,都是通过从新组合成电路来实现的。FPGA相当于从新构造运算单元来完成计算的。这是FPGA与CPU的区别的主要特征。CPU的算术运算单元是固有的,使用的时候通过指令进行调用就行了。另外,LUT查找表再次扮演了组合逻辑设计的重要角色,原理上能够完成所有逻辑运算器电路的设计。当然对于高性能的设计,还需要借助进位链来实现。

通过逻辑运算单元的测试,进一步体验了一把基本逻辑运算的概念与电路之间的关系,对于理解计算机,FPGA等基本结构有很大的帮助,是性能优化以及设计芯片的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原生Html 引入element UI + vue3 表单校验设置

效果&#xff1a; 提交时&#xff0c;检验结果展示 html源码 <!DOCTYPE html> <html> <!--带搜索输入框下拉弹窗 --> <head><meta charset"UTF-8"><!-- import Vue before Element --><script src"../js/vue3.3.8/vu…

jmeter,通过Ant插件生成html报告,展示接口详细信息

一、下载Ant 下载地址&#xff1a;Apache Ant - 二进制发行版 二、安装 1、Ant环境变量 解压Ant目录&#xff1b;配置系统环境变量&#xff0c;添加ANT_PATH&#xff0c;值为D:\Software\Ant_plugIn\apache-ant-1.10.14配置系统环境变量Path&#xff0c;添加Ant路径 %ANT_H…

Unity之OpenXR+XR Interaction Toolkit接入Meta Quest3

前言 随着备受期待的Meta Quest 3与今年10月10日发布,这款来自Meta的下一代VR游戏头戴设备承诺将彻底改变您的游戏方式。 Meta Quest 3,玩家只需轻松一触即可在虚拟现实和真实世界之间无缝切换,无需摘下头戴设备进行快速现实检查。 Meta Quest 3最引人注目的特点之一是其能…

webpack学习-5.代码分离

webpack学习-5.代码分离 1.入口起点2.防止重复2.1 入口依赖2.2 SplitChunksPlugin 3.动态导入3.1 使用符合 ECMAScript 提案 的 import() 语法3.2 使用 webpack 特定的 require.ensure 4.预获取/预加载模块5.分析bundle6.总结 1.入口起点 代码分离是 webpack 中最引人注目的特…

AIGC - 环境搭建

一. 硬件环境 1. 超微7048主板&#xff0c;最多可搭载4块GPU 2. 2个Intel的 Xen至强 14核 CPU 3. 目前安装了一块Nvidia 的P40 GPU&#xff0c;后续根据需要还最多可以扩展3块GPU 4. 4T机械 2T Nvme固态&#xff0c; 5. 4条64G DDR4内存条&#xff0c;共 196G内存…

QT多项目管理

.pro文件配置解释&#xff1a;​​​​​​ Qt 中的多项目管理_qt子目录项目-CSDN博客Qt 模块化开发之 pro 子项目开发_qt 子项目-CSDN博客关于Qt编译库&#xff08;1&#xff09;&#xff1a;在子项目中编译动态库并且使用_qt编译动态库后配置qt-CSDN博客QT release下的编译…

涵盖多种功能,龙讯旷腾Module第六期:输运性质

Module是什么 在PWmat的基础功能上&#xff0c;我们针对用户的使用需求开发了一些顶层模块&#xff08;Module&#xff09;。这些Module中的一部分是与已有的优秀工具的接口&#xff0c;一部分是以PWmat的计算结果为基础得到实际需要的物理量&#xff0c;一部分则是为特定的计…

排序算法(二)-冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序

排序算法(二) 前面介绍了排序算法的时间复杂度和空间复杂数据结构与算法—排序算法&#xff08;一&#xff09;时间复杂度和空间复杂度介绍-CSDN博客&#xff0c;这次介绍各种排序算法——冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序。 文章目录 排…

排序-归并排序与计数排序

文章目录 一、归并排序1、概念2、过程3、代码实现4、复杂度5、稳定性 二、 计数排序1、思路2、代码实现3、复杂度&#xff1a;4、稳定性 一、归并排序 1、概念 是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已…

关键点检测☞png格式换bmp,且labelme标注的json中imagePath同步修改格式

import os import cv2 import jsondef bmp2jpg(in_img_path, out_dir_name): # .png -> .bmp# img = cv2.imread(in_img_path) # 彩色图片,位深24img =</

GDPU 数据结构 天码行空13

文章目录 一、【实验目的】二、【实验内容】三、实验源代码四、实验结果五、实验总结 一、【实验目的】 (1) 理解插入排序算法的实现过程&#xff1b; &#xff08;2&#xff09;理解不同排序算法的时间复杂度及适用环境&#xff1b; &#xff08;3&#xff09;了解算法性能…

Win11 跑通tensorRT

准备 1.安装cuda&#xff0c;成功之后文件夹如下图所示 2.下载cudnn&#xff0c;把cudnn对应的文件放在cuda里面 3.安装vs 4.安装对应cuda版本的tensorRT https://developer.nvidia.com/tensorrt-download 5.opencv安装 编译好 打开vs&#xff0c;配置环境 用vs打开tens…

PLC-Recorder V3版本软件升级方法

PLC-Recorder V3软件进行了架构优化&#xff0c;包括采集服务器、客户端、授权管理等组件。升级方法与V2版本相似&#xff0c;但是也有一些变化&#xff0c;说明如下&#xff1a; 一、从V2向V3版本升级 1、退出原PLCRecorder&#xff1a;关闭右下角的图标。 2、退出打开的离线…

模型部署系列:10x速度提升,Yolov8检测模型稀疏化——CPU上超500FPS

YOLOv8由广受欢迎的YOLOv3和YOLOv5模型的作者 Ultralytics 开发&#xff0c;凭借其无锚设计将目标检测提升到了一个新的水平。YOLOv8 专为实际部署而设计&#xff0c;重点关注速度、延迟和经济性。 [1] 详细内容请参阅 MarkAI Blog [2] 更多资料及工程项目请关注 MarkAI Githu…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试题及A特种设备相关管理(锅炉压力容器压力管道)考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试题是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试内容&#xff0c;安全生产模…

DockerCompose部署RabbitMQ集群

DockerCompose部署RabbitMQ集群 最近小黄在工作中正好需要部署RabbitMQ集群&#xff0c;借此来记录一下&#xff0c;也希望可以帮助到大家 前置条件 简单介绍一下咱们公司现有的条件以及想要达成的效果 服务器3台&#xff0c;3台都是属于一个专有网络中&#xff0c;也就是说3…

【开源】基于JAVA的桃花峪滑雪场租赁系统

项目编号&#xff1a; S 036 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S036&#xff0c;文末获取源码。} 项目编号&#xff1a;S036&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

快速搭建知识付费平台?我有才,为你提供一站式解决方案

在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护一个属于自己的知识付费平台需要…

Oracle md5

SQL CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 ISretval varchar2(32); BEGINretval : utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING > passwd));RETURN retval; END; 测试 select md5(lw112190) from dual 效果