自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 在一款芯片中多个时钟域非常常见,跨时钟域检查至关重要。本篇记录的是CDC跨时钟域的基础概念。

时钟抖动(Clock Jitter):两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,使得时钟周期在不同的周期上可能加长或缩短。是同步时钟,时钟的同步关系与频率无关,只要是同源、有固定的相位关系,就是一组同步时钟。不是,不同的时钟源出来频率相同,但随着时钟的偏移和抖动,都会导致相位的不确定性。问题2: 有两个时钟是通过同一个时钟源分频出来的,但他们的频率不同,那么它们是否为同步时钟?一个电路的launch时钟和capture时钟不是同一个时钟,就是跨时钟域。

2022-09-17 10:34:55 968 1

原创 FPGA时序分析、优化与约束

FPGA时序分析、优化与约束。

2022-09-17 09:23:21 1179

原创 DC进阶-多周期约束详解

面试官首先问多周期是什么意思?让我给他做个详细解释。于是我给他balabala讲了下面的知识点,当然现场没那么详细,这里我详细给大家做下解释。一个多时钟周期的经典例子就是来自DC workshop中的乘法器,图1中时钟CLK的周期为10ns,根据设计规格加法器的延迟约为6个时钟周期。首发于写文章。

2022-09-17 09:15:53 1512

原创 Verilog实现计算最大公约数和最小公倍数

解在求解最大公约数与最小公倍数时,通常使用辗转相除法计算得到最大公约数,然后利用两数之积除最大公约数得到最小公倍数;设计一个时序电路,输入2个无符号数,位宽可以通过参数DATA_W确定,输出这两个数的最小公倍数和最大公约数。则最小公倍数=34*20/2=340;所以最大公约数为2;...

2022-07-29 11:43:31 794

原创 veilog实现模5运算(低位先输入)

一个12bit的数,一个bit一个bit串行输入,并且低位优先,求它模5的余数。解解决这一问题的关键就是注意到2"模5的周期性,如下所示。可以看到,模5的周期为4,因此,我们可以设置一个模4的计数器,当该计数器为0时,对应余数应该为1,为1时余数为2,…这一系列数,模5的余数分别为1,2,4,3,1,2。...

2022-07-29 11:02:29 1000

原创 单端口RAM实现FIFO

当wea拉高时,会将数据写入对应的地址,同时douta输出的数据与此时写入的数据是一致的,因此在读的时候需要重新生成对应的读地址给addra,并且disable掉wea。第一种办法采用两个单口RAM,两个单口RAM分开奇偶,相当于乒乓意思,然后再加一个REG,这样就把REG分开了。我的思路是遇到同时读写的时候就对写打一拍这个时候是对奇ram写入,然后下一拍在遇到同时读写那么同样打一拍后对偶ram写入。所以一个端口只读,一个端口只写,但是写入和读取的时钟可以不同,且位宽比可以不是11。...

2022-07-29 10:37:39 2444

原创 基于移位寄存器的同步FIFO

代码】基于移位寄存器的同步FIFO。

2022-07-28 21:26:58 1786 1

原创 独热码检测

然后我们再将A取反,然后~A在和P按位或,如果得到全为1的数据,则为独热码。如果不全为1则不是独热码(除A为零的情况)A序列为第i位为1的独热码则P的第i位到N-1位应该全为1,0到i-1位应该全部为0;将该数的所有bit相加,若和为1,则说明该数据为独热码;当序列不为独热码时得到的P不具有这样的性质;......

2022-07-28 21:04:25 1262 3

原创 DDR3 功能测试记录

4、记录一下遇到某个不知名的bug,当bank队列同时遇到读写时怎么办,之前的代码有问题,但是不影响DDR读写时序,现在重新修改了下代码;1、先把全部数据存进fifo后在写入DDR。这里的代码某个写任务会遇到刷新请求。2、边存到fifo边写入到DDR。3、在写状态时遇到刷新请求。4、在读状态时遇到刷新请求。...

