理解FPGA的基础知识——逻辑电路

news2024/11/18 6:43:39

FPGA (Field Programmable Gate Aray,现场可编程门阵列)是一种可通过重新编程来实现用户所需逻辑电路的半导体器件。为了便于大家理解FPGA的设计和结构,我们先来简要介绍一些逻辑电路的基础知识。

1.逻辑代数

    逻辑代数中的变量称为逻辑变量,用大写字母表示。逻辑变量的取值只有两种,即逻辑0和逻辑1,0 和 1 称为逻辑常量,并不表示数量的大小,而是表示两种对立的逻辑状态,即称为逻辑0状态和逻辑1状态。逻辑代数是由和逻辑值(0和1)相关的逻辑与( AND)、逻辑或(OR)和逻辑非(NOT)三种运算形成的代数体系,也称为布尔代数。

     逻辑代数分为两种:一种是从一种状态变为另一种状态的逻辑,称为一元逻辑;另外一种是两种状态中按照某种规则(比如比较大小)有倾向性的选择出其中一种状态的逻辑,称为二元逻辑。图1列出了定义逻辑与、逻辑或的二元逻辑运算以及定义逻辑非的一元逻辑运算。在这里,三种运算分别使用“·”“+”和“ˉ”运算符号来表示。逻辑与x∙y是指x和y都为1时,结果为1的运算。逻辑或x+y是指x或y至少有一方为1时,结果为1的运算。逻辑非“x(ˉ)" 是取相反逻辑值的一元运算:如果x为0则结果为1;反之,如果x为1则结果为0。

表1  逻辑运算(布尔代数的公理)

     逻辑代数满足表2所示的定理。这里的符号“=”表示其两边的计算结果总是相等,即等价。如果对换逻辑表达式中的逻辑值0和1、逻辑运算“与”和“或”,对换后得到的新逻辑表达式与对换前的表达式运算顺序不变,那么新逻辑表达式就称为原逻辑表达式的对偶式。逻辑代数中,如果某定理的逻辑表达式成立,其对偶式也成立。

表2 布尔代数的定理

2.逻辑表达式   

     逻辑表达式是用来描述逻辑运算过程的算式,由逻辑运算符、任意数量的逻辑变量以及必要的括号和常数值0或1组合而成。对于包含n个逻辑变量X1,X2,X3…Xn的逻辑表达式来说,我们先在其各个逻辑变量内代入逻辑值0或1,形成任意组合(共2n组),然后依照逻辑表达式的计算步骤计算这些组合,就可以得到值为0或1的计算结果。也就是说,逻辑表达式定义了具有某种逻辑功能的逻辑函数F(X1,X2,X3…Xn)。在逻辑表达式中,没有括号的情况下,逻辑与的计算优先于逻辑或。逻辑与的运算符“·”也可省略。

     任何逻辑函数都可以由逻辑表达式来描述,而且描述同一逻辑函数的逻辑表达式可以有多个。逻辑表达式的标准形式指的是通过增加表达式形式上的限制,使得一个逻辑函数只有一个逻辑表达式与之对应的情况。逻辑表达式中,逻辑变量以原变量或反变量的形式出现。原变量和反变量统称为字面量( literal)。字面量的逻辑与(每个字面量不能出现多次)叫作与项,与项的逻辑或运算叫作积之和。包含所有字面量的与项称为最小项,由最小项构成的积之和称为标准积之和(标准积)。将标准积的逻辑与和逻辑或对调即为标准和之积。字面量的逻辑或(每个字面量不能出现多次)叫作或项,或项的逻辑与运算叫作和之积。包含所有逻辑变量的或项称为最大项,由最大项构成的和之积称为标准和之积(标准和)。

