IC开发——数字电路设计简介

news2024/10/11 20:05:14

1. 前言

我们说的数字电路,一般是指逻辑数字电路,即通过逻辑门组合成的电路,也即我们常说的逻辑IC。IC除了逻辑IC之外,还有模拟IC,存储IC等。
IC设计,需要学习数字电路,需要学习Verilog/VHDL等设计语言,需要学习使用相关EDA,看起来非常难。IC设计是很难,但是简单的入门并没有那么难。

2. 数字电路

2.1. 基础

  • 数字电路(Digital Circuit)
    • 用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路。数字逻辑集成电路(IC)是数字电路在半导体晶圆上的物理实现。
  • 模拟电路和数字电路
    • 模拟电路信号更接近真实世界信号,但是抗干扰差。
    • 数字电路信号一般使用2进制(0和1)编码,抗干扰佳,传输速度快。
      在这里插入图片描述
  • PAM4编码
    数字信号一般使用2进制编码(NRZ编码),但是也可以使用其他编码方式,如PAM4编码, 可以传输更多的信号,如PCIe6即支持PAM4编码。
    在这里插入图片描述

2.2. 门

  • 数字电路构成
  • 逻辑门是数字电路的基本构成,逻辑门主要用来执行布尔逻辑运算。
  • 数字电路工艺
    • TTL门
      • 由电阻和三极管构成。
      • 响应速度快。
      • 三极管在导通时,基极需要保持一定的偏置电流,导致TTL工艺IC静态功耗高,难以大规模集成。
    • CMOS门
      • 由电阻和MOS管构成。
      • MOS状态不变时(无论是导通或截止),其栅极没有电流,CMOS工艺的IC静态功耗低。(MOS管只在状态改变时产生电流)
      • 当前逻辑IC的主流工艺是CMOS门工艺。
        在这里插入图片描述
  • 基本门
    • 与门、或门、非门、同门
      在这里插入图片描述
  • 复合门
    • 与非门、或非门、异或门、同或门
      在这里插入图片描述

2.3. 组合逻辑电路

2.3.1. 加法器

  • Full Adder(全加法器,带进位的加法器)
    加法器,可以用与门、或门、异或门实现,也可以用或非门实现,还可以用其他门组合实现。
    优先选择与门、或门、异或门的实现方式,这种方式消耗的门数最少,降低IC的功耗和面积。
    在这里插入图片描述

2.3.2. 比较器

  • 1-Bit Digital Comparator (1Bit比较器)
    1Bit比较器是最简单的比较器。
    以此为基础可以扩展为多Bit比较器。
    在这里插入图片描述

2.3.3. ALU

  • 算术逻辑单元(Arithmetic Logic Unit)。

  • CPU的每个核心至少有一个ALU。

  • 负责算术运算、逻辑运算、位运算和比较运算等。
    在这里插入图片描述

2.3.4. Mux

  • 2×1 Multiplexer
    多路选择器,根据输入选择输出。多路选择器可以扩展为支持更多输入控制。
    在这里插入图片描述

2.3.5. 组合逻辑

  • 组合逻辑电路:
    • 由逻辑门构成。
    • 电路通电时,电路立即执行完成,输出结果,可以认为是即时响应。
    • Mux、Decoder、 Comparator等ALU单元都是组合逻辑电路。
  • 组合逻辑电路时延
    电信号的速度为30万公里/秒,在导线中的速度大概20万公里/秒。
    1GHz的时钟的IC,其时钟周期为1ns,电运行距离20cm。
    一个组合逻辑电路在IC中的总长度为10cm,电执行完的时间0.5ns,在1个周期内。
    一个复杂的组合逻辑电路如果总长度为30cm,电执行完的时钟1.5ns,超过1个周期。
    IC的执行以时钟周期为单位,在1个周期内,即可以认为立即执行完成。
    IC的执行时间超过1个周期,即认为组合逻辑没有即时执行。
    组合逻辑电路不要太过复杂,总执行时钟不能超过1个时钟周期。
    (以上计算只是估算,实际组合电路中不同门、不同线宽等都影响电的实际速度)

2.4. 时序逻辑电路

2.4.1. 锁存器

  • SR-Latch(SR锁存器)
    • SR锁存器,能够锁存之前的状态。
    • SR锁存器,有多种实现方式,下面以与非门来介绍。
    • 当输入为1时,输出均为之前的状态。
    • SR锁存器,能够保持之前的状态,有记忆功能。
      在这里插入图片描述

