自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

数字IC前端设计验证学习整理

个人IC学习整理记录

  • 博客(36)
  • 收藏
  • 关注

原创 快时钟同步慢时钟域下的异步控制信号slow clk to fast clk

这种情况下,异步控制信号可能在己慢时钟下只维持了一个有效时钟,而在快时钟下,已经被采样了几次,一次读请求可能被误以为多次读请求。 快时钟同步慢时钟信号示意图RTL代码module synchronizer( clk_fst; rst_b; rd_en;//原始控制信号 rd_en_s2f;//处理后的信号 ); input clk_fst; input rst_b; output rd_en_s2f;...

2022-04-23 11:05:17 788

原创 低功耗设计基础_数字集成电路设计

介绍在早期的C设计中,功耗并不是一个重要的约束条件。随着使用电池供电的器件变得更小,功能更多对功耗的要求也越来越高。能量以热量形式消耗。可靠性是温度的函数,据估计温度每升高 10°℃ 失效率可能提高一倍。保持低温操作环境意味着使用散热片或风扇来散热--这会增加整体的重量和成本。如果能在 SoC 级对功耗进行控制,就可以减少甚至可能消除掉这些开支,也就可以得到更小、更便宜和更可靠的最终产品。功耗源三个主要功耗源:浪涌,动态功耗,静态功耗。浪涌和静态功耗主要取决于器件电气特性和供电设...

2022-04-19 14:48:51 953

原创 握手信号方法_跨时钟域数据信号传输

目录1 介绍2 握手步骤3 握手信号的要求4 代码实现1 介绍使用握信号是最古老的跨时钟域传递数据的方式将双时钟域分为两个独立系统2 握手步骤1 发送器发送xreq信号,表示有效数据已经发送2 把xreq同步到接收器的时钟域yclk上3 接收器识别到xreq的同步的信号yreq2后,锁存数据总线上的信号4 接收器发出yack,表示接受了数据5 发送器在识别同步的xack2后,将下一个数据放到数据总线上时序图如图安全的将一个数据发送到..

2022-04-19 14:44:50 4159

原创 格雷码-数字设计应用

格雷码介绍,在数字设计中的应用

2022-04-19 10:07:33 9292

原创 时钟分频器

典型情况下SoC 要对设计中各种组件提供许多与相位相关的时钟。将主时钟以2为幂次进行分割来产生同步偶数分频时钟。然而,有时也会需要按奇数甚至小数进行分频。在这些情况下,如果没有更高频的主时钟,无法得到同步分频时钟。虽然偶数分频时钟始终产生50%占空比的输出,但有时在奇数或小数分频时也需要产生50%占空比的时钟。同步整数分频器可以用moore FSM 实现7分频摩尔状态机modele clk_div(clk , rst , clk_div7); //随手写的,没有验证检查,仅供参.

2022-04-17 14:07:40 626

原创 亚稳态的世界_建立保持时间的违背

建立保持时间建立时间(Tsu:set up time)    是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。保持时间(Th:hold time)    是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。亚稳态理论(违反建立保持时间的后果)亚稳态是由于违背了建立保持时间而产生的,导致触发器..

2022-04-17 13:37:02 369

原创 异步FIFO_跨时钟域数据信号传输

在大规模ASIC或FPGA设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传输的问题,其中一个比较好的解决方案就是使用异步FIFO来作不同时钟域数据传输的缓冲区,这样既可以使相异时钟域数据传输的时序要求变得宽松,也提高了它们之间的传输效率。FIFO在硬件上是一种地址依次自增的Simple Dual Port RAM,按读数据和写数据工作的时钟域是否相同分为同步FIFO和异步FIFO,其中同步FIFO是指读时钟和写时钟为同步时钟,常用于数据缓存和数据位宽转换;异步FIFO通常情况下是指读时.

2022-04-17 10:46:39 1669

原创 同步FIFO

FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。作用: FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集, 另一端是计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×16bit=1.6M

2022-04-16 16:56:01 850

原创 深入跨时钟域(转自公众号芯片验证工程师)

如今,SoCs正变得越来越复杂,数据经常从一个时钟域传输到另一个时钟域。上图信号A由C1时钟域触发,被C2时钟域采样。根据这两个时钟之间的关系,在将数据从源时钟传输到目标时钟时,可能会出现不同类型的问题,并且这些问题的解决方案也有所不同。本文讨论了不同类型的跨时钟域,以及每种类型中可能遇到的问题及其解决方案。在接下来的所有部分中,都直接使用了上图所示的信号名称。例如,C1和C2分别表示源时钟和目标时钟。类似地,A和B分别被用作源触发器输出和目标触发器输出。此外,源和目标触发器被假定为正沿

2022-04-15 16:13:00 746 1

原创 信号跨时钟域处理_《硬件架构的艺术》

本文主要介绍各种类型的跨时钟域问题。同步时钟是指具有已知相位和频率关系的时钟。这些时钟本质上是来自同一时钟源。根据相位和频率关系,可分为以下几类:目录具有相同频率和零相位差的时钟具有相同频率和固定相位差的时钟具有不同频率和可变相位差的时钟1. 整数倍时钟2.非整数倍时钟异步跨时钟域具有相同频率和零相位差的时钟时钟C1和C2具有相同的频率和0相位差。由于此时时钟C1和C2是相同的,并且由相同的时钟源产生,因此从C1到C2的数据传输本质上不是跨时钟域。每当数据从时

2022-04-15 16:08:18 808

原创 数字IC面试整理

目录1 时序逻辑与组合逻辑的区别2 建立与保持时间3 亚稳态4 信号跨时钟域处理CDC5 状态机种类区别6锁存器Latch和触发器DFF区别1 时序逻辑与组合逻辑的区别组合逻辑的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理,组合逻辑的verilog描述方式有两种:(1):always @(电平敏感信号列表)always模块的敏感列表为所有判断条件信号和输入信号,但一定要注意敏感列表的完整性。在alway

2022-04-15 15:46:47 1098

原创 linux 复制整个文件夹到个人home下

2021-11-18 10:52:07 1448

原创 多线程基础问题整理

1 线程创建的方法有几种? 两种。第一种 实现runnable接口 重写run()方法第二种 继承thread类 重写run()方法总结:两种,但都是基于thread类。第一种更优,java是类单继承。第一种让代码拓展性更强。2 start() 方法含义与相关问题正确启动线程:start()而不是run()。因为run()只是一个普通方法。start()启动线程后自动调用run()。start()的工作原理:检查当前线程状态码是否为0(线程准备),如果重复调用start会报错。.

2021-06-23 11:20:23 84

原创 LeetCode1.两数相加

题目描述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。思路分析代码分析反思总结...

2021-06-18 11:37:24 87

原创 LeetCode896.单调数列

题目描述如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A是单调数组时返回 true,否则返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/monotonic-array著作权归领扣网络所有。商业转载请联系官方授权,.

2021-06-17 19:15:46 93

原创 LeetCode 剑指Offer53.在排序数组中查找数字

题目描述统计一个数字在排序数组中出现的次数。思路代码优化题解反思总结

2021-06-17 18:24:15 79

原创 LeetCode LCP18.早餐组合

题目描述思路:只想到暴力枚举,两个for代码class Solution { public int breakfastNumber(int[] staple, int[] drinks, int x) { int count = 0; for(int i = 0 ; i<staple.length; i++){ for(int j = 0 ; j<drinks.length ;j ++) {

2021-06-17 14:29:07 88

原创 LeetCode 剑指offer 40.最小的k个数

题目描述输入整数数组arr,找出其中最小的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。思路代码题解

2021-06-17 13:54:57 70

原创 LeetCode54 二叉搜索树第k大节点

题目描述给定一棵二叉搜索树,请找出其中第k大的节点。思路分析1:第一个想法是每次shan更优解反思总结

2021-06-16 16:24:45 93

原创 LeetCode3数组中重复的数字

题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。自己的思路代码官方题解反思总结...

2021-06-16 14:05:18 94

原创 LeetCode495 提莫攻击

题目错误代码 public int findPoisonedDuration(int[] timeSeries, int duration) { int nums = duration; for (int i = 0; i < timeSeries.length-1; i++) { if (timeSeries[i + 1] - timeSeries[i] >= duration) nums = .

2021-06-15 22:16:33 95

原创 打印字符串所有子序列(暴力递归到动态规划)

package DataStructure;import java.util.ArrayList;import java.util.List;public class PrintAllSubsequence { public static List<String> subs(String s){ char[] str = s.toCharArray(); String path = ""; List<String> .

2021-06-15 13:43:54 171

原创 快速排序QuickSort第一版

特点实现思想代码public class QuickSort { public static <E extends Comparable<E>> void sort( E[] nums){ sort(nums , 0 , nums.length-1); } private static <E extends Comparable<E>> void sort( E[] nums, int l , int

2021-06-11 13:16:30 91 2

原创 LeetCode66 加一

题目描述public int[] plusOne(int[] digits) { int size = digits.length; digits[size-1] = digits[size-1]+1; for (int i = size-1; i>-1;i--){ if (digits[i] ==10){ digits[i] = 0; digits[i.

2021-06-10 16:51:17 56

原创 LeetCode 88 合并两个有序数组

题目描述给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,...

2021-06-10 16:10:28 134

原创 LeetCode27 移除元素

给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...

2021-06-10 15:29:11 80 1

原创 SSM整合过程service注入mapper报红

<!-- 扫描service相关的bean --> <context:component-scan base-package="com.li.service" /> <!--BookServiceImpl注入到IOC容器中--> <bean id="BookServiceImpl" class="com.li.service.BookServiceImpl"> <property name="bookMappe.

2021-06-09 13:47:16 1225 3

原创 Mybatis框架环境搭建

Mybatis环境搭建步骤1.创建maven工程2.导入依赖3.lian'jie'shu'ju'ku

2021-06-05 13:43:01 64

原创 并查集UnionFind(2)

因为quickfind的合并操作复杂度On,所以现实很少用。常用的是quickUnion。同样实现并查集接口。public class UnionFind2 implements UF { private int[] parent; public UnionFind2(int size) { parent = new int[size]; for (int i = 0; i < size; i++) { paren

2021-06-03 14:17:37 43

原创 并查集UnionFind(1)

Quickfind并查集查找操作为O(1),合并操作为O(n)。创建并查集接口public interface UF { int getSize(); Boolean isConnected(int p , int q);//查 void unionElements(int p , int q);//并}

2021-06-03 14:06:13 41

原创 优先队列 --- 基于Heap

写一个队列queue接口,功能youpublic interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}

2021-06-03 14:01:16 70

原创 TCP/UDP

UDP是不可靠传输,不建立连接。

2021-05-31 21:38:05 57 2

原创 堆Heap 基于ArrayList实现

定义底层基于数组,//因为heap是一棵完全二叉树,所以很方便可以基于数组实现public class MaxHeap<E extends Comparable<E>> { private List<E> data; public MaxHeap(int capacity) { data = new ArrayList<>(capacity); } public MaxHeap() {

2021-05-31 20:45:34 182

原创 BST二分搜索树/二分排序树

add public void add(E e) { if (root == null) { root = new Node(e); size++; } else add(root, e); } private void add(Node node, E e) { if (e.equals(node.e)) {//终止条件 return;

2021-05-30 15:49:31 88

原创 数据结构链表实现及注意

public class LinkedList<E> { private int size; private Node dummyHead;链表类定义

2021-05-30 13:49:43 152

原创 日常学习小bug记录

写数据结构bst的实现在定义泛型雷士

2021-05-30 13:32:52 116

空空如也

空空如也

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

TA关注的人

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