3.真值表

     除了逻辑表达式,逻辑函数的描述方法还包括真值表和逻辑门。针对逻辑函数所有可能的输入组合一一列出输出值,我们就可以得到真值表。对于组合逻辑电路,只要列出所有可能的输入和对应的输出值,就可以完整地描述电路功能。因此,电路功能通常使用真值表描述。输入的个数为n时,真值表的组合数为2n。真值表中,需要记入每组输人值所对应的输出值。

     描述逻辑函数的逻辑表达式可以有许多个,而描述逻辑函数的真值表却是唯一的。虽然一个逻辑表达式只描述一个逻辑函数,但一个逻辑函数可以通过无数的等价逻辑表达式来描述。实现真值表所定义的功能的电路称为查找表( Look-up Table, LUT), 是当前主流FPGA的基本单元。

    从真值表推导逻辑表达式的形式有两种:“积之和表达式”与“和之积表达式”。在真值表输出为1的行中取输人变量的与项(最小项),然后将这些最小项相或,即可得到标准积之和表达式;相对地,在真值表输出为0的行中取输人变量的反变量的或项(最大项),然后将这些最大项相与,即可导出标准和之积表达式。图1中的示例展示了如何从真值表推导逻辑表达式。

图1  真值表推导逻辑表达式示例

    逻辑电路是一种离散信号的传递和处理,以二进制为原理、实现数字信号逻辑运算和操作的电路。分组合逻辑电路和时序逻辑电路。前者由最基本的“与门”电路、“或门”电路和“非门”电路组成,其输出值仅依赖于其输入变量的当前值,与输入变量的过去值无关—即不具记忆和存储功能;后者也由上述基本逻辑门电路组成,但存在反馈回路—它的输出值不仅依赖于输入变量的当前值,也依赖于输入变量的过去值。

4.组合逻辑电路

     逻辑电路根据是否包含记忆元件,分为组合逻辑电路和时序逻辑电路。组合逻辑电路不包含记忆元件。其时间点的输出(逻辑函数值)仅取决于当时的输入,而与电路以前状态无关,而与其他时间的状态无关。组合逻辑电路允许有多个输入/输出,其内部由用于计算逻辑与( AND)、逻辑或(OR)和逻辑非(NOT)等基本逻辑函数的逻辑门( gate),以及门电路间的连线组成。逻辑与、逻辑或和逻辑非3种运算相对应的逻辑门分别被称为与门、或门和非门。此外,其他较为常见的二项运算逻辑门还有与非(NAND)门、或非(NOR)门、异或( EXOR)门等。与非门用来计算逻辑与的否定,或非门用来计算逻辑或的否定,而异或门用来计算异或逻辑。表3列出了这些逻辑门的符号(MIL符号)、真值表和逻辑表达式。我们使用“⊕”表示逻辑异或的运算符号。表中用来表示二项运算的2输人门电路符号,也可以用于表示具有3个以上输人的运算逻辑。目前主流的LSI技术CMOS中除了基本的与非门、或非门,还有OR-AND-NOT、AND-OR-NOT等复合门电路。

   表3 逻辑门的符号、真值表、逻辑表达式

      任何逻辑电路都可以由积之和表达式来描述。因此,使用NOT-AND-OR组合而成的组合逻辑电路可以实现任何逻辑函数,这种方式被称为AND-OR逻辑电路或AND-OR阵列。实现AND-OR逻辑电路的器件有PLA ( Programmable Logic Array,可编程序逻辑阵列)等。

      对于一个逻辑表达公式或逻辑电路,其真值表是唯一的,但其真值表对应的逻辑电路或逻辑表达式可能有多种实现形式,所以,一个特定的逻辑问题,其对应的真值表是惟一的,但实现它的逻辑电路是多种多样的。在实际设计工作中,如果由于某些原因无法获得某些门电路,可以通过变换逻辑表达式变电路,从而能使用其他器件来代替该器件。同时,为了使逻辑电路的设计更简洁,通过各方法对逻辑表达式进行化简是必要的。组合电路可用一组逻辑表达式来描述。设计组合电路直就是实现逻辑表达式。要求在满足逻辑功能和技术要求基础上,力求使电路简单、经济、可靠、实现组合逻辑函数的途径是多种多样的,可采用基本门电路,也可采用中、大规模集成电路。其一般设计步骤为:

(1) 分析设计要求,列真值表;

(2) 进行逻辑和必要变换。得出所需要的最简逻辑表达式;

(3) 画逻辑图。

常用的逻辑组合电路包括,算数运算电路(半加器、全加器和加法器)、编码器、译码器、数据选择器、数据分配器、和数值比较器。

