verilog基础,连续赋值之组合逻辑

news2024/10/6 4:28:26

连续赋值语句可以完成任意组合逻辑,本节对基本的逻辑电路进行测试分析,主要包含一下内容:

1. 反相器

2. 与门

3.与非门

4.或门

5.或非门

6.异或门

7.同或门

verilog实现逻辑操作的算符如下

//    ~ .... Invert a single-bit signal or each bit in a bus
//    & .... AND two single bits or each bit between two buses
//    | .... OR two single bits or each bit between two buses
//    ^ .... XOR two single bits or each bit between two buses
//    ~^ ... XNOR two single bits or each bit between two buses
			

1. 反相器

反相器是简单的数字电路。他的功能是实现高低电平的反转。

反相器可以通过~符号可以实现。与c语言一样,都是左边赋值。assign是连续赋值语句的关键字(保留字),等式左边是输出语句,后边的逻辑表达式。反相器的输入有事一个,符号为a,通过~算符运算后,赋值给坐标的y值。y=~a,语句描述了一个反相器电路。一个完成的反相器模块实现如下。

module assign1(
	input a,
	output  y
    );

assign y = ~a;

endmodule

使用xilinx ise14.7进行综合后,得到RTL原理图以及技术原理图如下图,其中RTL原理图主要显示了反相器的逻辑功能。技术原理图中自动增加了ibuf和obuf原语,使用缓冲级把内部逻辑器件与外部信号线隔离起来。

2. 与门

与门的输入可以是2-n输入,以下演示2-5输入与门电路。

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = a2&a1;
assign y3 = a3&a2&a1;
assign y4 = a4&a3&a2&a1;
assign y5 = a5&a4&a3&a2&a1;

endmodule

RTL原理图如下,寄存器传输级的原理图与预期的一致。多输入与门模块

XST综合后的技术原理图如下,FPGA使用lut4查找表来实现组合逻辑。4个与门有4个输出,使用了4个lut来实现。双击lut可以查看lut具体实现的组合逻辑功能,

双击lut4得到如下结果

3.与非门

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = ~(a2&a1);
assign y3 = ~(a3&a2&a1);
assign y4 = ~(a4&a3&a2&a1);
assign y5 = ~(a5&a4&a3&a2&a1);

endmodule

RTL原理图

技术原理图,由技术原理图可知,2-4输入与非门,使用Lut查找表即可实现,而5输入与非门需要一个与非门与一个mux二选一选择器时间。

双击lut4-y51得到内部逻辑结构如下

等效增值表

等效方程

小结:

选择器是fpga的基本结构,他可以与lut结合起来实现组合逻辑。

4. 或门

代码

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = (a2|a1);
assign y3 = (a3|a2|a1);
assign y4 = (a4|a3|a2|a1);
assign y5 = (a5|a4|a3|a2|a1);

endmodule

RTL结构图

技术原理图,总共由4个lut实现组合逻辑,其中lut2+lut4/ y21+y5一起实现了5输入或门

y5的lut表

y5等效方程

6. 或非门

代码

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = ~(a2|a1);
assign y3 = ~(a3|a2|a1);
assign y4 = ~(a4|a3|a2|a1);
assign y5 = ~(a5|a4|a3|a2|a1);

endmodule

RTL结构图

技术原理图,或非门电路就是在或门电路后面增加一级反相器来实现。

7. 异或门

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = (a2^a1);
assign y3 = (a3^a2^a1);
assign y4 = (a4^a3^a2^a1);
assign y5 = (a5^a4^a3^a2^a1);

endmodule

RTL结构图

技术原理图,异或门采用Lut查找表来实现,超过5输入的异或门采用两个Lut查找表来实现。

双击y5的lut

8. 同或门

代码

module assign1(
	input a5,
	input a1,
	input a2,
	input a3,
	input a4,
	output  y2,
	output  y3,
	output  y4,
	output  y5
    );

assign y2 = (a2~^a1);
assign y3 = (a3~^a2~^a1);
assign y4 = (a4~^a3~^a2~^a1);
assign y5 = (a5~^a4~^a3~^a2~^a1);

endmodule

RTL结构图,同或门的结构让人眼花缭乱,不用担心,它的本质还是使用lut实现。

技术原理图,使用查找表实现的同或门如下,不管组合逻辑有多么复杂,完全可以使用查找表实现。这不仅简化了逻辑电路的实现,还可以实现逻辑电路编程。这是FPGA使用ram来制作查表来替代门电路的原因。

双击一下y51-lut查找表,内部实现的逻辑功能还是很复杂的。

总结

1. verilog的基本组合逻辑运算可以用assign语句实现,通过基本逻辑算符如~、&、|、^、~^来实现具体的组合逻辑功能。

2. FPGA的反相器使用反相器电路实现,与门,与非门,或门,或非门,同或,异或等多输入组合逻辑均采用lut查找表实现。另外部分组合逻辑可以使用Lut查找表+mux选择器来实现。主要的目的就是简化FPGA资源的使用

3. 逻辑功能的实现都是通过综合工具自动设计的。verilog将功能与具体的逻辑门设计隔离开来,极大的增加了开发效率,是目前verilog商用化的主要原因。另外他也存在缺点,使用verilog语言,让我们对门电路的认识不足,不利于查找电路问题以及进行电路优化,对于高性能的研究还是需要使用VHDL语言。幸运的是,使用verilog基本就满足大多数场景的应用了。

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

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

相关文章

【网络通信原理之套接字】

目录 概念 分类 数据报套接字:使用传输层UDP协议 流套接字:使用传输层TCP协议 原始套接字 Socket编程注意事项 前言:本文主要介绍了在什么是套接字及在Java中套接字是什么,和在套接字编程的注意事项。 概念 Socket套接…