2022-07-28 09:03:08 763

原创 检测最后一个匹配序列的位置

题目描述编写一个模块,输入一个64比特的比特流,识别匹配出101101的最后的位置,并输出位置信息。思路移位比较的思路进行比较,count计数输出位置信息;

2022-07-27 11:33:43 135

原创 AXI4协议与AXI3协议区别

但是根据经验来讲各家公司好像也没太遵循这个规则,很多AXI3的IPawlen/arlen的位宽是多少,支持多大的burstlength也是根据自己的情况来定的,其实这个对protocol的完整性没什么影响,所以大家也是根据自己的系统需求来定,但一般还是2的n次方。这个lite协议其实主要目的是简化protocol,用于系统上对register的访问,到目前接触的项目一般都是通过APB,I2C,RGST或自己定义的ATB类似的协议处理寄存器相关的访问,所以只简单了解过AXI4-LITE,不作说明。...

2022-07-27 11:02:29 1952

原创 AHB协议中hreadyout和hready_in的区别

上面这张时序图表明master有两笔写传输,第一笔传输为slave1(s1),传输类型为SEQ,在第一笔传输的第二个周期,也就是第一笔传输的dataphase,此时slave1没有准备好被写数据,因此把s1_hreadyout拉低,但此时slave2已经看到自己的NONSEQ传输了,而且slave2已经是准备好了的。重新拿上面的仿真图看一下,由于前一个周期的s1_hreadyout为低电平,所以s2的hready_in也为低电平,那么该周期s2不会对addr以及控制信号进行采样。就不会出现上面的问题。...

2022-07-27 10:27:41 1917

原创 同步复位,异步复位,异步释放同步复位

但此时第二级触发器不会立刻变高,它要么复位为0,要么跟随前一级触发器的输出Q1,而前一级触发器的输出Q1为0,因此,无论如何第二级触发器的输出都为0,而触发器1的输出,若稳定后Q1为1,那么rst_sync_n在下一个周期被拉高,实现同步释放;如果稳定后的Q1为0,那么下个周期rst_sync_n仍为0,但此时由于rst_async_n已经为高,所以Q1在下一个周期必为1,那么rst_sync_n在下一个时钟上升沿到来时被拉高,也实现了同步释放,只是晚了一个周期而已。结论是没有亚稳态,无需担心。...

2022-07-27 09:51:03 2262

原创 TCL脚本学习

来源于https//www.zhihu.com/people/but-31-18/posts。

2022-07-15 21:02:05 152

原创 UPF具体实现思路

影响芯片功耗的两个重要因素是芯片的工作时钟频率和工作电压,因此系统层级最有效的低功耗设计手段是电源管理,电源管理通过控制芯片的供电电源和时钟有效的降低系统工作功耗。在 CPU 的低功耗设计方面,目前业界主要使用的电源管理方案是功耗管理技术(PM)、 动态电压频率调整技术(DFVS) 和自适应电压调节技术(AVS)。功耗来源:所以,对于电路的每一次开关变化,无论是由高电平变化为低电平还是由低电平变化位高电平,电路都会因为开关电流消耗固定为C V L DD 2 的能量。在芯片中,电路的开关活动并不是每时每刻都在

2022-07-08 17:41:53 3013

原创 DDR controller 验证平台以及功能测试用例

DDR controller 验证平台以及功能测试用例验证点:(1)DDR3协议验证1、上电初始化和模式寄存器配置是否成功2、刷新操作是否完成3、进入、退出自刷新模式是否成功为了降低内存在无读写操作时的功耗, 同时能够保存数据, 控制器发送自刷新命令使内存进入自刷新状态。 内存在进入自刷新模式之前处于空闲状态, 在内存时钟上升沿, cke 信号从高电平变为低电平,此时 cs_n、 ras_n、 cas_n保持低电平, we_n 信号保持高电平, 满足进入自刷新状态条件。在时钟上升沿 cke 从低