5. 时序逻辑电路

     含有记忆元件的逻辑电路被称为时序逻辑电路。在组合逻辑电路中,当前的输出只取决于当前的输人。而在时序逻辑电路中,只知道当前的输人并不足以确定当前的输出。也就是说,时序逻辑电路是一种过去的电路状态(之前的输入)也会对输出产生影响的逻辑电路。

     时序逻辑电路分为同步时序逻辑电路和异步时序逻辑电路这两种。同步时序逻辑电路中,输人和内部状态的变化由时钟信号控制同步进行,而异步时序逻辑电路则不需要时钟信号。由于FPGA电路设计一般使用同步时序逻辑电路,所以这里我们不对异步时序逻辑电路进行过多讨论,而我们常用的时序逻辑电路主要有触发器、计数器、寄存器和顺序脉冲发生器等。

     时序逻辑电路的输出值由输人值和记忆元件的状态值共同决定。也就是说,时序逻辑电路中过去的输人所形成并保留下来的状态对当前的输出具有影响。这种逻辑电路可描述为图2所示的有限状态机模型。图2a所示的模型为米勒( Mealy )型时序逻辑电路,图2b 所示的模型为摩尔(Moore)型时序逻辑电路。米勒模型的输出由内部状态和输人共同决定,而摩尔模型的输出仅由内部状态决定。米勒模型的状态数通常比摩尔模型的少,因此有电路规模较小的优点。然而由于输人会立刻反映到输出,所以逻辑元件或不等长的布线所带来的信号延迟等容易引起信号竞争,进而导致非预期的错误输出(冒险)。相比之下,摩尔模型直接使用记忆状态的输出,因此电路速度快且不易发生冒险。但摩尔模型由于状态数量多,电路规模也相对较大。

图2 时序逻辑电路模型

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

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

相关文章

Arduino ESP32 ESP-Rainmaker点灯示例

Arduino ESP32 ESP-Rainmaker点灯示例 📌基于ESP-IDF工程相关篇《ESP32 ESP-Rainmaker 本地点灯控制Demo测试》🎈原项目地址:https://github.com/espressif/esp-rainmaker🔖本次所测试的项目示例工程:\esp-rainmaker—…

backtrader的cs功能介绍

cs框架的优点和缺点 优点和ts一样,就是速度非常快缺点有好几个:必须使用根据过去一定天数计算因子值,持有一定天数之后再平衡的模式;必须使用连续的数据,如果是期货期权等需要合成连续数据。资金不足的时候不会拒单。cs框架使用方法 设计理念 计算因子由用户进行计算,因…

用科技创造未来!流辰信息技术助您实现高效办公

随着社会的迅猛发展,科技的力量无处不见。它正在悄悄地改变整个社会,让人类变得进步和文明,让生活变得便捷和高效。在办公自动化强劲发展的今天,流辰信息技术让通信业、电网、汽车、物流等领域的企业实现了高效办公,数…

工具及方法 - 安装播放器pot player

官网下载: potplayer.daum.net 可能国内访问有问题,还有一个网站: Global Potplayer 或者为了纯净安全些,找下国外可下载网站: PotPlayer 230407 / 230504 Beta Free Download - VideoHelp 下载后安装即可&#xff…

红蜻蜓利用档案数字化管理,实现业务管理降本增效

在数字化大背景下,红蜻蜓积极拥抱数字化档案,全面优化档案管理成本,保证组织档案安全可信,助力企业业务高质量发展。 关于红蜻蜓 红蜻蜓,创始于1995年,是一家多品牌、多品类的时尚鞋履品牌运营商&#xf…

欧科云链OKLink:2023年4月安全事件盘点

一、基本信息 2023年4月安全事件共造约6000万美金的损失,与上个月相比,损失金额有所降落,但安全事件数量依旧不减。其中,Yearn Finance因参数配置错误,导致了1000多万美金的损失。同时,有一些已经出现过的…

【剧前爆米花--爪哇岛寻宝】TCP/IP协议以及在网络传输过程中的封装与分用

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于网络初识的文章,在这篇文章中讲解了TCP/IP协议的主要内容和砸在网络传输过程中的封装和分用,希望对你有所帮助! 目录 TCP/IP五层模型 应用层…