2.4.2. D触发器

  • D Flip Flop(D触发器)
    • 基于SR锁存器,将R改为Clk时钟。
    • 当Clk为0变到1时,查看SR锁存器真值表,输出锁存。
    • 第1次采样Data电平1,Q输出1,并保持到下个上升沿。
    • D触发器可以记忆输入信号的上个时钟采样的数据。
    • 1个或多个D触发器组成寄存器,保存多位状态。
      在这里插入图片描述

2.4.3. 分频电路

  • 2分频电路
    通过寄存器保持上一次状态来让实现2分频输出。
    此电路可扩展为多分频输出。
    在这里插入图片描述

2.4.4. 计数器

  • 2Bit Up Counter
    通过寄存器保存上个时钟的状态,达到更新状态。
    2Bit 最多计数4种状态。
    可扩展到多Bit计数器,计数更多状态。
    在这里插入图片描述

2.4.5. 时序逻辑电路

  • 时序逻辑电路(Sequential Logic Circuit)
    • 时序逻辑电路与时钟序列有关的逻辑电路。
    • 通过寄存器保存上个时钟周期的状态。
    • 数据在时钟边沿(上升沿或下降沿)触发时更新。
    • 大型计算,如果可以拆分为多个并行计算,那么可以使用组合电路在一个时钟周期内完成计算。
      大型计算,如果不能在一个时钟内完成计算,则需要将计算分拆为多Step,每Step通过组合电路在一个时钟周期内完成计算,然后通过寄存器将结果传入下个时钟周期继续计算,完成所有Step之后,输出最终结果。

2.5. 状态机

State Machine(状态机),清晰的输入输出,更可靠的时序电路,可以实现更复杂的逻辑。
在这里插入图片描述

3. 数字电路硬件

3.1. ASIC

ASIC(特定应用集成电路)

  • ASIC 是为特定应用或功能而专门设计的集成电路,可以高度优化以满足特定性能、功耗和面积要求。
  • ASIC一般不集成CPU,不可编程。
  • 常应用于放大器、滤波器、调制解调器、音频解码器、视频解码器等。 在IC发展早期,类型主要为ASIC。 实现相对简单。
  • 灵活性不够,只能通过外部引脚完成一些简单的功能配置。

3.2. CPU

  • 指令集发展
    • 早期的IC都是特定应用的集成电路(ASIC),灵活性不够。
    • 为了提升IC的灵活性,早期引入了助记符指令,IC可以执行自定义的助记符指令实现复杂逻辑操作。
    • 随着IC逻辑进一步复杂,助记符指令也进一步发展变得复杂。
    • 1970s,Intel推出微处理器,并在助记符指令的基础上专门的8080指令集,后来逐步发展为x86-64指令集。
    • 1980s,RISC(精简指令集计算机)架构推出,相应衍生出MIPS、SPARC和ARM等架构和配套指令集。
    • 2010年,RISC-V(Reduced Instruction Set Computer V)作为一种开放的指令集架构(ISA),由UC Berkeley提出。
  • CPU发展
    • CPU和ISA是同步发展的。
    • ASIC引入控制单元模块来支持指令集,此时ASIC即变成了CPU。
    • CPU控制单元负责读取指令集代码,解析执行相应的操作,并完成调用ALU,I/O输出等。

3.3. SoC

系统芯片,也称片上系统(SoC,System on Chip)是一种集成电路设计,它将计算机系统的许多组件集成到单一的芯片上。SoC 通常包括 CPU、总线(Bus)、其他Master模块(如Security Subsystem等)、DMA等其他Slave模块(如UART、IIC等) ,以提供完整的计算解决方案,降低用读电路开发难度。MCU可以认为是一种应用于嵌入式上的低功耗SoC。
IP(Intellectual Property,知识产权),类似软件开发中的库。IP的表现形式:

  • 软IP,RTL代码(Verilog/VHDL),使用灵活,可扩展性强。
  • 硬IP,完成物理布线的物理版图,使用简单,但可扩展性差。
    在这里插入图片描述

3.4. FPGA

  • FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种集成电路,它的最大特点是可以通过编程来配置其硬件逻辑。
  • CPU可以通过编程增加灵活性,但是如果CPU对应的数字电路出现Bug,也是无法修改的。数字电路部署到- FPGA上,如果出现Bug,可以很方便地替换为新数字电路设计。
  • 数字电路设计到IC生产,这一整个过程很长,也可以使用FPGA加速数字电路到生产部署。FPGA用于验证数字电路,提升数字电路设计的可靠性。
  • FPGA适合需要灵活性和快速变化的应用场景。

4. 数字电路设计