2022-07-05 11:41:20 2373

原创 DDR3 controller 之储存器介绍

DDR3 SDRAM 接口信号:特别重要,物理层的时序转化就得跟着它来;DDR3操作流程:DDR3 SDRAM 操作流程如图所示,是 DDR3 颗粒内部单个 Bank 的状态机命令跳转过程。由于 DRAM电容充放电读写数据的关系,每一个命令之间的跳转必须满足特定的时间参数,对DDR3 颗粒的读写就是要玩转这些时间参数,使 DDR3 颗粒内部的状态机运行起来。下图的实线箭头代表了状态之间通过命令使能进行跳转,虚线箭头代表状态机自动跳转。可以看到, DDR3 SDRAM 首先要经过上电复位和初始化过程,这

2022-07-04 20:14:16 2599

原创 DDR controller控制器之AXI接口模块设计

1、设计方案该模块是AXI接口与DDR3控制器的访问接口,属于AXI slave。主机AXI master通过发送对应的读写地址和对应的读写数据,这些地址和数据通过异步FIFO缓存模块进行跨时钟域的处理和起到提高总线访问带宽的作用。axi接口模块将写命令通道的写地址(row、bank、col)、axi_awburst、axi_awsize、axi_awlength、axi_awid、读写标志拼接成一个数据帧存到AW_FIFO中;将读命令通道的读地址(row、bank、col)、axi_arsize、ax

2022-07-04 11:09:24 3951

原创 dd3控制器总体设计

一、设计指标:1、axi接口频率为50mhz、ddr controller控制器频率为100mhz、DDR3 SDRAM频率为400mhz。2、axi接口数据为128bit,恰好能够在SDRAM的一个周期内写完。3、支持可变突发长度传输(1-256),4、支持单个主机读操作outstangding功能5、支持axi字节掩码操作,6、支持DDR3 BL8传输特性、不支持BC4传输、7、支持异步和同步FIFO作为跨时钟域处理单元和换冲单元、8、支持DDR PHY作为串并转换、二、系统框图:1、

2022-07-04 09:08:43 1052 4

转载 折叠、展开、重定时、资源共享

1、折叠&展开Fold & Expand,折叠和展开一拍得出结果,使用了两个乘法器,面积大,速度快。这里需要三才能拍得出结果,使用了1个乘法器,面积小,速度慢。可以将前面的部分进行2倍频则可以实现两拍得到结果。这个过程就叫做折叠,展开可以看作是折叠的逆操作,在实际工程中,我们根据需求适当的使用这个两个技术,实现设计最优化。提高速度和降低面积是两个矛盾的目标,所以在具体的设计中要折中(Trade-off),一个好的设计追求的极致是让乘法器等占用面积大的逻辑尽量不要空闲。高度复用。2、重定时笔试题中

2022-06-28 10:12:22 623

转载 verilog 实现低功耗设计

PPA,低功耗设计、性能、功耗、面积

2022-06-28 09:41:53 1104

原创 静态时序分析参数

STA

2022-06-27 10:10:52 158

原创 DC综合过程以及常用命令

参考论文:相控阵雷达波控系统研究

2022-06-27 09:28:27 1240

原创 DDR3控制器 1;

DDR3 CONTROLLER 测试当awfifo写满后awready不会拉高,当wfifo写满后wready也不会拉高;测试点2:axi 对arfifo写满,写满后无法写入;这里可以ARFIFO的虚满信号对outstanding的个数进行配置测试点3:在axi的写地址队列,或者写数据队列中插入axi的读地址队列;在axi的读地址队列中插入写地址队列。测试点4:这里是采用轮询机制对AWFIFO和ARFIFO进行取数据到bank队列中。AWF......

2022-06-25 15:21:37 905

原创 DC逻辑综合的相关概念

参考资料:西南交大邸志雄老师慕课视频

2022-06-23 11:42:08 226

原创 DDR3 CONTROLLER-PHY物理层