渲染和不渲染的区别是什么?

随着计算机技术日新月异不断发展,电脑合成技术图像技术也日益成熟。在三维制作中,经常会提到一个词“渲染”,很多没有接触三维制作的朋友可能不是太清楚它究竟是什么,图像制作后,渲染和不渲染的区别是什么,…

【Admin后台管理】Geodjango后台显示地图并加载空间字段

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、djangoadmin二、geodjangoadmin三、报错处理 前言 在前面的博客中,我们已经介绍了Geodjango的环境搭建和数据库操作&…

网易云音乐开发--前后端交互

前后端交互 首先启动服务器 1. 根目录下执行: npm start 2. 服务器地址: http://localhost:3000 3. 示例: http://localhost:3000/banner 测试接口能不能用 发起请求 看接口说明,在wx的load函数中发起请求 请求成功 封装请求功能函数 …

Django框架之ORM和模型属性

Django对很多数据库都有支持,为这些数据库提供了统一的调用API。可以根据不同的业务需求,选择配置不同的数据库。本篇文章主要介绍ORM和模型属性。 ORM ORM全称Object Relational Mapping,即对象关系映射,是在pymysq之上又进行了…

JAVAWeb11-服务器渲染技术 -JSP-01-JSP基础

1. 现状 1、JSP 使用情况 2、Thymeleaf 使用情况, 通常和 SpringBoot 结合(也会讲) 3、Vue 使用情况 2. 学 JSP 前,老师要说的几句话 目前主流的技术是 前后端分离 (比如: Spring Boot Vue/React), 我们会讲的.[看一下]JSP 技术使用在逐渐减少&#xff…

06 - 4 微内核架构

什么是微内核架构 定义 微内核 核心功能资源封装 插件 可插拔 系统核心 资源封装 硬件接口系统资源访问接口环境/上下文(context)访问接口系统事件接口 定义插件规范 使用场景规则条件 核心功能 支持系统运作的最小功能集 职责分离 通用流程由核心…

音视频八股文(10)-- mp4结构

介绍 mp4⽂件格式⼜被称为MPEG-4 Part 14,出⾃MPEG-4标准第14部分 。它是⼀种多媒体格式容器,⼴泛⽤于包装视频和⾳频数据流、海报、字幕和元数据等。(顺便⼀提,⽬前流⾏的视频编码格式AVC/H264 定义在MPEG-4 Part 10&#xff09…

CTF权威指南 笔记 -第三章汇编基础-3.2-x86/x64汇编基础

这节介绍PC最常见的架构 x86和扩展 x64框架 CPU操作模式 对x86处理器而言 有三个最主要的保护模式 保护模式 实地址模式 系统管理模式还有一个保护模式的子模式 虚拟8086模式 保护模式 保护模式是处理原生状态 这个时候所有指令和特性都是可以使用的 分配给程序的独立内…

好用的原型设计软件有哪些?一次给你推荐12个

原型设计是项目需求可视化的过程,从事产品设计工作必须与产品原型的创建分不开,因此原型设计软件的选择不容忽视,一个好的原型设计软件,不仅能有效输出页面设计,规范产品原型,而且能有效降低开发和设计人员…

debootstrap 构建 RISC-V 64 Ubuntu 根文件系统

debootstrap 构建 Ubuntu RISC-V Linux 根文件系统 flyfish 主机信息 命令 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal制作的根文件系统为 RISC-V 64 Ubuntu 22.04 LTS 1 主机…

Spring框架入门

Spring框架入门 简介开发环境入门案列Spring bean的定义常用属性 Spring IOC (控制反转)简介控制反转(IoC)案例 依赖注入(DI)IoC 容器的两种实现ApplicationContextBeanFactory Spring Bean属性注入构造函数注入setter 注入 Sprin…

洛谷 P2782 友好城市 线性DP 最长上升子序列 二分查找 lower_bound

🍑 算法题解专栏 🍑 洛谷:友好城市 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对…

关于HTTP服务小实验。

请给openlab搭建web网站 ​网站需求: ​1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[www.openlab.com/student](ht…