草庐IT

Verilog手撕代码(6)分频器

目录分频概念偶数分频二分频任意偶数占空比问题奇分频非常规占空比的奇分频分频时钟的使用小数分频分频概念分频就是生成一个新时钟,该新时钟的频率是原有时钟频率的整数分之一倍,新周期是原有周期的整数倍。再简单来说,让你手撕一个四分频电路,就是写代码生成一个周期是原来四倍的时钟,如果手撕一个三分频电路,就是写代码生成一个周期是原来三倍的时钟。如图为四分频波形图,clk_out的频率是clk的1/4,但周期是clk的4倍。分频主要分为偶数分频、奇数分频、小数分频。偶数分频二分频二分频引入,在每个时钟上升沿来到时,翻转新时钟always@(posedgeclkornegedgerst_n)begin if(

数据结构之手撕链表(讲解➕源代码)

0.引言我们在学习过顺序表之后,会发现两点不是很优秀的操作:1.顺序表的头插和中间的插入,头删和中间的删除:        需要不断的覆盖数据,时间复杂度是O(n),当我们的顺序表存入100w个数据的时候,花费的时间是非常之多的。2.动态开辟空间:    a.一般动态开辟的空间都是以2倍的形式开辟,当我们已经开辟了100个空间,并且存满了,此时我们还需要存放5个数据,那么就又需要开辟200个空间了,我们存放5个数据之后,还剩余了195个空间没有放数据,这也就导致了空间的浪费。      b. 而且我们开辟新空间,拷贝数据,释放旧空间还会有一定的消耗。注意⚠️⚠️⚠️:     我们在申请空间的

数据结构之手撕顺序表(讲解➕源代码)

0.引言        在本章之后,就要求大家对于指针、结构体、动态开辟等相关的知识要熟练的掌握,如果有小伙伴对上面相关的知识还不是很清晰,要先弄明白再过来接着学习哦!        那进入正题,在讲解顺序表之前,我们先来介绍线性表这个数据结构。0.1线性表        线性表是n个具有相同特性的数据元素组成的有限的序列。        并且在逻辑上是一对一的,一个接着一个的。比如我们之前学过的数组,字符串等。        相同特性:同一种数据类型        有限:数据元素的个数是有限的        常见的线性表:顺序表、链表、栈、队列、字符串等。        我们在讲解数据结构的

Java代码手撕【数据结构】| 队列的实现与优化指南

一、前言队列是一种重要的数据结构,它按照“先入先出”(FIFO)的原则管理数据。本文将介绍队列的概念、应用场景,以及如何使用数组实现普通队列和环形队列。二、内容2.1概述2.1.1什么是队列?队列(Queue)是一种常见的数据结构,它是一个线性数据结构,按照先入先出(FIFO,First-In-First-Out)的原则来管理数据。注意,先入先出的原则就意味着最早进入队列的元素将最先被取出,而最后进入队列的元素将最后被取出,类似于排队等候服务的行为。队列可以使用数组或链表来实现,具体实现方式因应用需求而异。队列支持两种主要的操作,即入队(Enqueue)和出队(Dequeue)。入队:将元素添

【C++】list基本接口+手撕 list(详解迭代器)

父母就像迭代器,封装了他们的脆弱...... 手撕list目录:一、list的常用接口及其使用1.1list构造函数与增删查改1.2list特殊接口1.3list排序性能分析二、list迭代器实现(重点+难点)关于迭代器的引入知识:2.1迭代器的分类2.2 list迭代器失效问题(和vector有差异)2.3list迭代器源码模板2.4list整体基本框架三、手撕list迭代器3.1重载operator*()3.2重载++、–、!=3.3利用类模板优化四、增删查改4.1insert(参数必须加引用,担心非内置类型)和erase4.2push_back和push_front4.3  pop_ba

【JavaScript】手撕前端面试题:手写Object.create | 手写Function.call | 手写Function.bind

🖥️NodeJS专栏:Node.js从入门到精通🖥️博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)🖥️TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结)🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬👉你的一键三连是我更新的最大动力❤️!🏆分享博主自用牛客网🏆:一个非常全面的面试刷题求职网站,点击跳转🍬文章目录前言1、手写Object.create要求手撕代码2、手写Function.call要求手撕代码3、手写Function.bind要求手撕代码结语前言向大家推荐一款博主一直在用的面试刷题求职网站:牛客网牛客网不仅具

【数据结构】手撕归并排序(含非递归)

目录一,归并排序(递归)1,基本思想 2,思路实现二,归并排序(非递归)1,思路实现2,归并排序的特性总结:一,归并排序(递归)1,基本思想归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用;将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序,若将两个有序表合并成一个有序表,称为二路归并;归并排序核心步骤: 2,思路实现这个归并排序乍一看像一颗二叉树,事实也是如此,如上图所示我们需要不断的拆分直至拆成一个元素此时就是有序的,然后再合并,合并的时候不要选择原地合并(原地

英飞凌TC3xx--深度手撕HSM安全启动(一)--安全启动方式

    汽车MCU的信息安全在最近几年是越来越火,而信息安全最重要的一个功能就是系统的安全启动;        从嵌入式角度出发,安全启动最早应用在linux系统上,全称叫secureboot;它是一种逐级验证镜像,从而实现固件可信运行。以常见的uboot启动为例,通常要经过BootRom->SPL->uboot三个大阶段(其中BootRom出厂时掩膜在ROM介质中,不可更改,SPL(SecondatyProgramLoader)用于初始化C语言环境等);BootRom作为信任根,会首先验证SPL代码(这里不讨论具体算法),确认SPL无误后,加载SPL代码到DDR或者SRAM;然后由SPL对u

【C++】手撕string(string的模拟实现)

手撕string目录:一、Memberfunctions1.1constructor1.2  Copyconstructor(代码重构:传统写法和现代写法)1.3 operator=(代码重构:现代写法超级牛逼)1.4destructor二、Othermemberfunctions2.1 Iterators(在string类中,迭代器基本上就是指针)2.1.1begin()&&end()2.1.2  范围for的底层原理(鱼香肉丝,夫妻肺片)(这是编译器的活,而且是死活)2.2Capacity2.2.1size()&&capacity()2.2.2reserve(C++语法不存在原地扩容)2.

【C++图解专栏】手撕数据结构与算法,探寻算法的魅力

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343📣专栏定位:为0基础刚入门数据结构与算法的小伙伴提供详细的讲解,也欢迎大佬们一起交流~📚专栏简介:在这个专栏,我将带着大家一起用C++手撕基础的数据结构与算法,每一讲都有详细的讲解,29篇文章共400多张图,希望能够带领大家快速入门这个课程。数据结构与算法是大学计算机专业课中最重要的一门,学起来必然不轻松,所以遇到困难是非常正常的一件事。相信我,只要能够坚持下去,自己动手敲一遍一定会有不少的收获!❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪🎏唠叨唠叨