DDR3 PHY:主要是用来实现串并转换,以及将controller的命令按照一定时序要求输出到DDR;controller构架:1、控制器频率100mhz;DDR3工作频率400mhz;传输速率800mhz;2、AXI接口32bit,突发长度 8;DDR3使用容量为2048Mbit模型文件,数据宽度16bit;3、具有一定的指令优化功能(暂时没写到那),这里很大;4、PHY文件使用XLINX串并转换原语,将一次储存的128bit数据分为8次,每次16bit传输出去;使用并串语句将DDR每次的16

2022-05-24 15:17:11 4944 1

原创 DDR3文献阅读

状态跳转图:储存器命令真值表:时序参数分析:DDR PHY:**

2022-05-04 23:59:20 299

原创 AXI 知识补充

1、best outsatnading

2022-05-04 10:17:39 106

原创 DDR3相关概念

1、BL8 突发长度理解一下概念:突发传输: 在通信领域中一般指在短时间内进行相对高带宽的数据传输。Burst(突发): 是指在同一行中相邻的存储单元连续进行数据传输的方式。BL突发长度: 连续传输的周期数就是突发长度。在突发传输的模式下,多个数据单元(相当于一个数据块)来传送,从而提高传输效率。BL8: 突发长度为8,app_addr必须是8对齐的地址,比如数据宽度Data Width为32,每次读写数据的长度为8*32=256bit。2、MIG时钟和DDR3时钟例如IP核 中配置如下:

2022-04-30 09:21:39 6891

原创 DDR模式寄存器

mode register模式寄存器(MR0-MR3)用于定义DDR3sdram的各种可编程操作模式。在初始化过程中,模式寄存器通过模式寄存器设置(MRS)命令进行编程,并保留存储的信息(MR0[8]除外,即自清除),直到重新编程,重置#下降,设备断电。可以通过重新执行MRS命令来更改模式寄存器的内容。即使用户只想修改模式寄存器变量的一个子集,在发出MRS命令时也必须编程所有变量。如果正确执行,重新编程模式寄存器将不会改变内存数组的内容。只有当所有bank空闲且处于预充状态(满足tRP且未进行数据爆发

2022-04-29 20:43:31 5996

原创 SDRAM 控制器设计基本完结

项目可以拓展的地方:1、接口为AXI2、接口为AXI与AXI DMA 交互2、优化读写时序,使得SDRAM输出效率最大;总结:项目不足:没有进行效率的优化,无地址映射,无外接交互接口,功能单一;注意:读写模块和自刷新模块的跳转时候数据的输出与输入是否有效进入FIFO中(建议把FIFO中的数据看一遍,不能只看物理模型的端口数据),总体框图:实现功能:读写256个数据步骤:1、给写入信号,FIFO中数据满256后进行一次读操作,2、读信号,当读FIFO中能够储存数据大于256个就进行读,

2022-04-26 00:28:20 772 1

原创 保留最高为1的位,其他位置零,或者保留最低为1的位,其他位置零