4.1. 数字电路图

  • Digital Circuit Diagram
    • 早期的数字电路设计是直接手动绘制电路图,然后将晶体管和其他电子元件按照电路图附加在半导体材料上。
    • 随着IC的技术发展,电路图可以使用基本模块,如加法器、D触发器、Mux等,可以提升手动绘制电路图的效率。
    • 随着IC复杂度的进一步增加,手动绘制数字电路图的难度越来越大,急需要一种更便捷的方法。
  • Advantage
    简单,直观,可以快速设计小的数字电路。
  • Disadvantage
    针对大型/超大型数字电路,设计难度大,设计效率低。

4.2. 数字电路描述语言

4.2.1. 概念

  • HDL
    • 硬件描述语言(HDL)是一种专门用于描述数字电路的编程语言。
    • 随着数字电路规模增加,手动绘制数字越来越难,效率越来越低。
    • 使用一种编程语言来描述数字电路,然后用工具将编程代码综合成数字电路图。
  • Traditional HDL
    VHDL、Verilog/SystemVerilog。
  • New HDL
    • SystemC,基于C++的 的硬件描述和建模语言,主要用于IC开发前期的系统建模。
    • Chisel,基于Scala的RTL级HDL,可以生成Verilog/SystemVerilog。
    • SpinalHDL,基于Scala的RTL级HDL,可以生成Verilog,更好的可读性可维护性。
    • MyHDL,基于Python的RTL级HDL,可以生成Verilog、VHDL。
  • Synthesis Tools
    • 商业综合工具,Synopsys Design Compiler, Cadence Genus等。
    • 开源综合工具,Yosys, iverilog等。

4.2.2. 抽象层级

  • Level of Abstraction

    • System Level:抽象高,关注功能,用于建模仿真,不关注时序细节,推荐SystemC。
    • Algorithm Level:关注算法的实现,推荐语言C/C++,MATLAB。
    • RTL Level:关注寄存器级传输行为,可以综合为实际数字电路,推荐语言VHDL,Verilog,Chisel。
    • Gate Level:逻辑门级别,可以综合成实际数字电路,推荐语言VHDL,Verilog。
    • Switch Level:基于三极管开关的实现,用于分析电路电气特性,推荐SPICE, Verilog-A。
  • Digital Circuit Design

    • 系统级的HDL,虽然有一些高级综合技术可以综合为实际数字电路,但是实际使用较少。
    • 门级HDL,抽象层级低,描述硬件效率低,一般不单独使用。
    • RTL级抽象层中等,描述硬件效率高,并且可以综合成实际的数字电路,所以数字电路设计多用RTL级语言描述。

4.2.3. RTL

  • RTL(Register Transfer Level)是一种用于描述数字电路设计的抽象级别,着重于在寄存器之间的数据传输和处理方式。
  • RTL可以通过工具综合成实际数字电路。
  • 实际数字电路设计多用RTL表示,因此一般用RTL来代指数字电路设计。
  • RTL语言:Verilog/SystemVerilog、VHDL、Chisel等。

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

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

相关文章

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’)

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’) 前端报错 TypeError: Cannot read properties of undefined (reading offsetHeight)错误通常意味着你试图访问一个未定义或尚未渲染到DOM中的元素的offsetHeight属性。这个错误常见于异步数据处理、…

DAPLINK 之仿真调试器介绍

文章目录 前言1 协议1.1 JTAG 协议1.2 SWD 协议 2 调试仿真器2.1 ST-Link 仿真器2.2 ULink 仿真器2.3 J-Link 仿真器2.4 DAPLINK 仿真器 3 LINKer 搭配 CLion 的使用3.1 ST-Link CLion STM32F103RCT63.2 DAPLINK CLion STM32F103RCT6 参考 前言 本文算是 DAPLINK 学习的一个…

PyQt5 的 designer.exe 使用布局详解

文章目录 采用designer.exe原因一、打开 designer.exe二、界面布局介绍1. 菜单栏和工具栏2. 组件面板3. 窗体设计区域4. 属性编辑器5. 信号 / 槽编辑器 三、示例代码及图片展示 采用designer.exe原因 Python使用PyQt5界面开发为啥不使用py文件创建而是采用designer.exe原因&…

通过redis实现高性能计费处理逻辑

计费服务一般都是跟资金相关,所以它在系统中是非常核心的模块,要保证服务的高可用、事务一致性、高性能。服务高可用需要集群部署,要保证事务一致性可以通过数据库来实现,但是只通过数据库却很难实现高性能的系统。 这篇文章通过使…

人工智能——引领未来的科技革命

随着科技的飞速发展,人工智能(AI)已经成为我们生活中不可或缺的一部分。从智能手机的语音助手到自动驾驶汽车,从智能家居到工业自动化,AI的应用正在不断拓展,其影响力也在持续增强。今天,我们将…

