2 IamSarah

尚未进行身份认证

数字IC设计方向,三年后希望自己是一名优秀的数字IC工程师。 不忘初心,砥砺前行。

等级
博文 56
排名 4w+

低功耗设计之RTL级降低功耗

最近在看《硬件架构的艺术》这本书,本篇博文也是来自书中的内容。随着工艺的进步,低功耗设计显得越来越重要了。作为一个数字前端设计师,我们就来看看如何在RTL级别减低功耗。实质上在大规模ASIC设计中,当RTL级设计完成的时候,整个系统至少80%的功耗就已经确定。后端流程没有办法修复微架构,而微架构和RTL代码风格对于动态和静态功耗有极大的影响。下面就说说在RTL级别可以从哪几个方面降低功耗。状态...

2019-03-26 11:08:16

任意分数分频器的verilog实现

这篇博文是关于分频器最后的讲解了,主要是要实现nume/deno倍的分频。对于nume/deno倍的分频,实质上就是要在nume个输入的时钟周期里,输出deno个脉冲。因此这里需要通过简单的数学运算来保证deno个脉冲的输出。nume,deno,quot和remd满足下面的式子:nume=quot*deno+remd,从这个式子中我们可以得到quot=nume/deno,即nume和den...

2019-03-25 22:48:08

N+0.5分频器的verilog实现

上篇文章中主要讲了一下奇数分频的实现,本篇文章说明一下N+0.5分频器如何设计。本篇文章以5.5分频为例进行说明。对于N+0.5分频,没有办法实占空比为50%,因此我们实现占空比为1/(N+0.5)的分频器,即在0.5个周期实现高电平即可。先说一种设计思路:通过两个分频时钟的与操作实现。两个分频时钟的占空比均为(N+1)/(2*N+1),对于5.5分频电路来讲,其占空比为6/11,不过这两个分...

2019-03-25 17:42:00

奇数分频器的verilog实现

分频器的设计对于微电子专业的学生来说应当是必须掌握的一基本知识点,对于偶数分频器的设计来说比较简单,那么对于奇数分频器以及小数分频器的该怎么去处理呢,本篇博文主要来谈谈奇数分频器的设计,小数分频器的设计等到下篇文再写。奇数分频器的实现可以分为两大类:占空比非50%的奇数分频器的实现 占空比为50%的奇数分频器的实现对于占空比非50%的奇数分频器的实现也是非常简单,对于3分频,可实现占...

2019-03-25 12:16:48

C++中单链表的建立

链表作为动态数据结构之一,对其掌握很有必要,链表主要作用有两个:一是用来代替数组元素个数不确定的数组,二是在数据库管理中对磁盘进行存储操作。链表分为单链表和双链表,单链表的末尾结点的指针赋值为0,而双链表的头部和末尾指针的结点均赋值为0。下面主要介绍单链表的一些操作,双链表与其操作类似。对于单链表,最基本的操作有链表的建立、链表结点插入、链表结点删除和链表结点显示。链表建立:建立链表之前有如下...

2019-02-28 11:46:31

C++中抽象类的简单使用

最近在自学C++,主要是学习C++中的面向对象的编程,看了一下面向对象的的三大特性:封装性、继承性和多态性。但感觉要深刻理解还是要自己练习一下。下面提供的代码实现的是利用抽象类显示图形的周长和面积,这里的图形我只列举了圆、三角形和长方形,添加其他图形只需要继续添加shape的派生类就好。这里的父类shape是一个抽象类,提供接口,其中:getdata():用于输入图形的信息,对于圆需要输入...

2019-02-27 21:57:08

C++中文件的简单使用

     看了一下C++中关于文件的介绍,现在主要将其整理一下,并且给出使用较为简单的函数来处理相应的文件。C++中的文件主要分为两类:文本文件和二进制文件,其主要区别就是文本文件是以ASCII码的形式存储的,因此存储的时候每一个字符都要占据一个字节,所以占用内存空间比较大,但是是可读文件;而二进制文件存储的时候是将二进制码照原样输出到磁盘文件中,因此不具有可读性,但是占用空间较小。 ...

2019-02-27 17:24:46

ECC中计算倍点的两种方法

最近在看ECC的加密算法,该算法的安全性基于“求离散对数”的困难。下面主要介绍一下ECC在实现倍点过程中的算法,分为两部分:一是基于二进数的计算方法,二是基于NAF序列的计算方法。基于二进数的计算方法中,分为两种遍历方式,一是从左向右遍历,二是从右向左遍历,该算法类似模幂运算中对于其指数的处理方式。具体算法如下。ECC中计算倍乘的算法:现计算kP,k=(kt-1,kt-2,.....,k1,k0)...

2018-03-28 16:26:59

C语言中的指针学习

今天在用C语言去验证算法的时候,回头复习了一下指针的基本知识,好久没有写过C程序了,回头再看的时候发现也是学了很多东西。这些知识都很基础,下面给大家贴出来,欢迎交流。1. 指针的定义:由能够存放一个地址的一组存储单元构成。对于&用于取一个对象的地址,这里的对象指的是变量和数组元素,不能对表达式、常量以及寄存器变量进行操作。而对于一元运算符号*,为间接寻址或者说间接引用运算符,当它应用于指针...

2018-03-08 16:42:39

蒙哥马利算法理解

