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

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

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.mzph.cn/news/220398.shtml

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

相关文章

「Leetcode」滑动窗口—长度最小的子数组

💻文章目录 📄题目✏️题目解析 & 思路📓总结 📄题目 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …,…

【UE 材质】角色触碰空气墙效果

效果 步骤 1. 新建一个工程,创建一个Basic关卡,添加一个第三人称游戏资源到内容浏览器 2. 新建一个材质参数集,这里命名为“MPC_Vector” 打开“MPC_Vector”,添加一个向量参数 3. 新建一个材质,这里命名为“M_Wall”…

力扣每日一题:2132. 用邮票贴满网格图(2023-12-14)

力扣每日一题 题目:2132. 用邮票贴满网格图 日期:2023-12-14 用时:38 m 32 s 思路:使用前缀和+差分,只是往常是一维,现在变二维了,原理差不多 时间:22ms 内存&#xff1…

运行和部署若依分离版前端

一、运行 一、用vscode打开 二、安装依赖 # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 npm install --registryhttps://registry.npmmirror.com# 启动服务 npm run dev浏览器访问 http://localhost:80二、部…

数据库的优化

1、创建index索引; 2、减少select * 的使用,具体一点,全取会增加web服务器的负担; 3、explain select:显示了mysql如何使用索引来处理select语句以及连接表; 4、度多使用varchar/nvarchar,变长…

深入解析,录制视频的软件推荐(3款)

在信息时代,视频成为了传递信息、分享经验的重要媒介。为了创作出更具吸引力和实用性的视频,选择合适的录制工具显得至关重要。本文将深入介绍3款录制视频的软件,通过本文,您将深入了解这3款软件的使用方法,以满足不同…

JRT文件服务实现

网站与客户端打印和导出方面已经无大碍了,今天抽时间整整文件服务,文件服务设计可以查看下面连接。原理一样,代码会有些变化。 文件服务设计 首先实现文件服务的服务端,就是一个业务脚本,用来接收上传、移动和删除文件…

往上走^^

欢迎来到程序小院 往上走 玩法&#xff1a;转动的圆球&#xff0c;点击固定到上方的圆中即可往上走一步&#xff0c;转动超过上面圆即游戏结束&#xff0c; 往上走一步加1分&#xff0c;快去往上走吧^^。开始游戏https://www.ormcc.com/play/gameStart/218 html <canvas wi…

Gin之GORM 查询语句

前期工作可以看之前的&#xff08;连接数据库&#xff1b;以及确定要操作的库&#xff09; Gin之GORM 操作数据库&#xff08;MySQL&#xff09;-CSDN博客https://blog.csdn.net/m0_72264240/article/details/134948202?spm1001.2014.3001.5502这次我们操作gin库下的另外一个…

Android--Jetpack--数据库Room详解二

本是青灯不归客&#xff0c;却因浊酒恋红尘 一&#xff0c;基本使用 关于Room数据库的基本使用&#xff0c;请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二&#xff0c;Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用&#xff0c;请参考文章Andr…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑移动式储能调度的配电网灾后多源协同孤岛运行策略》

这篇文章的标题表明研究的主题是在配电网发生灾害后&#xff0c;采用一种策略来实现多源协同孤岛运行&#xff0c;并在这个过程中特别考虑了移动式储能的调度。 让我们逐步解读标题的关键词&#xff1a; 考虑移动式储能调度&#xff1a; 文章关注的焦点之一是移动式储能系统的…

国标GB28181安防监控系统/磁盘阵列EasyCVR(V.3.4)新亮点:免保活功能

TSINGSEE青犀近日发布了EasyCVR安防管理平台的V.3.4版本&#xff0c;其中一大亮点就是很多朋友都在咨询的“免保活”功能&#xff0c;那么&#xff0c;什么是“免保活”功能&#xff1f;又该如何配置呢&#xff1f; 在EasyCVR平台有个【按需直播】按钮&#xff0c;顾名思义&…

ARM流水灯

.text .global _start _start: LED1 1.RCC时钟使能GPIOE RCC_MP_AHB4ENSETR[4]->1 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x1<<4) STR R1,[R0] 2.设置PE10为输出模式 GPIOE_MODER[21:20]->01 先清0 LDR R0,0x50006000 LDR R1,[R0] BIC R1,R1,#(0x3<&…

Linux | 多线程

前言 本文主要介绍多线程基础知识&#xff0c;以及使用多线程技术进行并发编程&#xff1b;最后会介绍生产者消费者模型&#xff1b; 一、线程基本认识 1、什么是线程 如果你是科班出生&#xff0c;你肯定听过线程相关概念&#xff1b;但是你可能没有真正搞懂什么是线程&#…

集群监控Zabbix和Prometheus

文章目录 一、Zabbix入门概述1、Zabbix概述2、Zabbix 基础架构3、Zabbix部署3.1 前提环境准备3.2 安装Zabbix3.3 配置Zabbix3.4 启动停止Zabbix 二、Zabbix的使用与集成1、Zabbix常用术语2、Zabbix实战2.1 创建Host2.2 创建监控项&#xff08;Items&#xff09;2.3 创建触发器&…

以太网协议与DNS

以太网协议 以太网协议DNS 以太网协议 以太网用于在计算机和其他网络设备之间传输数据,以太网既包含了数据链路层的内容,也包含了物理层的内容. 以太网数据报: 其中目的IP和源IP不是网络层的目的IP和源IP,而是mac地址.网络层的主要负责是整体的转发过程,数据链路层负责的是局…

Data Mining数据挖掘—2. Classification分类

3. Classification Given a collection of records (training set) – each record contains a set of attributes – one of the attributes is the class (label) that should be predicted Find a model for class attribute as a function of the values of other attribu…

Vue3中使用tinymce, tinymce上传图片,tinymce使用emoji表情

1.效果图 2. 安装 npm i tinymce npm i tinymce/tinymce-vue在node_modules文件夹中找到tinymce下的skins复制到项目public文件夹中子组件 <template><editor v-model"myValue" :init"init" :disabled"disabled" :id"tinymceId&…

小型洗衣机哪个牌子质量好?五款高性价比内衣洗衣机推荐

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…

浅谈 USB Bulk 深入浅出 (3) - USB Bulk 装置传输的注意事项

来源&#xff1a;大大通 作者&#xff1a;冷氣團 1 USB Bulk 是什么 USB 是即插即用使用差动信号的装置界面&#xff0c;是以 端点 ( Endpoint )&#xff0c;做为传输装置的输出入端&#xff0c;透过不同的端点 ( Endpoint ) 和模式&#xff0c;来进行与装置的沟通&#xff…