数字IC设计
文章平均质量分 52
little_ox
这个作者很懒,什么都没留下…
展开
-
SoC芯片设计流程
SoC设计是从整个系统的角度出发的,主要包括模型算法、芯片架构、各层次电路直至器件的设计。从硬件设计角度来看,在确保芯片function正确的条件下,芯片的面积(A)、性能(P)、功耗(P)是衡量一颗芯片是否成功的重要技术指标,即PPA。设计定义说明(spec)主要描述芯片设计总体架构、规格参数、模块划分、使用的总线以及各模块详细定义等。顶层模块集成将各个不同功能的IP整合在一起,一般包括自主研发设计的和向其他公司购买的,形成一个完整的设计。一般使用verilog语言进行电路的设计。前仿真一般转载 2021-07-29 17:08:59 · 5599 阅读 · 0 评论 -
关于建立时间和保持时间的理解
建立时间分析建立时间:在时钟上升沿到来之前,数据稳定的最小时间。该处定义所陈述的时钟上升沿为,UFF1的时钟上升沿,在寄存器到寄存器中,UFF1在CLKM的第二个时钟沿处才能采集到UFF0传递过来的数据。知道上述理论之后,我们需要知道对于UFF1它的D端实际到达时间和需要时间。由上图可知,实际情况下数据从UFF0的CK端(D端)到UFF1 D端所经过的路径有:(1)UFF0本身CK->Q端延时 tcq(2)Combinational logic 延时 tdp该时间为数据实际到达UF.原创 2021-07-25 23:18:58 · 1118 阅读 · 0 评论 -
爲什麽一个标准的反相器中PMOS管的寬長比要比N管大
主要和载流子有关,P管是空穴导电,N管是电子导电,电子迁移率大于空穴,同样的电场强度下,N管电流大于P管,因此要增大P管的宽长比,使之对称。这样才能使两者上升时间和下降时间相等,高低电平的噪声容限一样、充放电时间相等...原创 2021-07-25 20:11:56 · 4926 阅读 · 0 评论 -
靜態時序分析和動態時許分析特點
靜態時序分析静态时序分析是采用穷尽分析方法来提取整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立时间和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就可以穷尽所有的路径,且运行速度很快,占用内寸较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计验证中动态时序分析动态时序模拟就是通常的模拟仿真,因为不可能产生完备的测试向量,覆盖门级原创 2021-07-25 20:08:20 · 194 阅读 · 0 评论 -
格雷碼理解
什么是格雷码?下面一段来自百度百科:定义:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)。另外当由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用原创 2021-07-24 10:35:44 · 3672 阅读 · 1 评论 -
定点数无损量化方面理解
也有同学的不同理解,但是殊途同归,最终意思都是一致的,https://blog.csdn.net/qq_31006535/article/details/106064595https://blog.csdn.net/CLL_caicai/article/details/108229960原创 2021-07-21 17:41:33 · 355 阅读 · 0 评论 -
Python 基礎函數學習
1、 Python读取txt文件函数read()、readline()、readlines()read() 一次性读全部内容一次性读取文本中全部的内容,以字符串的形式返回结果with open("test.txt", "r") as f: # 打开文件 data = f.read() # 读取文件 print(data)readline() 读取第一行内容只读取文本第一行的内容,以字符串的形式返回结果with open("test.txt", "r").原创 2021-07-21 15:34:23 · 147 阅读 · 4 评论 -
FIFO深度计算
FIFO深度学习格雷码的轴对称问题。这个我在学格雷码的时候还真没想到。2,为何用格雷码而非二进制码做CDC。3,异步FIFO的大致框图。4,满空信号产生。尤其是满。5,RDCLK和WRCLK差距较大时,是否会造成multi-bit的问题。6,接5,是否会造成跳过了full而full+1的状态漏过满。7,Verilog Coding。SRAM用于数据的暂时存储,读写地址都由Controller控制,可以随机访问任意地址。FIFO是First in First out的缩写,其读写是有特定顺序的原创 2021-07-08 23:02:06 · 6508 阅读 · 0 评论 -
异步FIFO的生成原理
异步FIFO的生成一、FIFO简介FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。用途1: 异步FIFO读写分别采用相互异步的不同时钟。在现代集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟,多时钟域带来的一个问题就是,如何设计异步时钟转载 2021-07-08 22:52:56 · 948 阅读 · 0 评论 -
超前进位加法器原理与设计
超前进位加法器原理与设计一、行波进位加法器关键路径分析N比特行波进位加法器可由N个全加器级联而成,电路的延迟包括门延迟和线延迟等,分析忽略线延迟。单比特全加器门电路图从输入a,b,cin到输出s和cout,有以下路径: a->s:经过xor1,xor2两个门电路 b->s:经过xor1,xor2两个门电路 cin->s:经过xor2一个门店路 a->cout:经过xor1,and1,or1三个门电路 b->cout:经过xor1,and1,or1三个门电路 cin->co原创 2021-07-04 10:47:04 · 9182 阅读 · 2 评论 -
数字IC设计要求
基本要求(共性要求,基本所有公司都会要求):1.学历:大部分公司要求硕士以上,少数公司要求本科以上2.专业:微电子/电子/集成电路/自动化/通信等相关专业,基本没太大限定,很多公司直接就没写专业要求3.基本技能要求:(1)精通数字电路设计(2)熟悉Verilog或VHDL,大部分要求Verilog进阶要求:(部分公司要求其中一项或多项,会最好,有的不会也不要紧)1.熟悉异步电路设计2.熟悉FIFO的设计3.熟悉UNIX系统及其工具的使用4.熟悉脚本语言Perl、Shell、Tcl等5.原创 2021-07-04 09:38:38 · 640 阅读 · 0 评论 -
数字IC验证学习笔记
数字IC验证学习笔记 1. 验证介绍 1.1 验证介绍1.2 System verilog介绍1.3 UVM介绍123 1.1 验证介绍 (1). 验证概念 主要用来证明设计功能正确,并且符合设计功能描述的流程 (2). 验证平台 激励发生器:对DUT创建测试序列,先易后难激励检测器:观察DUT输入输出比较器:对DUT输出与预期数据相比对时钟/重置:提供时钟和复位信号检查结果报告 (3). 验证工作内容 ...转载 2021-07-03 16:19:07 · 2199 阅读 · 0 评论 -
AMBA总线—APB总线协议详解
文章目录 一、APB总线介绍1.1.什么是APB总线1.2.典型的基于 AMBA 总线的系统架构1.3.APB信号列表(重点) 二、APB总线传输(时序)2.1.APB 状态机2.2.写操作(重要)2.3.读操作(重要)2.4.APB模块接口(重要)2.4.1.APB Bridge框图2.4.2.APB Slave框图 三、APB到AHB的接口3.1.读操作3.2.写操作3.3.读写交替传送 一、APB总线介绍 关于总线的一些概念: 总线:计算机内部和计算机之间传输数据的..转载 2021-07-01 22:46:21 · 21884 阅读 · 5 评论 -
AMBA总线—AHB总线协议详解
一、典型AMBA系统AHB总线的强大之处在于它可以将微控制器CPU、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等连接起来构成一个独立的完成SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完成的SOC芯片的骨架二、AHB总线简介1、AHB总线组成完成的AHB总线由四个部分构成:==AHB主设备Master:==发起一次读/写操作,某时刻只允许一个主设备使用总线==AHB从设备Slave:==响应一次读转载 2021-07-01 22:34:20 · 14449 阅读 · 4 评论 -
verilog实现有符号数求绝对值
原码求绝绝对值,比较简单就不再说明,这里按照补码就绝对值进行分析补码 -->原码如果数据位负数 则符号位不变 数据位按位求反 + 1;如果数据位正数,则补码 = 原码module OToC_code( input [4:0] a, output [4:0] out ); //assign out = (a[4] == 1)?({a[4],~a[3:0]}+1):a;assign out = (a[4] == 1)?(~a + 1'b1):a;endmodu原创 2021-06-27 19:23:58 · 7012 阅读 · 5 评论 -
verilog实现将原码转换为反码
根据符号位进行判断,如果为1则需要按位求反加1,否则保持原状module OToC_code( input [4:0] a, output [4:0] out ); assign out = (a[4] == 1)?({a[4],~a[3:0]}+1):a;endmodule测试代码module tb_Code; // Inputs reg [4:0] a; // Outputs wire [4:0] out; // Instantiate the U原创 2021-06-27 19:15:15 · 941 阅读 · 0 评论 -
verilog实现有符号数比较
实现有符号补码数据比较首先比较两个数据最高位(符号位),最高位一致情况下比较后四位。如果后四位谁大,则该数据大module max_op( input clk,rst_n, input [4:0] a, input [4:0] b, output reg [4:0] out ); reg cmd_flag; always @(posedge clk or negedge rst_n)begin //确定输入的数据最高位是否一致 if(!rst_n) cmd_flag &l原创 2021-06-27 19:02:55 · 9710 阅读 · 4 评论 -
Verilog设计RAM
SRAMcsen_n为低,wren_n为高写数据。csen_n为低,wren_n为高读数据。csen_n为高不工作原创 2021-06-27 12:57:52 · 365 阅读 · 1 评论 -
Verilog实现同步FIFO
用Verilog实现一个同步FIFO,深度16,数据位宽8bitmodule Sy_FIFO#( parameter DATA_WIDTH = 8, parameter ADDR_WIDTH = 4, parameter RAM_DEPTH = (1 << ADDR_WIDTH) ) ( input clk, input rst_n, input [DATA_WIDTH-1:0] data_in, input wr_en, input rd_en,原创 2021-06-27 12:52:09 · 1957 阅读 · 1 评论 -
VerilogHDL实现异步RAM
用Verilog实现一个异步双端口ram,深度16,位宽8bit。A口读出,B口写入。支持片选,读写请求,要求代码可综合module Asy_Ram#( parameter ADDR_WIDTH = 4, parameter DATA_WIDTH = 8, parameter DATA_DEPTH = 1 << ADDR_WIDTH )( input clka, input clkb, input rst_n, input csen_n, //Port A Signal i原创 2021-06-26 23:04:17 · 823 阅读 · 0 评论 -
二进制计数器、johnson计数器、环形计数器原理和实现
二进制计数器n位的2进制计数器,可以表示2^n个状态相邻的两组数据会出现两位或两位以上不一样verliog实现//实现4bit二进制计数器always @(posedge clk or negedge rst_n) begin if(!rst_n) begin o_cnt <= 4'd0; end else o_cnt <= o_cnt +1'b1;endJohnson计数器(右移)n位的Johnson计数器,可以表示2n个状态举例:4位的Johnson原创 2021-06-26 10:45:12 · 1936 阅读 · 0 评论 -
亚稳态和毛刺
亚稳态和毛刺—— Meta-stability and Hazard reference: http://www.360doc.com/content/11/0913/23/6714119_148048038.shtml 我们在芯片设计与调试中,一定曾经遇到过一些诡异的问题。比如芯片的某一部分莫名其妙的复位却并没有故障记录、比如有的问题上下电和...转载 2021-06-25 14:40:55 · 804 阅读 · 0 评论 -
时钟 glitch free 切换电路
用Verilog实现glitch free时钟切换电路。有毛刺的时钟切换电路这个时钟切换电路是一个纯组合逻辑,输出时钟(OUT CLOCK)由选择信号(SELECT)控制,当SELECT为1时输出CLK1,反之,输出CLK0.看似很简单,实现了时钟的切换,实则存在着很大的隐患,如下图所示:assign outclk = (sel==1)?clk1:clk0;相关时钟源的毛刺保护下图显示了防止源时钟相互倍数的时钟开关输出出现毛刺的解决方案。在每个时钟源的选择路径中插入一个负边沿触发的D触发器原创 2021-06-25 11:34:36 · 680 阅读 · 1 评论 -
跨时钟域处理
多时域设计中,如果处理跨时钟域单bit : 两级触发器同步(适用于慢到快)多bit :采用异步FIFO,异步双口RAM加握手信号格雷码转换描述跨时钟域信号传输,慢时钟域到快时钟域always@(posedge clka or negedge rst_n) begin if(!rst_n) begin signal_b_r <= 2'b00; end else begin signal_b_r <= {signal_b_r[0],signal_b}; endend原创 2021-06-24 21:08:31 · 386 阅读 · 0 评论 -
什麽是高阻態
电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,可以理解为断路,不被任何东西所驱动,也不驱动任何东西原创 2021-06-24 19:52:11 · 324 阅读 · 0 评论 -
进制之间转换
常用的进制有二进制 八进制 十进制和十六进制R进制数转换为十进制:按权展开,相加十进制转换位R进制:整数部分,除R取余数,除到商为0为止。小数部分,乘R取整法,乘到积为0为止。二进制转八进制数:三位一组,整数部分左边补0,小数部分右边补0.反之亦然二进制转十六进制:四位一组,整数部分左边补0,小数部分右边补0.反之亦然...原创 2021-06-24 19:40:24 · 255 阅读 · 0 评论 -
带有小数点补码计算
计算机中为了使计算更加高效的快捷,一般采用补码进行运算。补码格式正数:+3补码[0011] = 原码[0011] = 反码[0011]负数:-3补码[1101] = 反码[1100] = 原码[1011]当数据位小数时。-1.25 = 原码[1001.0100] = 反码[1110.1011]=补码[1110.1100]3.75 = 原码[0011.1100] = 反码[0011.1100] = 补码[0011.1100]-1.25 + 3.75 = 2.50;1110.1100 +原创 2021-06-24 17:49:57 · 25412 阅读 · 2 评论 -
字 字节 双字概念确定
bit (位)byte(字节)word(字)dword(双字)1byte = 8bit1word = 2byte = 16bit1dword = 2word = 4byte = 32bit1qword = 2dword = 4word = 8byte = 64bit原创 2021-06-24 17:42:06 · 1899 阅读 · 0 评论 -
存储器的解释和理解
存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。ROM:Read Only Memory,只读存储器,手机、计算机等设备的存储器,但现在的所说的ROM不只是Read Only了,也是可以写入的RAM:Random Access Memory,随机存取存储器,手机、计算机的运行内存。SRAM:Static Random-Access Memory,静态随机存取存储器,利用原创 2021-06-24 17:37:49 · 629 阅读 · 0 评论 -
ASIC设计流程和流程中用到的工具
原创 2021-06-24 17:23:09 · 740 阅读 · 0 评论 -
数字IC设计要求
目录 华为海思 紫光展锐 复旦微电子 总结 华为海思 芯片与器件设计工程师 应届生留学生实习生 岗位职责 1、负责数字芯片的详细设计、实现和维护以及综合、形式验证、STA、CRG设计等工作; 2、及时编写各种设计文档和标准化资料,理解并认同公司的开发流程、规范和制度,实现资源、经验共享。 岗位要求 1、微电子、计算机、通信工程、自动化、电磁场等相关专业; 2、符合如下任一条件者优先: (...转载 2021-06-24 17:06:04 · 1221 阅读 · 0 评论 -
数字IC设计---反相器相关知识
反相器是数字电路中最基本的门电路之一,由NMOS和PMOS组成。学过半导体器件的都对此结构比较清楚。下面我总结了一些反相器相关的知识:一、反相器的结构反向器由NMOS和PMOS组成,栅端(G)相连作为输入端,漏断相连作为输出端,NMOS的源端接地,PMOS的源端接电源VDD.二、反相器的电压、电流传输特性AB:T1导通T2截止BC:T1T2导通CD:T1截止T2导通VTC(Voltage Transfer Characteristics)曲线:VTC的形状基本上与高于阈值的操作相同。原创 2021-06-22 17:13:36 · 11686 阅读 · 0 评论 -
数字IC设计---组合逻辑电路中的竞争与冒险问题
一、竞争与冒险现象及其形成原因两个输入信号同时向相反方向的逻辑电平跳变的现象(即一个由1- > 0, 另一个从0 -> 1),称为竞争。因竞争导致在输出端可能产生尖峰脉冲的现象,称为冒险。通俗一点的说,信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险。竞争表现在输出波形上,则是出现0电平或者1电平的尖峰,称 “毛刺”。上图表示一个与门,在输入信号A从1变为0,并且B 从)变为1,而且B信号首先上升到原创 2021-06-22 17:04:18 · 2678 阅读 · 0 评论 -
数字IC设计---奇偶校验
奇偶校验电路1、奇偶校验码奇偶校验码是比较简单的数据校验码,可以检测出一位错误,但是并不能确定错误的位置。如果数据中发生多位数据错误就可能检测不出来,更检测不到错误发生在哪一位;2、实现方法将有效信息位和校验位读入,判断1 的个数为奇数还是偶数个,在奇校验时,正常的情况下个数应该为奇数个,偶校验正常情况下应该时偶数个。校验码的生成:对于奇校验,判断有效信息的位1的个数,若为偶数,则校验位为1,奇数则校验位为0;偶校验则相反。3、用verilog设计实现8bit奇偶校验电路。奇偶校验电路,一般原创 2021-06-22 16:48:42 · 2400 阅读 · 0 评论 -
VerilogHDL实现除法操作
硬件电路中实现除法操作一般基于两种方式:乘法操作和减法操作基于减法的除法器对于32位的无符号除法,被除数a除以除数b,他们的商和余数位数一定不超过32位。首先将a转换为32位,b也转换为32位。在每周期的开始,先将a左移一位,末尾补0,然后和b比较,如果大于b则a-b且加上1,否则继续往下执行移位、比较和减法。执行32次后结束,a的高32位即为余数,低32位为商假设4bit的两数相除 a/b,商和余数最多只有4位 (假设1101/0010也就是13除以2得6余1)我们先自己做二进制除法,则首先看a的原创 2021-06-21 14:51:43 · 2060 阅读 · 0 评论 -
寄存器 锁存器 触发器区别与联系
锁存器锁存器为电平触发的存储单元,数据存储的动作(状态转换)取决于输入时钟信号的电平值分为普通锁存器和门控锁存器普通锁存器:无控制信号,输出状态始终由输入状态决定。这种锁存器极易出现问题,因此出现了门控锁存器门控锁存器:在输入段添加门控时钟,控制输入锁存器的信号,信号只在时钟的高电平或者低电平变化。大大改善了基本锁存器的性能,但是随之功耗也突出。触发器触发器是边沿敏感的存储单元,数据存储动作(状态转换动作)由某一信号的上升或者下降沿进行同步,只在边沿处进行动作。触发器分为两种 主从触发器原创 2021-06-18 09:25:03 · 820 阅读 · 2 评论 -
序列发生器的设计
Verilog – 序列发生器的设计产生序列信号11010111至少需要几级触发器?思路1 - 状态机实现最容易想到的就是采用状态机,每个状态输出序列中的一位,发送完一组序列后回到开始状态继续循环。需要注意的是状态变量的位宽,由于题目要求采用最少的触发器,因此至少需要log2(序列长度)个状态,对于本题也就是3个触发器,输出逻辑可以采用always(*)纯组合逻辑实现。思路2 - 移位寄存器实现序列的问题很多都可以用移位寄存器解决,只是移位寄存器方案可能会消耗较多的寄存器资源。对于本题,如果原创 2021-06-17 20:50:03 · 4511 阅读 · 1 评论 -
Verilog语法 -: +: 说明
先看定义的变量是大端还是小端模式reg [31:0] big_vect; //大端reg [0:31] little_vect; //小端看升序(+:)还是降序(-:)看位宽并进行转换举例说明:reg [31:0] big_vect;reg [0:31] little_vect;问题:big_vect[0 +:8]little_vect[0 +:8] 首先查看变量big原创 2021-06-16 23:07:12 · 6955 阅读 · 3 评论 -
Verilog---generate使用学习
概述Verilog中的generate语句常用于编写可配置的、可综合的RTL的设计结构。它可用于创建模块的多个实例化,或者有条件的实例化代码块。然而,有时候很困惑generate的使用方法,因此看下generate的几种常用用法。generate的结构类型我们常用generate语句做三件事情。用来构造循环结构,用来多次实例化某个模块构造条件generate结构,用来在多个块之间最多选择一个代码块,条件generate结构包含if–generate结构和case–generate形式用来断言原创 2021-06-16 22:04:16 · 956 阅读 · 0 评论 -
AHB-SRAM设计记录(1)
8K 指8K的深度(deepth) 第二个8则表示为宽度。原创 2021-06-16 21:14:21 · 632 阅读 · 0 评论