MCU集成-时钟复位控制
时钟
首先我们需要知道我们生成时钟的需求如下。
然后知道设计要点
dft可控:表示在dft模式下,我们选择外部的测试时钟而不是芯片内部的pll的时钟。这个外部的时钟可以被dft工程师控制。
dft隔离:表示在scan的情况下,很多寄存器会上链,所以输出不定,但是这些输出又去驱动了很多重要的系统模块,这个时候我们需要使用mux将寄存器的输出固定。
dft观测:这些内部产生的时钟需要送到pad做到可观测,看是否符合要求。
外部参考时钟:PLL是倍频电路,它会使用晶振产生的参考时钟比如10m进行倍频。倍频需要稳定时间, pll输出lock信号表示倍频后的时钟稳定了,可以被芯片使用,但是在lock信号之前,pll的输出时钟不稳定,这个时候需要外部的时钟作为芯片的主时钟。所以涉及到一个无毛刺的切换电路。
时钟图
1. 首先从模拟进入osc_in=8M,这是ref-clk。然后8m的时钟进入到pll倍频。倍频结束之前我们使用的是8m的参考时钟,倍频结束之后我们才能使用倍频时钟。所以这里有一个无毛刺切换。
2. 无毛刺切换后就是sys_clk,对它进行分频。注意这里的apb也需要分屏,图中已经标出来了。
无毛刺切换电路
3. 图中dft_mode下的32‘{1’b0},1’b0,4{1‘b0}会在dft模式下插入自己的配置数,前端看不到,这就是dft可控。
4. ICG模块和occ模块。
ICG就是门控单元,E端为clk负沿采样en。采样之后的信号和clk进行与,这样做的好处是无论en在clk的什么地方拉高都不会切出毛刺,得到的gclk都是完整的时钟。
5.分频电路 8192分频电路,2^13=8192,所以使用12bit位。这里:先将sys_clk分频,再将分频后的脉冲作为sys_clk的门控,产生分频后的时钟。这是标准做法。设定一个bit数13的寄存器。
使用rtc_clk_div作为icg的门控。生成的rtc_clk_pre就是clk_pll_in的8192分频时钟。
同理,2,4,8,16分频。2^4=16,所以bit3就可以表示16分频。
使用ahb_clk_div作为icg的门控。
OCC模块(片上时钟控制器)
occ一般插在功能时钟pll的后面,它的位置如下图。
occ的功能如下:
1. 切换功能时钟和测试时钟
2.为ac scan 提供正确数量的功能时钟脉冲。
3. 每个时钟域独立控制。
occ内部结构
测试模式信号:0功能模式1测试模式
ac模式信号:0dcscan 1acscan
扫描信号:慢速scan扫描信号
参考时钟 8m,经过pll后为sys_clk
扫描时钟:慢速scan时钟
occ工作状态图
1.测试模式信号为0,occ输出功能clk。
2. 测试模式信号为1,ac 模式信号无论1还是0,扫描信号为1,occ输出慢速scan_clk。
首先将扫描信号置位1表示慢速scan模式,在此模式下填充寄存器,如果想要两个功能时钟(全速时钟)的脉冲,就通过mux扫描输入pattern将四个寄存器变成1100,如果想要3个,就变成1110。然后在切换扫描信号为0,这个时候两个快速时钟会送出,最后又将扫描信号置位1,输出慢速时钟。
总结:scan_en-->>1,0,1。
scan的移入捕获移出操作
为什么上面的时钟只有两个上升沿?这需要从dft的scan操作说起。
在移入操作时,使用慢速的时钟,将10011送入上排的5个寄存器,同时01001从组合逻辑送出,因为组合逻辑的计算是没有延迟的。 进入捕获操作,这个时候如果是要检测stuck at这类的静态测试,可以使用慢速时钟(和之前的移入时钟一样的频率也是可以的)。如果检查跳变和延迟故障,需要使用功能时钟,尽量准确的模拟功能的情况下luanch和capture的情况去检测timing path。下图就是stuck at问题中使用的捕获时钟和移入移出一样频率。
下图是检查跳变和延迟故障时候的捕获时钟为功能时钟也叫做全速时钟。但是需要注意,这个se是一个全局信号,它会送到所有芯片寄存器的se端口,这样从si进来的数据很可能不能满足建立和保持时间,因为这个时候的全速时钟非常快,这对时序有很大挑战。
但是,如果像下图这样在第一个全速时钟之前拉低se,之前应该从si来的数据便从下面第二个图中的第二排寄存器的d端来了。下面第二个图中,se的拉低后的launch沿把数据从第一个组合云送到第二排寄存器,在经过capture沿打入第三排寄存器。虽然多了一组组合逻辑但是依然可以使用算法检测出dft问题,大大减少了时序压力。
复位
下面是复位的需求,注意每个外设应该有一个软复位,在外设出问题的时候,可以单独复位。
dft可控就是有些和复位相关的寄存器上链后,来回toggle,会导致scan模式下不停复位,所以我们需要做dft隔离。dft可控就是dft工程师可以插入dft复位使得芯片复位。
设计要求
复位电路如下:
HARD_RST_N从pad过来。经过滤波之后和内部其他复位与之后生成全局复位,全局复位在各自时钟域下同步,pbus_rst_n还要在与上软复位。软复位由寄存器来,也需要dft的隔离。
dft复位可控的代码
mux U_SYS_RESET_DFT_CTRL(
.A(hard_rst_n_in) //实际复位
.B(dft_crg_rst_n) //DFT使用的复位,悬空在core层
.S0(dft_mode)
.Y(dft_hard_rst_n_in)
);
滤毛刺代码 flt_out_rst为滤毛刺之后的代码。
always @(posedge sys_clk or negedge dft_hard_rst_n_in) begin
if (~dft_hard_rst_n_in) begin
dft_hard_rst_n_in_sync<={8{1'b0}};
end
else begin
dft_hard_rst_n_in_sync <={dft_hard_rst_n_in_sync[6:0],1'b1};
end
end
assign flt_out_rst=| dft_hard_rst_n_in_sync;
MCU集成-时钟复位控制相关推荐
- Autosar MCAL MCU配置时钟-基于cfg
文章目录 前言 MCU时钟配置 cfg配置外部晶振 CCU 时钟源的选择 OSC(Oscillator Circuit) OSC的模式: 外部输入时钟模式: 外部晶体/陶瓷谐振模式 Back up时钟 ...
- 华大 MCU 之三 时钟控制器(CMU)配置记录
今天在新项目(MCU 为华大 HC32F460)中不再使用外部晶振,转而要使用 HC32F460 内部的 HRC,之前在使用外部晶振时,对华大 MCU 的时钟配置有过一些了解,但是,由于使用内部晶 ...
- VLSI芯片电路测试分类testMode、模式、时钟复位输入输出
目录 1.测试分类 1.1 参数测试和功能测试. 参数测试: 功能测试: 1.2 根据测量输出电流还是电压 电压测试: 电流测试: 1.3 根据测试激励的快慢 DC (static)testing A ...
- 8255A置位复位控制字
北京交通大学戴胜华老师MOOC微机原理与接口技术 8255A的工作方式控制字 例题 B口中断,B口原本工作在方式1输入 要把PC2置1 用置位复位控制字1 设置PC2
- 8255典例之打印机(选通信号和置位复位控制字的应用)
目录 题目 分析 思考问题 完整代码 (使用子程序段) 题目 在某一8086系统中接有一个打印机,8255A作为输出接口,工作在方式0.试编一程序将寄存器DL中的内容传送到打印机打印. 分析 打印 ...
- 复位方式、时钟复位流程
一.复位方式: 复位概念-宏观,对于一个系统,其复位的方式一般包含硬件复位.软件复位.上电复位: 硬件复位 顾名思义通过硬件给系统一个复位,比如在电路板上设计一复位电路,通过按下按键就可以给系统实现一 ...
- 十、stm32-ESP8266(串口透传、MCU透传、控制LED亮灭)
目录 一.固件库模板 二.准备资料 三.简介 1. 引脚 2. 无线组网 2.1 ESP8266 在 SoftAP 模式 2.2 ESP8266 在 station 模式 2.3 ESP8266 在 ...
- CH579 Cortex-M0 内核低功耗蓝牙 MCU 集成 ARM 内核 32 位微控制器
概述 CH579 是集成 BLE 无线通讯的 ARM 内核 32 位微控制器.片上集成低功耗蓝牙 BLE 通讯模块.以太网控制器及收发器.全速 USB 主机和设备控制器及收发器.段式 LCD 驱动模块 ...
- 时钟,复位和电源管理
文章目录 一.电源管理和复位 二.时钟 1.时钟的分类和特性 2.时钟图 杨桃32学习笔记,本文图片文字皆为转述 一.电源管理和复位 (1)8MHZ的振荡器给arm内核提供,40khz给RTC使用也就 ...
最新文章
- 网页级在线性能测试网站汇总
- 织梦CMS高端响应式电子商务网站模板
- android编译的tool版本有多少,android gradle tool版本从3.3升级到3.6.3问题记录
- zend studio 7.2.0怎么创建项目
- 【渝粤教育】广东开放大学 服务标准化 形成性考核 (41)
- Android 隐藏环形进度条,Android环形进度条
- C#不同操作系统下,界面大小不一的原因
- 信息熵、互信息、KL散度
- hdu 1233还是畅通工程 最小生成树(入门题)prim算法
- 面对面沟通与文档沟通
- java对接微信公众号
- 干货 | 挖掘旅游热点吸引年轻人,携程自动热点投放系统的背后玩法
- pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
- MFC+Opencv以图拼图
- toLatin1 toLocal8Bit
- 智慧医疗是什么?智慧医院包括哪些方面?
- mysql朋友圈数据库设计_实现微信朋友圈可见不可见的数据库设计及ORM语句
- 在线图片压缩网站TinyPNG
- Altium Designer导入Allegro17.4 PCB文件
- 4.1 使用常见的各种字体属性 [原创Excel教程]
热门文章
- UEFI 基础教程 (十六) - ACPI 简单使用
- 达内html5,达内html5培训:5网页设计让用户浏览下去
- is not accessible from java.lang.Class XXX
- linux系统reales,基于uCLinux系统的IEEE1394设备驱动程序的编程研究与实现
- 腾讯宣布斯凯平台手机QQ版暂停服务 山寨手机或受影响
- Flash代码加密解决方法
- android videoview 拉伸,手摸手带你用 VideoView 实现英语流利说炫酷引导页
- Android 查看wifi密码
- 02现代软件工程作业
- wireshark提取视频数据之RTP包中提取H264和H265