![](https://img-blog.csdnimg.cn/20200819223419449.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ASIC/FPGA设计基础
文章平均质量分 63
ASIC/FPGA设计基础
Arist9612
这个作者很懒,什么都没留下…
展开
-
华莱士树乘法器
传统乘法器设计在求出中间结果时,使用全加器对各级中间结果相加求出最终乘法器结果。由于全加器进位链的限制,特别是随着乘法器位宽的增加,乘法器的速度受到限制,而华莱士树加法器采用进位保存加法器而非全加器对中间结果进行计算,它能同时执行三数相加而非两数相加,虽然消耗元器件个数增多但其速度提高很多。进位保存加法器输入由X,Y和进位Z组成,其输出由改位和S和进位C组成,一次计算将产生两个结果,相比传统的全加器区别在于进位保存加法器的进位输出并不参与上一位的求和,而是单独输出,最后再用一个全加器进行进位加入。下面就4转载 2022-04-19 22:03:40 · 2999 阅读 · 0 评论 -
barrel_shift
barrel_shift桶形移位转载 2022-01-03 10:08:44 · 213 阅读 · 0 评论 -
MUX优化
module mux_pro#( parameter D = 4, parameter W = 6) ( input wire [D*W-1:0] i_array, input wire [D-1:0] i_hot, output reg [W-1:0] o_sel);always @(*) begin :proc_dmux integer i; o_sel = {W{1'b0}}; for(i=0;i<D;i=i+1原创 2021-11-07 23:28:11 · 503 阅读 · 0 评论 -
mux_vs_merge in FPGA——以oht2bin为例
1. 需求根据输入的独热码转换为二进制码说明merge的核心思想是将独热码展宽为和目标数据同等位宽的bitmap,之后做逻辑运算2. 代码module mux_vs_merge( input clk_i, input clk1_i, input [63:0] one_hot1_i, input [63:0] one_hot2_i, input [63:0] one_hot3_i, output wire [5:0] idx1_o, outp原创 2021-11-07 23:16:44 · 409 阅读 · 0 评论 -
常用片上/板载存储器简介
SRAM,SRAM 的全称叫做 Static Random-Access Memory,也就是静态随机存储器,这里的“静态”说的就是只要 SRAM 上电,那么 SRAM 里面的数据就会一直保存着,直到 SRAM 掉电。 SRAM 最大的缺点就是价格高、容量小!但是应用对于内存的需求越来越高,必须提供大内存解决方案。为此半导体厂商想了很多办法,提出了很多解决方法,最终 SDRAM 营运而生,得到推广。SDRAM 全称是 Synchronous Dynamic Random Access Memory,翻译.原创 2021-06-14 11:26:57 · 1169 阅读 · 0 评论 -
数字电路基本单元
文章目录1. 组合逻辑电路基本单元1.1 非门电路1.2 与非门电路1.3 或非门电路1.4 传输门(Transmission Gate)1.5 三态门(Tristate buffer)2. 时序电路基本单元2.1 锁存器2.2 寄存器3. 寄存器建立保持时间4. 驱动能力(driven strength)1. 组合逻辑电路基本单元1.1 非门电路A为1,上端PMOS晶体管截止,下端NMOS晶体管导通,Y端接地,输出低电平。1.2 与非门电路当A=1 B=0时,导通情况如左下图所示,最右原创 2021-05-03 19:59:53 · 2552 阅读 · 0 评论 -
典型IP设计流程
文章目录1. 设计前期规划1.1 设计需求分析1.2 IP分类:算法模型、接口1.3 数据结构定义1.4 系统框架定义、功能级流水线划分1.4.1 一个IP的大框架示意图1.4.2 子模块划分1.4.3 功能级流水示意图1.4.4 数据在DDR中的结构1.5 子模块功能定义1.6 子模块电路结构定义、时序级流水划分2. 设计中期RTL codeing2.1 子模块RTL设计2.2 子模块RTL仿真、验证2.3 IP集成与IP系统级别仿真验证2.4 代码检查2.5 总的设计检查2.6 逻辑综合2.7 形式验证原创 2021-05-02 09:55:29 · 3350 阅读 · 0 评论 -
CMOS晶体管原理
文章目录1.物理材料2. NMOS/PMOS晶体管3.反相器4. 影响电路延时的因素(PVT)1.物理材料通过对单晶硅进行参入杂质,使其中形成游离的电子和空穴。当外部附加电场时即可形成电流。在P端给高压,N端给低压,那么就会有电流通过PN节。2. NMOS/PMOS晶体管将PN节进行组合,加入控制端,就构成了NMOS/PMOS晶体管。如上图所示是一个NMOS晶体管,有四个端口,gate端也叫控制端、source端、drain端。gate和body之间有一个SiO2的绝缘层,理想状态下是原创 2021-04-27 10:11:53 · 3770 阅读 · 0 评论 -
字符编码方法概述
文章目录1. ASCII码2.GB2 & GBK3. Unicode4. UTF5.总结1. ASCII码由于计算机是美国发明的,因此,最早只有127个字符被编码到计算机,也就是大小写英文字母、数字和些符号,这个编码表被称为 ASCII 编码,A 的编码是 65 ,z 的编码是 122 。后128个称为扩展ASCII码。由于这些字符串长短不一,写在一起让我们难以分清字符的起始位置,所以就这255个字符,那最长的也不过是111111111B位,我们就把所有的10进制都转换成8位的2进制。2转载 2021-04-01 10:45:28 · 720 阅读 · 0 评论 -
布线拥塞
1 什么是布线拥塞芯片在布线的时候, 当可利用的布线资源少于所需要的布线资源时, 就会发生布线拥塞。2 布线拥塞后果解决绕线拥塞是数字后端设计布局阶段的基本要求。布局是要根据对功能、对模块, 具体到对Hardmacro或者标准单元做整体的规划。布局设计将影响到芯片的面积、速度、信号完整性和设计周期。一个好的布局将大大减少后续布线以及时序收敛所耗费的时间和精力。布局阶段如果发生严重的拥塞将给布线带来困难, 有可能导致大量的违反工艺规则的违例, 最终导致布线无法绕通或者布线时间过长;另一方面, 拥塞原创 2020-12-28 13:27:01 · 1385 阅读 · 0 评论 -
NIOS软核包括什么头文件
头文件从内容上分为2类:系统标准库与自定义库。用<>包含,编译器会先在系统目录下搜索;用” ” 包含,编译器会先在用户目录下搜索。所以,如果使用系统标准库,要使用<>来包含头文件;使用自定义头文件用“”包含最好。头文件从内容上分为3类:一类是与硬件配置相关的,比如system.h,包含了Qsys IP的基地址/时钟频率/中断优先级/位宽等配置信息;第二类是为了调用API函数配置IP而引入的头文件,比如为了调用中断注册函数需要引入sys/alt_irq.h,为了使用qsort.原创 2020-10-22 19:26:50 · 280 阅读 · 0 评论 -
如何FPGA选型
FPGA选型考虑因素?参数原则IO、LVDS个数越多越好,一个板子上可以实现更多通道,考虑余量功耗越低越好,C10有标压(1.2V)和低压(1.0V)两种,我们选低压速度FPGA速度等级,影响到memory、clock tree的最大运行频率。Cyclone 10的I8太慢(362MHz),I7还可以(472MHz)尺寸越小越好(FBGA,Fine-Pitch Ball Grid Array 较好),和资源量也有关系资源量越多越好,资源使用量大于70%原创 2020-09-10 17:17:31 · 502 阅读 · 0 评论 -
NIOS软件框架
1.Eclipse软件工程结构主要介绍上面两个:应用程序开发,开发者创建的软件工程BSPsystem.h,连接QSYS硬件和软件的桥梁,包括所有QSYS系统中的IP信息,包括基地址、中断号等。HAL结构,硬件抽象层系统库是在应用程序和系统硬件之间的一个系统库,HAL应用程序接口(API)与ANSI C标准库综合在一起,可以使用类似C语言的库函数的方式访问硬件设备或文件。我们可以用这个系统库函数来和底层的硬件进行交互而无需关注底层细节。HAL可看做是一个支持应用程序开发的软件平台,提供了大量A转载 2020-09-03 22:52:52 · 361 阅读 · 0 评论 -
NIOS硬件架构
1.NIOS硬件框架结构NIOS II系统的硬件结构框图1.寄存器文件用来存放数据的一些小型存储区域,很靠近CPU。暂时存放参与运算的数据和运算结果。包括32个通用寄存器、32个控制寄存器、影子寄存器组。通用寄存器,多用途,可以暂存指令,数据和地址。通用寄存器表,程序会产生异常,复位异常,外部中断也会有异常,后面重点关注ea这个异常返回地址。运算逻辑单元2.NIOS软件框架结构3.程序上电自启动过程BootLoader将在0地址的代码搬移到片外的ram中再去执行.转载 2020-09-03 15:31:21 · 1659 阅读 · 0 评论 -
典型ASIC设计流程
ASIC设计流程总体分四步:确定项目需求、系统级设计、前端设计、后端设计。本文也将按照这个顺序展开。1.确定项目需求由公司市场部进行市场分析,确定下一代芯片需求,制定芯片的具体目标。物理目标:工艺,使用多少nm制程裸片面积,前期设计方便后期集成封装,越高级的芯片封装也越复杂,好的封装往往能带来芯片电气性能和稳定性的提升,并能间接地为主频的提升提供坚实可靠的基础性能目标:速度,包括主频、接口速率等等功耗 ,现在提到一个非常高的高度,移动端对功耗的要求非常高,比如手机芯片功耗会影响其原创 2020-08-10 20:57:10 · 1525 阅读 · 1 评论 -
二选一门控时钟设计
1.二选一门控时钟电路设计2.设计代码RTL设计module clk_gating( input sel_i, input en_i, input clk1_i, input clk2_i, output clk_o); wire clk1_ando,clk2_ando;reg clk1_dff1,clk1_dff2;reg clk2_dff1,clk2_dff2;assign clk1_ando = clk1_i && clk1_dff2;assig原创 2020-07-18 14:14:25 · 601 阅读 · 0 评论 -
跨时钟域数据传输(CDC,clock domain crossing)
1.为什么要分析跨时钟域数据传输问题?正常来讲同步时钟域下的数据传输,只要建立和保持时间满足,外部环境(核心电压/温度)没有剧烈变化,一般情况下可以保证数据可靠传输。而异步时钟域在时序约束的时候已经设置了不同的clock group,相互之间的数据是不会进行时序分析的,因此即便是静态时序分析没有报告时序问题也不意味着异步数据传输可以可靠进行。因此说,跨时钟域的数据传输是设计出来的,而不是约束...原创 2020-04-12 16:55:00 · 1407 阅读 · 0 评论 -
异步FIFO
一、FIFO简单讲解FIFO的本质是双口RAM, 先进先出,可以同时读写。重要参数:1.fifo深度(简单来说就是需要存多少个数据)2.fifo位宽(每个数据的位宽)FIFO有同步和异步两种,同步即读写时钟相同,异步即读写时钟不相同1.同步FIFO作为数据缓存,例如信号采集的多通道设计系统,各个通道产生有效数据的时机完全时外 部时间决定的,这时若两个通道同时有了数据,那就...原创 2020-04-11 11:22:32 · 1376 阅读 · 0 评论 -
FPGA设计之门控时钟
门控时钟的设计初衷是实现FPGA的低功耗设计,本文从什么是门控时钟、门控时钟实现低功耗的原理、推荐的FPGA门控时钟实现这两个角度来分析门控时钟。什么是门控实时钟门控时钟技术(gating clock) 是通过在时钟路径上增加逻辑门对时钟进行控制,使电路的部分逻辑在不需要工作时停止时钟树的翻转,而并不影响原本的逻辑状态。在ASIC和FPGA设计中都存在门控时钟的概念(前者应用更广)。典型的门...原创 2020-02-27 23:19:48 · 2432 阅读 · 2 评论 -
基于Qsys的SDRAM控制器
1.Intel FPGA中SDRAM控制器IP示意图PLL phase shift:使得输入SDRAM控制器和外部SDRAM芯片的时钟有一定的相位偏移(需要看具体SDRAM的手册),满足时序要求。Avalon-MM Slave Port:通过在Qsys中配置NIOS CPU和SDRAM控制器连线完成对SDRAM的数据和命令写入。address:地址线,在此处会把SDRAM的行列段地址映射成一种连续的地址形式;data:数据线,宽度与SDRAM数据线位宽相同;Control:读写信号;wai原创 2020-07-16 10:57:26 · 1104 阅读 · 0 评论 -
IntelFPGA_DCFIFO_IP
dcfifo常用于跨时钟域数据传输,有两种工作模式,normal mode/ showahead mode,本文主要通过仿真对比这两种模式的区别。1.showahead mode参数设定intended_device_family = "Cyclone 10 LP",lpm_numwords = 128, //FIFO深度在位宽为写位宽32bit时为128,响应的以读位宽16bit来看深度为256lpm_showahead = "ON", //模式设置lpm_type = "dcfifo_m.原创 2020-07-04 11:58:04 · 4396 阅读 · 0 评论 -
Qsys_UART中断
1.QSYS中的UART IP 结构图endofpacket:产生中断信号,比如写入0x5A那么当rxdata/txdata的数据是0x5A的时候就会产生一个中断信号。寄存器位概览Status寄存器RRDY:接收ready信号,当接受数据的寄存器无内容时为0,有内容拉高;TRDY:发送ready信号;Control寄存器:多数bit只比Status寄存器多一个i,表示Control寄存器中保存了一个Status寄存器的中断使能信号IRRDY: 当RRDY信号为1,说明接受的数据有原创 2020-06-25 18:22:48 · 656 阅读 · 0 评论 -
IC/FPGA低功耗设计
1.概念功耗的构成:三个主要的功耗源:浪涌、静态功耗和动态功耗;浪涌电流: 指器件上电时产生的最大瞬时输入电流,称为启动电流;浪涌电流与设备相关; 浪涌功耗不是我们需要关注的地方,因此这里只是说明有这个功耗存在。静态功耗:也称待机功耗,静态功耗主要由晶体管的漏电流所导致的功耗;动态功耗:包括开关功耗或者称为翻转功耗、短路功耗或者称为内部功耗。动态功耗影响因素:门寄生电容、时钟翻转率、时钟频率、供电电压;降低功耗:应当在所有设计层次上进行,即系统级、逻辑级和物理级,层次越高对功耗降低越转载 2020-06-18 09:23:41 · 2792 阅读 · 6 评论 -
IntelFPGA_DDR_IP
0.DDR概述DDR=Double Data Rate 双倍速率。有两个显著好处,首先可以提高 memory 速率,其次可以减少 IO port 的占用。以高速接口为例:一般在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而 DDR 内存则是一个时钟周期内传度输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率数据传输。比如我们的数据总线是 32bit 的,但是输出端口是 16bit。可以用 DDR IP,datain_l 给低 16bit,datain_h原创 2020-06-15 15:39:10 · 920 阅读 · 0 评论 -
IC/FPGA系统设计的速度和面积优化
0.IC系统设计优化主要有两方面:资源优化速度优化无论是在ASIC还是FPGA中,硬件设计资源即面积(Area)是一个重要的技术指标。资源优化意义:1.可使用规模更小的可编程器件,降低系统成本,提高性价比。2.当耗用资源过多时会严重影响时序性能。3.为后续技术升级留下更多的可编程资源。4.资源耗用太多会使器件功耗显著上升。1.资源优化1.1 资源共享通过一个例子进行说明。现需要实现功能:通过选择信号s来选择执行A0 * B还是A1 * B的。描述方式1:对两个转载 2020-06-10 11:25:14 · 4528 阅读 · 0 评论 -
如何产生JIC文件(sof+ELF=jic)
1.为什么要产生jic文件Nios工程开发包括两个环节,前期的内核硬件开发和后期的内核软件开发。前期开发环境为Quartus,对应的下载文件为*.sof。后期开发环境为Nios II,对应下载文件为*.elf。项目调试时,先通过Quartus将*.sof下载至FPGA的RAM中,完成FPGA 内核的硬件化,接着通过Nios programmer将*.sof和*.elf一同烧写至flash中,最后将开发板重新上电,便完成了FPGA的程序固化。为了方便FPGA产品调试,可将*.sof和*.elf文件分步下原创 2020-06-04 17:33:19 · 1759 阅读 · 0 评论 -
FPGA设计之低功耗设计
本文转载自IamSarah博友的原创文章!最近在看《硬件架构的艺术》这本书,本篇博文也是来自书中的内容。随着工艺的进步,低功耗设计显得越来越重要了。作为一个数字前端设计师,我们就来看看如何在RTL级别减低功耗。实质上在大规模ASIC设计中,当RTL级设计完成的时候,整个系统至少80%的功耗就已经确定。后端流程没有办法修复微架构,而微架构和RTL代码风格对于动态和静态功耗有极大的影响。下面就说说在...转载 2020-02-25 10:24:46 · 3119 阅读 · 0 评论 -
FPGA设计之全局时钟网络
概述FPGA中的全局时钟网络资源,贯穿整个器件,为各个象限的各个资源类型(IO、LAB/ALM、乘法器、M9K等)提供服务。走全局时钟网络的信号具有低偏斜、高质量的特点。适合使用全局时钟网络的控制信号:譬如使能信号、CLK、RST_N、内部逻辑产生的锁存信号等,具有高扇出、低延时要求的信号。每个器件的全局时钟网络资源是有限的,譬如Cyclone 10 LP有20个,且用且珍惜。若工程要求使...原创 2020-03-31 00:04:32 · 3241 阅读 · 0 评论 -
FPGA设计之复位设计
1、异步复位信号亚稳态的原因:复位结束也就是释放的时刻恰在时钟上升沿的建立时间和保持时间之间时无法决定现在的复位状态是1还是0,造成亚稳态。下面是具体解释:在带有复位端的D触发器中,当reset信号“复位”有效时,它可以直接驱动最后一级的与非门,令Q端“异步”置位为“1”or“0”。这就是异步复位。当这个复位信号release时,Q的输出由前一级的内部输出决定。然而,由于复位信号不仅直接作...原创 2020-04-01 20:50:14 · 1281 阅读 · 0 评论 -
modelsim仿真(一)——为什么要仿真及仿真分类
1.为什么要进行仿真仿真可以让设计者能够很快知道模块输出值是否正确,开发新模块的时候这一点尤为重要。如果遇到稍微复杂一点的工程,那么当完成一次综合、布局布线的时间超过半个小时是很正常的。因此为了验证一个新加入的模块功能对整个工程进行编译从时间上来讲是不值得的。如果不仿真,单纯的用逻辑分析仪进行捕捉,每全编译一次消耗大量的时间,再者能观察到的信号有限,还会影响功能时序。这样一个流程...原创 2020-04-05 22:34:49 · 2943 阅读 · 0 评论 -
FPGA设计之浮点数的定点化
FPGA只能处理定点小数,用于需要高精度快速运算的地方。主要分为三步:一. 根据计算数值范围/精度设计数据结构,包括位数/有无符合/整数小数分别用多少位来表示二. 计算精度,量化误差,看看能否满足需求三. 进行量化转换,调用IP核或者设计移位计算模块举例例一 2.918 * 3.1415926转成定点数需要定义,小数和整数的位数。(1)3位整数,12位的小数,最高位为...原创 2020-04-11 23:28:42 · 1178 阅读 · 1 评论 -
逻辑综合(Synthesis)概述
1.概述概念: 逻辑综合是IC前端设计的重要步骤,就是将行为级/RTL级的电路转换为门级网表的过程。目的:决定电路的门级结构。寻求电路时序和面积的平衡, 功耗和时序的平衡,增强电路的测试性。逻辑综合三阶段:Synthesis=Translation+Optimization+Mapping转译:将HDL代码转为与工艺库(器件)无关的数据库优化:根据时序/面积/功耗等方面的要求,将上述...原创 2020-04-24 16:47:54 · 5907 阅读 · 0 评论 -
FPGA设计之高速安全状态机
1. 什么是状态机略2.注意事项2.1安全状态机:若设计的状态机的状态跳转信号是跨时钟域的,那么有必要对一般的状态机进行“安全化”,具体措施为:Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis).来使能Safe State Machine。告诉编译器,增加一部分额外的逻辑,使得当状态机进入非法状态时,可以自动恢复到复位状态。也可以在状态机外部手动打两拍来同步。在代码上也要做以下额外原创 2020-05-22 15:13:24 · 2521 阅读 · 0 评论