Postman接口测试工具使用

一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及…

K8S(四)—pod详解

目录 pod介绍Pod的概念:Pod的特性:Pod的配置:Pod的控制:示例 YAML 文件: pod启动流程问题 两种方式启动镜像的升级和回滚更新 Deployment:回滚检查 Deployment 历史版本回滚到之前的修订版本缩放 Deploymen…

进程概念【linux】

进程基础 在学习进程之前,首先要有一定的计算机硬件和软件基础。 硬件基础:冯诺依曼体系结构 如图,是计算机在硬件上的体系结构。 下面举出一些常见的输入输出设备(有些设备只作输出设备,或者只作输入设备&#xff…

基于Leaflet的Webgis经纬网格生成实践

目录 前言 一、Leaflet.Graticule 1、参数说明 二、集成使用 1、新建网页模板 2、初始化地图对象 3、运行效果 三、源码调用分析 1、参数注入 2、经纬网构建 总结 前言 众所周知,在地球仪上或地图上,经线和纬线相互交织,就构成经纬…

复旦微固化流程

生成boot.bin 如图所示,psoc下的create boot image,选择文件配置路径output bif,任意命名 点击右侧add,分别添加三部分 1.编译FSBL工程后SDK\system_platform\FSBL\Debug\Exe路径下的FSBL.out 2.PL侧的bit文件 3.编译工程后SDK\sy…

关于对RF射频方面性能要求各有不同

1.1 射频天线性能 对于一个射频设备每个公司对其合格指标要求都不一,有些公司注重于阻抗及电压驻波,有些公司注重与回波损耗及阻抗、有些只关注电压驻波。 1.2 射频的目的 其实射频天线的目的就是在不把无用的杂散放大超标准的前提下,把有用…

穿梭时光的Java魔法:轻松掌握Date类,揭示当前时间的神秘面纱!

一、实现目标 获取当前时间! 二、上代码 import java.text.SimpleDateFormat; import java.util.Date; public class Date_ { // 输出当前的时间 public static void main(String[] arg…

项目总结-自主HTTP实现

终于是写完了,花费了2周时间,一点一点看,还没有扩展,但是基本功能是已经实现了。利用的是Tcp为网络链接,在其上面又写了http的壳。没有使用epoll,多路转接难度比较高,以后有机会再写&#xff0c…

大数据技术8:StarRocks极速全场景MPP数据库

前言:StarRocks原名DorisDB,是新一代极速全场景MPP数据库。StarRocks 是 Apache Doris 的 Fork 版本。StarRocks 连接的多种源。一是通过这个 CDC 或者说通过这个 ETL 的方式去灌到这个 StarRocks 里面;二是还可以去直接的和这些老的 kafka 或…

图的导航-最短路径算法-深度优先遍历

介绍 最短路径:从起点开始访问所有的路径,到达终点的路径有多条,其中路径的权值最短的一条则为最短路径。 最短路径算法有深度优先遍历、广度优先遍历、Bellman-Ford算法、弗洛伊德算法、SPFA算法、迪杰斯特拉算法等。 而本篇讲的是利用深…

TypeScript中的基本类型

提示:TypeScript中的基本类型 文章目录 前言基本类型1.类型声明2.自动类型判断3.类型断言 前言 TypeScript (计算机编程语言)简称:TS,是 JavaScript 的超集。简单来说就是:JS 有的 TS 都有。JS写的代码在TS…

基于ssm民宿管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本民宿管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

H5 - - - - 移动端禁止长按保存图片

H5 - - - - 移动端禁止长按保存图片 1. 问题描述2. 解决办法2.1 img标签添加css属性2.2 设置为背景图片2.3 图片元素的同级加一个透明盒子 1. 问题描述 H5移动端 img标签长按,会出现如图效果⬇️ 那么该如何修改,能避免长按保存图片操作呢? …

代码随想Day36 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 这道题和前一天的射箭题目思想类似,用总区间个数-不重叠的区间个数等于需要去除的区间个数。首先对左边界排序,如果当前的左边界大于等于上一区间的右边界,则说明是一个不重叠的区间,否则,更新上一重…

Microsoft 发布了 12 月份产品安全问题修复报告。

🔥 Microsoft 发布了 12 月份产品安全问题修复报告。 请注意趋势漏洞 CVE-2023-36011 和 CVE-2023-35632。这些漏洞与 Win32k 内核和负责网络通信的辅助功能驱动程序 (AFD) 驱动程序中的缺陷有关。成功利用这两个漏洞可让进入 Windows 系统的攻击者将其权限提升至系…

NXP应用随记(二):S32K3xx内存随记

目录 1、TCM 1.1、代码放置在ITCM的方式 __attribute__ 的函数属性 __attribute__ 的变量属性 __attribute__ 的类型属性 __attribute__ 的优化控制属性 1.2、DTCM 1.3、TCM的使用注意事项 1、TCM CMTightly Coupled Memory,是一种高速缓存,据说是…

【EI会议征稿】第三届电力系统与电力工程国际学术会议(PSPE 2024)

第三届电力系统与电力工程国际学术会议(PSPE 2024) 2024 3rd International Conference on Power System and Power Engineering(PSPE 2024) 第三届电力系统与电力工程国际学术会议(PSPE 2024)于2024年3月29-31日在中国三亚隆重召…

开发案例:使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候,首先分析一下大概的实现结构以及开发思路,方便我们少走弯路,也可以使组件更加容易拓展,维护性更强。然后我会把功能逐个拆开来讲,这样大家才能学习到更详细的内容。下面简单阐述…

C++怎么快速提升实力?

C怎么快速提升实力? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家!!&…