自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 timer/counter在SOC中的作用

对timer/counter在SOC中的作用进行概括

2022-11-16 23:19:21 1240 1

原创 DDR为什么需要DQS信号?

本文根据相关书籍和个人经验,谈了一下对DDR中DQS信号作用的理解

2022-09-30 13:36:58 14282 9

原创 Hardware and Software Support for Virtualization读书笔记(一):定义

Hardware and Software Support for Virtualization一书的读书笔记

2022-08-15 21:50:05 950 1

原创 sdc中跨时钟域(CDC)路径的约束方式

sdc中对cdc的处理方式

2022-07-11 00:08:41 6756 10

原创 为什么LPDDR不能完全代替DDR?

从LPDDR相比DDR的区别着手,说明LPDDR不能取代DDR的原因

2022-07-10 21:54:49 5980 4

原创 cortex-R52 CPU的功耗管理之power gating(电源门控)

cortex-52 power gating介绍

2022-05-08 17:24:55 2554

原创 几种glitch free(无毛刺)的时钟切换电路

无毛刺时钟切换

2021-12-22 22:52:18 1334

原创 MCU的时钟源

MCU的时钟源

2021-12-16 09:57:33 651

原创 为什么SOC需要APB,而不是所有的模块都挂在AHB上?

众所周知,AHB的速度比要快,但SOC中大多数外设是挂在APB上,以AHB to APB bridge作为master,而bridge又作为slave接到AHB上,那么为什么不把所有外设都挂在AHB上,以获得最快的访问速度?主要有以下四个原因:1.片上存储器直接与CPU进行数据交互,需要保证对它们有足够快的访问速度,所以必然挂在AHB上,DMA负责不同存储器或外设之间的数据传输,所以也挂在AHB上,而SOC上的其他大多数外设,它们挂在总线上的目的是CPU可以通过总线读写它们的寄存器,并不会过于频繁,不需要

2021-11-29 17:52:55 888

原创 WIC(wake-up interrupt controller)介绍

WIC(wake-up interrupt controller)介绍

2021-11-11 21:38:21 6610

原创 cortex-m3软件断点/单步执行的实现机制

一.软件断点软件断点设置后,断点处的代码如果是存放在SRAM中,相应的一条指令(C语言中的一行代码可能对应多条处理器指令)会被调试器(debugger)替换成cortex-m3的BKPT指令,当程序运行到这一BKPT指令时,处理器会被停机(halt),用户可以用调试器做出相应的操作。用户在操作完成继续执行指令时,原来C语言中的那一条指令会被调试器重新写入到该地址,并且取消停机,处理器从这一指令开始继续执行程序。当然,以上操作需要断点处的指令所在地址是SRAM等可写的存储器,如果是ROM等不可写存储器,就

2021-11-11 21:19:14 1211 1

原创 cortex m3/m4处理器的复位设计

cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分。core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分。debug logic部分包括debug模块(SWD接口,ETM, AHB-AP, TPIU等)以及NVIC,BUS Matrix,MPU的debug部分。下文中,用core代指core部分,debug代指debug部分。除JTAG的reset信号nTRST外,cortex m3/m4相关的复位信号主要有四个:

2021-10-27 20:25:53 1454

原创 SRAM在MCU中的作用

2021-10-12 11:30:59 1487

原创 cortex-m0(+)功耗较低的原因

摘录自《ARMCortex M0与Cortex M0+ 权威指南 第2版》

2021-10-11 18:13:03 308

原创 cortex-M0+相比cortex-M0有哪些改动(不定期更新)

1.增加向量表重定位(VTOR),向量表默认存放在存储器初始地址,可以通过重定位,修改到SRAM或其他存储器区域。2.从三级流水线(取指,译码,执行)改为两级(取指+预译码,译码+执行),减少了寄存器的数量及对应的面积和功耗,也减少了跳转指令带来的性能损失。为了避免流水线级数降低对最大时钟频率的影响,CPU设计时已经对预译码和译码进行了时序的平衡,另外在实际使用中,大多数芯片实际的工作频率较低。3.增加了单周期I/O接口,这一接口的引入使M0+具有了哈佛结构的特征,但是因为主要的AHB master只有

2021-10-11 11:04:53 1110

原创 数字IC的功耗组成