图像的两种结构

彩色图像数据 (color_image_data) 彩色图像数据是一个三维数组,其中每个维度分别对应: 高度:图像的行数。宽度:图像的列数。颜色通道:每个像素的颜色信息,通常为RGB三个通道。 例如,一个3x3像…

【进阶】面向对象之权限修饰符代码块

文章目录 权限修饰符权限修饰符的使用规则 代码块分类局部代码块(了解就行)构造代码块(了解就行)静态代码块(重点) 权限修饰符 权限修饰符的使用规则 成员变量私有方法公开 特例: 如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有. 代码…

智诊小助手TF卡记录文件导出

若想将TF卡中记录的数据文件导出可按以下的流程进行配置: 点击主界面中的导出选项即可进入到下图中TF卡应用界面 点击TF卡应用界面中“查看记录文件”的选项,进入导出文件界面。 …

南科大分享|大数据技术如何赋能大模型训练及开发

嘉宾介绍 张松昕,南方科技大学统计与数据科学系研究学者,UCloud 顾问资深算法专家,曾任粤港澳大湾区数字经济研究院访问学者,主导大模型高效分布式训练框架的开发,设计了 SUS-Chat-34B 的微调流程,登顶 Ope…

什么是iPaaS?iPaaS选型、落地及案例分析

在iPaaS行业摸爬滚打已经8个年头了。从最初的技术支持做起,到现在负责整个集成项目的规划和实施,我见证了iPaaS技术在国内的快速发展。今天,我想和大家深入聊聊iPaaS这个话题,希望能给正在考虑数字化转型的企业一些参考。 什么是…

大模型LoRA微调过程

LoRA (Low-Rank Adaptation of Large Language Models) 是一种用于微调大型预训练模型的方法,尤其适合在计算资源有限的情况下进行微调。通过限制参数更新的范围,并巧妙利用矩阵分解,LoRA 大幅减少了微调过程中的参数量,从而提高了…

探索实缴注册资金的魅力:知识产权实缴的关键所在

在企业的运营和发展中,实缴注册资金具有一系列显著的优势,特别是当知识产权能够资本化时,更是为企业带来了多重机遇和价值。以下将分重点进行解析。 一、实缴注册资金的优势 增强企业信用和信誉 实缴注册资金向外界展示了企业的资金实力和承…

仓库管理是什么?有哪些核心要点?

一个运转良好的仓库就像是一台精密的机器,而仓库管理者就是那个让这台机器高效运作的关键人物。仓库可不只是堆货的地方,它关系着企业的供应链能否顺畅运转,成本能否得到有效控制。一个优秀的仓库管理者,能让仓库井井有条&#xf…

echarts多折线按组分类控制显示隐藏

需求:目前有俩个组数组分别为sss和aaa,sss和aaa有4个属性,分别为温度、湿度、气压和ppm,根据不同的属性每组画出4条折现,结果应该为8条折现,每条折现颜色不一致,名称也不一致,时间也…

Overfrp内网穿透用例:使用域名部署穿透服务器以访问内网http/https服务

项目地址:https://github.com/sometiny/overfrp 使用overfrp部署穿透服务器,绑定域名后,可使用域名访问内网的http/https服务。 用例中穿透服务器和内网机器之间的访问全链路加密,具有ssh2相当的安全级别。!&#xf…

软件测试的常用的面试题【带答案】

1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫XXX,今年24岁,来自XX,就读专业是电子商务,毕业后就…

Spring18——Spring事务角色(事务管理员、事务协调员)

39-Spring事务角色 这部分我们重点要理解两个概念,分别是事务管理员和事务协调员。 当未开启Spring事务时 AccountDao的outMoney因为是修改操作,会开启一个事务T1 AccountDao的inMoney因为是修改操作,会开启一个事务T2AccountService的tr…

爬虫(反调试)

其实就是一种给页面反爬机制,一般页面用不到。 万能解决反调试方法:

康师傅涨价背后:是自救还是失策?

涨价策略虽缓解成本压力,却可能导致消费者忠诚度下降,促使消费者转向竞品,加剧康师傅市场份额的流失。 转载:原创新熵 作者丨璐萱 编辑丨蕨影 康师傅方便面又双叒叕涨价了! 今年5月份以来,在人们感叹买不…

C++与Rust那些事之跳过析构函数

C与Rust那些事之跳过析构函数 在Rust中mem::forget用于防止对象的析构,跳过清理工作,从而让资源的释放交给其他机制管理。 例如: let file File::open("foo.txt").unwrap(); mem::forget(file); 那么在C中如何防止析构&#xff1f…