利用补码的原理可以取出最低为1的位,其他位置零;例如a=0101_1010,补码b=(~a+1)=1010_0110;结果:c=a^b=0000_0010;取最高位:1、先取a的逆序a*;2、c=(a*)^(~a*+1)3、d=c*;对c取逆序上代码:`timescale 1ns/1psmodule highbit1(); reg clk; reg rstn; parameter perd = 20; reg [5:0] din; reg [5:0

2022-04-25 22:22:32 793 1

原创 线性反馈移位寄存器 LFSR

参考连接:添加链接描述运算基础:模2运算;线性反馈移位寄存器用于产生可重复的伪随机序列PRBS,该电路由n级除法器和异或门组成;在k阶段,寄存器存在初值,(Rn-1, … R1, R0),称为seed在k+1阶段,寄存器的值变为:*k+1阶段Rn-1 = Rn-2Rn-2 = Rn-3…R0 = f(R1, R2, …, Rn-1) = (Rn-1gn)⊕(Rn-2gn-1)⊕…⊕(R0*g1)g0也就是说寄存器存储的结果 (Rn-1, … R1, R0) 每个时钟周期改变一次,其中R1

2022-04-25 21:13:27 9447 1

原创 轮询仲裁器

轮询仲裁器:每次访问结束后都会更新优先级;假设有四个请求A,B,C,D,某个时刻这4个请求的优先级为A>B>C>D,这个时刻将总线控制权交给C,则这个请求后的优先级修改为D>A>B>C,代码中以3请求为例:上代码:bus_arbitor:module bus_arbitor( input wire clk, input wire rstn, input wire singal_1, input wire singal_2, i

2022-04-25 20:21:19 1784

原创 数字IC手撕代码-奇偶校验

奇偶校验可以在数据的校验中用到,比如UART的校验位;计算原理:奇校验:指加上校验位后,使得整个数据中1的个数为奇数个。偶校验:指加上校验位之后,整个数据中1的个数为偶数个。我们来看一个4位的向量1010,它的1的个数是偶数个(2个),因此,如果是偶校验,那么校验位应该是0,如果是奇校验,校验位应该是1,而我们发现:0=1^ 0 ^1 ^ 0(偶校验)1=~(1^ 0 ^ 1^0)(奇校验)这不是巧合,而是一个普遍规律,因此,我们可以得到奇校验和偶校验校验位的计算公式:parity=^a (偶

2022-04-24 23:41:24 203

原创 手写一个序列发生器

题目:手写一个10110序列发生器方法1、通过循环移位方式实现方法2、通过状态机来实现废话少说上代码:方法1:module sequence_gen( input wire clk, input wire rstn, //input wire [4:0] seq_in, output reg seq);parameter seq_in=5'b01101;reg [4:0] shift_reg;always @(posedge clk or negedge

2022-04-24 23:28:50 405

原创 序列检测器方法和技巧

实现:方法1、状态机,方法2、移位寄存器,移位作比较即可亲可真卷

2022-04-24 21:27:23 229

原创 快到慢的跨时钟域处理

如果你写过异步FIFO,格雷码的传输就已经包括慢时钟域到快时钟域以及快时钟域到慢时钟域的处理方法了,自己之前的异步FIFO由于理解没到位,快时钟域到慢时钟域的处理也是打拍,原因是快时钟域的时钟频率不够快。所以debug没问题。步入正题快到慢常用异步握手。握手包括同步握手和异步握手;1、同步握手:AXI协议的VALID 和 READY信号就是同步握手关系;2、异步握手(参考除夕之夜微信公众号)同步逻辑设计中,脉冲信号是指从快时钟域输出的有效宽度小于慢时钟周期的信号。如果慢时钟域直接去采集这种窄脉

2022-04-24 21:17:33 4989 1

原创 CRC检错技术原理

**一、CRC检错原理**CRC(cyclic redundancy check/code):循环冗余检错技术/循环冗余校验码;《计算机网络 第五版》—谢希仁所著的教材通过例子对循环冗余检验原理的原理说明如下:在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。在所要发送的数据后面增加n位的冗余码,虽然增大了数据传输的开销,但却可以进行差错检测。当传输可能

2022-04-24 19:43:17 3973

原创 异步FIFO 疑难点

异步fifo 非二的整数次方;怎么进行跨时钟域处理?格雷码的性质:1、相邻两个数只有一个BIT不同;2、去掉首位相同个数的位数后剩下的数仍满足相邻数只有一个bit不同,包括绕回;这里就可以用来对设计深度不满足2的n次方的fifo做文章了;假设设计深度为28的fifo那么我们不用格雷码需要5bit表示地址,用格雷码需要6bit表示地址;那么我们截取6bit表示地址的中间2*28=56个地址;相当于去掉头尾2^5-28=4个地址;在拿深度为5的fifo举例;2^3-5=3;去掉头尾3个地址;用格雷码可

2022-04-19 01:27:18 2354 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除