最近在看模乘器的设计,谈到模乘器蒙哥马利的算法肯定是绕不开的。但是刚接触只看PeterL.Montgomery写的那篇文章的话,很有可能看起来很是费劲。我自己在看了网上的一些讲述蒙哥马利算法的资料之后总结了一下自己对蒙哥马利算法的理解,因此在此分享出来。另外,我觉得要提醒大家的是在看该算法之前可以大概地看一下“求模”相关的运算,这样理解起来就可能会更快一点。下面是我自己做的手工笔记,以图片的形...

2018-03-07 17:16:47

Mongoemery算法的FIPS 实现

最近在看模乘器的设计,然后了解到了FIPS这个算法,以下是做的一点笔记,等到把这个算法完全实现出来,我再来认真写这篇博文现在就先把最近做的逼近上传上来。还有,在看算法的过程中我get了一个科研技巧,那就是当你看代码完全没有头绪的时候,就把自己当成编译器,然后简单的把这个算法编译一遍,这样操作保准能看理解个大概了,再仔细推敲一下绝对就能理解算法了。总之,科研啊就是一个仔细琢磨的过程。...

2018-03-06 20:16:39

python学习之文件与文件系统(一)

(一)文件操作基础1.open()函数:该函数是内建的文件打开函数。文件实际上也是python的一种数据类型。当使用python的内建函数open打开一个文件后,就返回一个文件对象。函数原型如下:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)

2017-09-26 21:32:52

python进阶

1、函数与命名空间:python中函数的命名空间始终是定义该函数的命名空间。因此函数中引用的全局变量始终是定义该函数模块中的全局变量。2.闭包及其应用:闭包指的是python语言中将组成函数的语句和这些语句的执行环境打包到一起所得到的对象。当使用嵌套函数时,闭包将捕获内部函数执行所需的整个环境。此外,嵌套的函数可以使用被嵌套函数中的任何变量,就像普通函数引用全局变量一样,而不需要参数引入,示例

2017-09-24 22:11:03

python学习之迭代器、生成器和装饰器

1.迭代器表面上看是一个数据流对象或者容器,当使用其中的数据时,每次从数据流中取出一个数据,直到数据被取完,而且数据不会被重复使用。从代码的角度来看,迭代器是实现了迭代器协议方法的对象和类。迭代器协议方法主要是两个:__iter__()#该方法返回对象本身,它是for语句使用迭代器的要求__next__()#方法用于返回容器中下一个元素或者数据。当容器中的数据用尽时,应该引发StopIte

2017-09-24 17:37:38

Python学习之复杂程序组织

python学习笔记之复杂程序组织1.关于模块导入import模块名import模块名as新名字#对导入的模块名重新命名from模块名import函数名2.导入自己编写的模块1)自己编写的模块跟当前的模块在同一目录下的时候,直接导入就好。2)自己编写的模块跟当前的模块不在同一目录下的时候,需要利用sys库中的path.append函数将需要导入模块的路径添

2017-09-24 14:02:40

matlab基础知识(一)

1.matlab中的函数定义:首先建立函数文件:file/new/fuction函数的建立方法: function[输出变量]=函数名称(输入变量) %注释 %函数体 示例如下: function[s]=eg_sum(n) s=0; fori=1:n s=s+i; end 2.clearall;%清除工作空间closeall;%清除所有

2017-09-10 23:12:08

python学习之基础知识(三)

1,字典数据类型:像列表一样,“字典”是很多值的集合。但不像列表的下标,字典的索引可以使用许多不同的数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值被称为“键-值”对。在代码中,字典的输入使拥花括号{}。示例如下:mycat={'size':'fat','color':'grey','disposition':'loud'}这句代码将一个字典赋值给mycat变量。这个字典的键值

2017-09-08 23:21:21

python学习之基础知识(二)

1列表数据类型:“列表”是一个值,它包含多个字构成的序列。列表中的值也称为表项,表项用逗号分开,用下标可以取得列表中的单个值。列表也可以包含其他列表值。这些列表的列表中的值,可以通过多重下标来访问,eg:spam[0][4].列表类型还可以使用负数下标,-1代表的是列表中的最后一个下标,-2表示的是倒数第二个下标。列表中也可以通过切片取得子列表,eg:spam[1:4].使用len()函数可以计算

2017-09-07 22:06:55

python学习之基础知识(一)

python的基础知识1.注释:单行注释使用#,多行注释使用'''。2.print()函数:将括号内的字符串或者整型值显示在屏幕上面,print()函数中可以通过end和sep来设置在参数末尾打印什么,以及在参数之间打印什么来隔开他们。3.input()函数:等待用户在键盘上面输入一些文本,并按下回车键。eg:myname=input().这个函数的值是一个字符串,将字符串的值赋值给变

2017-09-06 23:20:42

集成电路中低功耗设计(二)

这篇文章主要介绍一下低功耗设计中常用的技术。由上篇文章可知,设计中的功耗可以分为下表给出了翻转功耗在一些示例电路中所占的比例。 在不同电路中,各类功耗所占的比例是不同的,因此进行低功耗设计的重点是不同的。在运算电路中,开关功耗占绝大部分,因此,此类电路的低功耗设计要致力于减小开关功耗;对于DRAM存储器,泄漏功耗占大部分,因此要将重点放在减小泄漏功耗上面。针对不同的功耗类型,具有不同的

2017-08-10 11:02:30
奖章
    暂无奖章