数字IC的功耗主要分为静态功耗(static power)和动态功耗(dynamic power。1.静态功耗静态功耗也称为漏电功耗(leakage power),是指逻辑单元的输入和输出均不发生变化时(一般被称为inactive或static状态)的功耗。静态功耗又分为intrinsic leakage power和gate leakage power.intrinsic leakage power主要是由晶体管源极和漏极之间的亚阈值电流(晶体管在关断时实际并没有完全关闭,仍有电流),电流大小主要由

2021-09-30 09:53:02 5428

原创 为什么不能将异步复位信号同时用于某些寄存器的同步复位

将某个信号同时用于异步复位和同步复位,可能导致只有部分寄存器的复位触发/释放,可能导致CDC问题或预期电路功能失效在STA中,异步复位需要检查recovery time,同步复位需要检查set up time,将同一信号混用,可能导致这一信号相关的时序难以满足...

2021-09-23 15:55:37 392

原创 PVT的理解和以及它们在后仿/功耗仿真中的注意点

PVT(process, voltage, temperature)是影响集成电路性能的主要因素。P是指芯片制造过程中的工艺偏差,在不同晶体管/晶片/批次之间,NMOS或PMOS的驱动能力(有时也理解为电流大小或载流子迁移率)都会发生变化,用slow/fast/typical分别表示晶体管驱动能力弱/强/一般,则所有逻辑门的性能就可以限制在(ss,ff,sf,fs,tt)5个工艺角内。V是指芯片的供电电压,一般来讲,电压越大,晶体管电流越大,芯片速度越快。T是芯片的工作温度,温度对芯片性能的影响比较复

2021-09-09 20:15:05 15890

原创 用verilog产生一个和时钟相同的信号用作数据

input clk;input scan_clk;input scan_mode;input rstn;output clk_d;wire clk_inv;CKMX2N1(.i0(clk),.i1(scan_clk),.s(scan_mode),.o1(clk_inv));reg clk_r, clk_f;always@(posedge clk or negedge rstn)if(~rstn)clk_r <= 1’b0;elseclk_r <= ~clk_r;

2021-09-08 17:36:06 982 2

原创 为什么时钟和复位信号要在综合阶段设置为set_drive 0和set_dont_touch_network

set_drive 0 表示驱动无穷大,延时为0,set_dont_touch_network是为了不让综合工具插入buffer等。这么做是因为综合时没有布局布线信息,即使综合工具针对时钟和复位进行了优化,也是不准确的,甚至可能对后端造成负面影响,正确的做法就是不要处理,而要到后端再去做CTS...

2021-09-06 19:46:58 1240

原创 向C case仿真中加入define

在做EDA仿真时,经常会通过在验证平台中加入对某些define是否存在的判断,以使验证平台产生不同的行为,但是这些判断都是在验证平台,也就是sv文件中,如果在跑仿真前给验证平台传入某个define,一般是通过在仿真工具的编译指令中,加入+define+xxx实现。如果要向C case传入define,实现和上述类似的功能,该如何操作?通过查网上的资料和修改makefile后仿真实验发现,gcc的编译可以通过在编译选项中加入-D实现define的传入。有以下四种形式:-DNAME-D NAME-DNA

2021-09-06 10:03:22 188

原创 NMI在芯片常见用途

NMI,即non maskable interrupt,在ARM cortex M处理器中具有最高的优先级,通常被用于接收并处理一些威胁到芯片安全的事件。从目前做过的项目和学习过程中,总结了NMI的三个常见用途:1.watchdog的计数器因为系统出现故障没有及时清除计数器而导致溢出时,可以产生NMI请求(当然,更常见的做法是产生复位)2.Brown-out detector(BOD),实时检查芯片的供电电压,如果低于警戒值,则产生NMI请求(也可以是产生复位,取决于芯片设计)3.芯片上的其他安全事件

2021-09-02 11:37:12 2203

转载 (转载)边沿检测电路

http://blog.eetop.cn/blog-1592-6947279.html

2021-09-02 11:21:37 81

原创 时钟/复位设计中的DFT考虑

芯片正常工作时,各寄存器使用片上的正常时钟和复位信号,但在进行scan test时,时钟和复位应该分别是来自PAD的scan_clk和scan_rstn信号,在进行前端设计时,需要加入scan mux,将芯片内部的时钟和复位bypass掉,选用scan_clk和scan_rstn.目录1.时钟1.1 时钟源的选择1.2 时钟门控2.复位1.时钟时钟的设计考虑主要包括时钟源的选择和clock gating的设计1.1 时钟源的选择时钟可能是直接来自片上PLL/OSC产生的时钟或是经由计数器分频产生的

2021-09-01 18:16:06 6929 2

原创 i2c的IOL及上拉电阻

1.拉电流与灌电流拉电流(pull current)是指PAD输出为逻辑1时,对外提供的电流,相当于电流是被拉出,所以叫拉电流。灌电流(sink current)是指端口输出为逻辑0时,对外提供的电流,相当于电流是被拉出,所以叫拉电流。对给定的PAD,PAD内部的输出晶体管是固定的,而输出0和1都各自有自己的允许电压范围,输出0时的范围为0-VOLmax,输出1时的范围为VOHmin-VDD。拉电流与灌电流一般被用来衡量PAD的驱动能力。例如,当PAD输出逻辑0,存在灌电流时,如果输出允许的最大电压V

2021-08-31 16:29:49 886

原创 gpio pad的latch功能

在芯片中,有时可能出现GPIO的VDDIO有电,但VDDC(芯片的core电压)断电的情况,但是这种情况下,可能需要保留该PAD的状态。为了就需要对I,OEN,REN,RTYPE,IEN这些从core domain到IO domain的信号进行latch处理,latch的enable端也作为一个PAD的控制信号LE。需要IO domain的信号和core domain同步时,LE=1。希望让IO domain的信号保持不变时,LE=0。考虑到LE也是从芯片内部来的信号,必须把它的产生放到芯片的always

2021-08-30 11:58:08 1077

翻译 cortex m3的操作模式和状态

1.操作状态(operation state):debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令.thumb state:处理器正在运行程序代码(thumb 指令)时会处于thumb state。 和传统的ARM处理器不同,cortex m3不支持ARM 指令集,所以没有ARM state.2.操作模式(operation mode):handler mode:指执行异常处理例程(如ISR)时的模式。在handler mode中,处理器一

2021-08-11 16:18:53 2459

原创 cortex m0+的单周期IO port

cortex m0+提供了专门的单周期总线用于进行外设的访问,这个总线接口可以被处理器/调试器(debugger)进行读/写访问,提高了外设访问的速度。在arm提供的ip中,也包括了基于AHB的GPIO IP。某些应用下,软件会直接操作GPIO,以代替专门的硬件电路实现通讯的功能,被称为bit banging,单周期IO的特性也为bit banging提供了便利。...

2021-08-11 15:26:33 843 2

原创 用verdi寻找信号出现某个值的时刻

目前知道有两种方法:1.search value,在nwave窗口的菜单栏中选择waveform->set search_value,设置要寻找的值,点击ok,设置的值会出现在窗口最右边的by: 后,选中要查找的信号,并点击by右侧value后面的左右方向键可以左右寻找信号值匹配的时间。同理,可以直接在by:后面的那个按钮,点击下拉按钮并选择bus value设置要寻找的值,后续操作与waveform->set search_value相同。注意:所设计search value的进制应与信号

2021-08-10 10:57:29 7692

原创 verdi波形中状态机信号用parameter的名字显示

一般来讲,状态机的编码会用parameter实现,但是在nwave中,有时状态机信号只会显示它的数值,而不是相应的parameter名,如果要检查跳转情况,就要不停的去把数值和相应的名字对应。可以使用ntrace中tools->extract interactive fsm,选择all stages后再点击ok,就可以在波形中显示状态机的状态名。...

2021-07-29 15:15:25 4130

原创 用verdi中的signal event report检测信号在一定时间内的行为

在做项目时,有时我们想统计某个信号的某个时间发生的情况。例如,仿真过程中想知道I2C已经完成了多少个byte的传输,可以通过数rx/tx buffer的not empty信号的上升沿个数来确定,但如果没有在环境里创建相应的变量计数信号的上升沿个数,靠人力数又太麻烦,怎么办?可以通过verdi的signal event report 功能实现,首先在波形窗口的左侧选择要检测的信号(一个或多个),在右侧用鼠标左键和中键选择好要检测的时间段,再点击波形窗口的view->signal event repo

2021-07-29 15:01:22 5363 2

空空如也

空空如也

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

TA关注的人

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